Files
gremiumhub/landing/app/composables/useContactForm.ts

47 lines
908 B
TypeScript

export interface ContactFormData {
name: string
email: string
message: string
}
export function useContactForm() {
const { t } = useI18n()
const isLoading = ref(false)
const isSuccess = ref(false)
const error = ref<string | null>(null)
const submitForm = async (data: ContactFormData) => {
isLoading.value = true
error.value = null
try {
await $fetch('/api/contact/send', {
method: 'POST',
body: data
})
isSuccess.value = true
} catch (e: unknown) {
const fetchError = e as { statusMessage?: string }
error.value = fetchError.statusMessage || t('errors.generic')
throw e
} finally {
isLoading.value = false
}
}
const reset = () => {
isLoading.value = false
isSuccess.value = false
error.value = null
}
return {
isLoading,
isSuccess,
error,
submitForm,
reset
}
}