import { useMutation, useQueryClient } from '@tanstack/react-query' import { Alert } from 'react-native' import { ApiResource } from '../types/api_primitives' import { Haptic } from '../utils/native_adapters' import { useApiClient } from './use_api_client' import { currentPersonQueryKey } from './use_current_person' interface AgeCheckResource { type: 'AgeCheck' id: string stated_date: string status: 'passed' | 'failed' } export function useSubmitAgeCheck() { const apiClient = useApiClient() const queryClient = useQueryClient() const { mutateAsync: submitAgeCheck, ...mutation } = useMutation({ mutationKey: ['submitAgeCheck'], mutationFn: (date: Date) => apiClient.people.post>({ url: '/me/age_checks', data: { fields: { AgeCheck: 'stated_date,status' }, data: { type: 'AgeCheck', attributes: { stated_date: date.toISOString(), }, }, }, }), onSuccess: (response: ApiResource) => { queryClient.invalidateQueries({ queryKey: currentPersonQueryKey }) if (response.data.status === 'passed') { Haptic.notificationSuccess() Alert.alert('Profile updated', `Your birthdate has been updated.`) } }, onError: () => { Haptic.notificationError() Alert.alert('Oops', `We were unable to update your birthdate. Please try again.`) }, }) return { submitAgeCheck, ...mutation } }