import React from 'react' import {useLingui} from '@lingui/react' import {Trans, msg} from '@lingui/macro' import {View} from 'react-native' import * as Dialog from '#/components/Dialog' import {Text} from '../Typography' import {DateInput} from '#/view/com/util/forms/DateInput' import {logger} from '#/logger' import { usePreferencesQuery, usePreferencesSetBirthDateMutation, UsePreferencesQueryResponse, } from '#/state/queries/preferences' import {Button, ButtonIcon, ButtonText} from '../Button' import {atoms as a, useTheme} from '#/alf' import {ErrorMessage} from '#/view/com/util/error/ErrorMessage' import {cleanError} from '#/lib/strings/errors' import {isIOS, isWeb} from '#/platform/detection' import {Loader} from '#/components/Loader' export function BirthDateSettingsDialog({ control, }: { control: Dialog.DialogControlProps }) { const t = useTheme() const {_} = useLingui() const {isLoading, error, data: preferences} = usePreferencesQuery() return ( My Birthday This information is not shared with other users. {isLoading ? ( ) : error || !preferences ? ( ) : ( )} ) } function BirthdayInner({ control, preferences, }: { control: Dialog.DialogControlProps preferences: UsePreferencesQueryResponse }) { const {_} = useLingui() const [date, setDate] = React.useState(preferences.birthDate || new Date()) const { isPending, isError, error, mutateAsync: setBirthDate, } = usePreferencesSetBirthDateMutation() const hasChanged = date !== preferences.birthDate const onSave = React.useCallback(async () => { try { // skip if date is the same if (hasChanged) { await setBirthDate({birthDate: date}) } control.close() } catch (e: any) { logger.error(`setBirthDate failed`, {message: e.message}) } }, [date, setBirthDate, control, hasChanged]) return ( {isError ? ( ) : undefined} ) }