44 lines
1.0 KiB
TypeScript
44 lines
1.0 KiB
TypeScript
export function useNewsletterSignup() {
|
|
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 : 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.'
|
|
throw e
|
|
} finally {
|
|
isLoading.value = false
|
|
}
|
|
}
|
|
|
|
const reset = () => {
|
|
isLoading.value = false
|
|
isSuccess.value = false
|
|
error.value = null
|
|
}
|
|
|
|
return {
|
|
isLoading,
|
|
isSuccess,
|
|
error,
|
|
submitEmail,
|
|
reset
|
|
}
|
|
}
|