in frontend/src/hooks/api/realPhone.ts [83:148]
export function useRealPhonesData(): SWRResponse<RealPhoneData, unknown> & {
requestPhoneVerification: PhoneNumberRequestVerificationFn;
submitPhoneVerification: PhoneNumberSubmitVerificationFn;
requestPhoneRemoval: RequestPhoneRemovalFn;
resendWelcomeSMS: ResendWelcomeSMSFn;
} {
const realphone: SWRResponse<RealPhoneData, unknown> =
useApiV1("/realphone/");
/**
* Submit the one-time password given from the requestPhoneVerification function * to confirm/register a real phone number
*/
const submitPhoneVerification: PhoneNumberSubmitVerificationFn = async (
id,
obj,
) => {
const response = await apiFetch(`/realphone/${id}/`, {
method: "PATCH",
body: JSON.stringify(obj),
});
realphone.mutate();
return response;
};
/**
* Request a one-time password to validate a real phone number.
*/
const requestPhoneVerification: PhoneNumberRequestVerificationFn = async (
phoneNumber,
) => {
// TODO: Validate number as E.164
// https://blog.kevinchisholm.com/javascript/javascript-e164-phone-number-validation/
const response = await apiFetch("/realphone/", {
method: "POST",
body: JSON.stringify({ number: phoneNumber }),
});
realphone.mutate();
return response;
};
// Remove real phone record by id.
const requestPhoneRemoval: RequestPhoneRemovalFn = async (id: number) => {
const response = await apiFetch(`/realphone/${id}/`, {
method: "DELETE",
});
realphone.mutate();
return response;
};
const resendWelcomeSMS: ResendWelcomeSMSFn = async () => {
const response = await apiFetch("/realphone/resend_welcome_sms", {
method: "POST",
});
realphone.mutate();
return response;
};
return {
...realphone,
requestPhoneVerification,
submitPhoneVerification,
requestPhoneRemoval,
resendWelcomeSMS: resendWelcomeSMS,
};
}