import { date as formatDate } from '@planningcenter/datetime-fmt' import React, { useState } from 'react' import { StyleSheet, View, ScrollView } from 'react-native' import { Heading } from '../../components' import { Avatar } from '../../components/display/avatar' import { Banner } from '../../components/display/banner' import { Button } from '../../components/display/button' import { Icon } from '../../components/display/icon' import { Text } from '../../components/display/text' import { useCurrentPerson, useTheme, useSubmitAgeCheck, useOrganization } from '../../hooks' import { platformFontWeightBold } from '../../utils/styles' import { AgeCheckSelectBirthdateModal } from './components/age_check_select_birthdate_modal' function calculateAge(birthdate: Date) { const today = new Date() const age = today.getUTCFullYear() - birthdate.getUTCFullYear() const hasHadBirthdayThisYear = today.getUTCMonth() > birthdate.getUTCMonth() || (today.getUTCMonth() === birthdate.getUTCMonth() && today.getUTCDate() >= birthdate.getUTCDate()) return hasHadBirthdayThisYear ? age : age - 1 } export function AgeCheckRequiredScreen() { const person = useCurrentPerson() const { data: organization } = useOrganization() const [birthdate, setBirthdate] = useState(null) const [draftBirthdate, setDraftBirthdate] = useState(null) const [isBirthdateModalOpen, setBirthdateModalOpen] = useState(false) const { submitAgeCheck, isPending, isSuccess } = useSubmitAgeCheck() const styles = useStyles() const birthdateStamp = birthdate ? formatDate(birthdate, { style: 'standard', year: true, timeZone: 'UTC' }) : 'Missing' const age = birthdate ? calculateAge(birthdate) : null const confirmationText = birthdate !== null ? `Your birthdate is ${birthdateStamp} and you are ${age} years old. Is that correct?` : '' const openBirthdateModal = () => { setDraftBirthdate(birthdate || new Date()) setBirthdateModalOpen(true) } const closeBirthdateModal = () => { setBirthdateModalOpen(false) } const handleSubmitAgeConfirmation = () => { if (!birthdate) return submitAgeCheck(birthdate) } return ( <> Your age is required to use chat Privacy laws require us to verify your age before you can use messaging features. This helps us protect minors who use chat. My profile {person.name} Birthdate:{' '} {birthdateStamp} {birthdate && (