import Title from "@/components/Title"; import styles from "./styles.module.scss"; import { DatePicker } from "@/components/DateTimePicker"; import { useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import { actions, selectors } from "@/store"; import Button from "../../components/Button"; import metricService from "@/services/metric/metricService"; import routes, { compatibilityV2Prefix } from "@/routes"; import { useNavigate } from "react-router-dom"; import { useTranslations } from "@/hooks/translations"; import { ELocalesPlacement } from "@/locales"; import { useSession } from "@/hooks/session/useSession"; import { ESourceAuthorization } from "@/api/resources/User"; import { usePreloadImages } from "@/hooks/preload/images"; import { getZodiacSignByDate, ZODIACS } from "@/services/zodiac-sign"; function Birthdate() { const { translate } = useTranslations(ELocalesPlacement.CompatibilityV2); const { updateSession } = useSession(); const navigate = useNavigate(); const dispatch = useDispatch(); const birthdateFromStore = useSelector(selectors.selectBirthdate); const [birthdate, setBirthdate] = useState(birthdateFromStore); const [isDisabled, setIsDisabled] = useState(true); const { gender } = useSelector(selectors.selectQuestionnaire); const zodiacSign = getZodiacSignByDate(birthdate); usePreloadImages( !!zodiacSign?.length ? [ `/zodiac-signs/${gender?.toLowerCase()}/${zodiacSign?.toLowerCase()}.svg` ] : ZODIACS.map( (zodiac) => `/zodiac-signs/${gender?.toLowerCase()}/${zodiac?.toLowerCase()}.svg` ) ); const handleValid = (_birthdate: string) => { setBirthdate(_birthdate); setIsDisabled(_birthdate === ""); }; const getAge = () => { const today = new Date(); const birthDate = new Date(birthdate); let age = today?.getFullYear() - birthDate?.getFullYear(); const m = today?.getMonth() - birthDate?.getMonth(); if (m < 0 || (m === 0 && today?.getDate() < birthDate?.getDate())) { age--; } return age; }; const handleNext = () => { const age = getAge(); metricService.userParams({ age, }); updateSession( { profile: { birthdate: `${birthdate} 00:00`, }, }, ESourceAuthorization["aura.compatibility.v2"] ); dispatch(actions.form.addDate(birthdate)); dispatch(actions.questionnaire.update({ birthdate })); navigate(routes.client.compatibilityV2PalmsInformation()); }; return (
{translate("/birthdate.text")}