in dotcom-rendering/src/components/marketing/hooks/useContributionsReminderSignup.ts [26:67]
export function useContributionsReminderSignup(
reminderPeriod: string,
reminderPlatform: ReminderPlatform,
reminderComponent: ReminderComponent,
reminderStage: ReminderStage,
reminderOption?: string,
): ContributionsReminderSignup {
const [reminderStatus, setReminderStatus] = useState<ReminderStatus>(
ReminderStatus.Editing,
);
const createReminder = (email: string): void => {
const reminderSignupData: OneOffSignupRequest = {
email,
reminderPeriod,
reminderPlatform,
reminderComponent,
reminderStage,
reminderOption,
};
setReminderStatus(ReminderStatus.Submitting);
fetch(CREATE_ONE_OFF_REMINDER_ENDPOINT, {
body: JSON.stringify(reminderSignupData),
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
})
.then((response) => {
if (!response.ok) {
setReminderStatus(ReminderStatus.Error);
} else {
setReminderStatus(ReminderStatus.Completed);
addContributionReminderCookie(reminderPeriod);
}
})
.catch(() => setReminderStatus(ReminderStatus.Error));
};
return { reminderStatus, createReminder };
}