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

45 lines
1.0 KiB
TypeScript

export function useNewsletterSignup() {
const { t } = useI18n()
const isLoading = ref(false)
const isSuccess = ref(false)
const error = ref<string | null>(null)
const submitEmail = async (_email: string) => {
isLoading.value = true
error.value = null
try {
// Simulate API call - replace with actual newsletter service integration
await new Promise((resolve) => setTimeout(resolve, 1500))
// TODO: Integrate with external newsletter service (e.g., Mailchimp, ConvertKit, etc.)
// Example:
// await $fetch('/api/newsletter/subscribe', {
// method: 'POST',
// body: { email }
// })
isSuccess.value = true
} catch (e: unknown) {
error.value = e instanceof Error ? e.message : t('errors.generic')
throw e
} finally {
isLoading.value = false
}
}
const reset = () => {
isLoading.value = false
isSuccess.value = false
error.value = null
}
return {
isLoading,
isSuccess,
error,
submitEmail,
reset
}
}