export function useContributionsReminderSignup()

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 };
}