import styles from "./styles.module.scss"; import Title from "@/components/Title"; import { useDispatch, useSelector } from "react-redux"; import { actions, selectors } from "@/store"; import { Gender } from "@/data"; import PrivacyPolicy from "@/components/pages/ABDesign/v1/components/PrivacyPolicy"; // import Toast from "@/components/pages/ABDesign/v1/components/Toast"; import { useTranslations } from "@/hooks/translations"; import { ELocalesPlacement } from "@/locales"; import { useCallback, useEffect, useState } from "react"; import { sleep } from "@/services/date"; import metricService from "@/services/metric/metricService"; import { genders } from "@/components/pages/ABDesign/v1/data/genders"; import { useNavigate } from "react-router-dom"; import routes from "@/routes"; import { usePreloadImages } from "@/hooks/preload/images"; import { ELottieKeys, useLottie } from "@/hooks/lottie/useLottie"; import { useSession } from "@/hooks/session/useSession"; import { EGender, ESourceAuthorization } from "@/api/resources/User"; import AlreadyHaveAccount from "@/components/ui/AlreadyHaveAccount"; import Answer from "../../components/Answer"; function GenderPage() { const { translate } = useTranslations(ELocalesPlacement.CompatibilityV2); const dispatch = useDispatch(); const navigate = useNavigate(); const { createSession, updateSession } = useSession(); const { checked: privacyPolicyChecked } = useSelector( selectors.selectPrivacyPolicy ); const { gender } = useSelector(selectors.selectQuestionnaire); const [isSelected, setIsSelected] = useState(false); usePreloadImages(["/v1/palmistry/hand-with-eye.svg"]); useLottie({ preloadKey: ELottieKeys.handSymbols, }); const localGenders = genders.map((gender) => ({ id: gender.id, title: translate(gender.id, undefined, ELocalesPlacement.V1), })); const selectGender = (_gender: Gender | null) => { dispatch(actions.privacyPolicy.updateChecked(true)); setIsSelected(true); dispatch(actions.questionnaire.update({ gender: _gender?.id })); }; const handleNext = useCallback(async () => { if (!gender) return; dispatch(actions.privacyPolicy.updateChecked(true)); await sleep(1000); metricService.userParams({ gender: genders.find((g) => g.id === gender)?.name, }); const session = await createSession( ESourceAuthorization["aura.compatibility.v2"] ); if (session?.sessionId?.length) { updateSession( { profile: { gender: EGender[gender as keyof typeof EGender], }, }, ESourceAuthorization["aura.compatibility.v2"], session.sessionId ); metricService.userParams({ sessionId: session.sessionId, }); } return navigate(routes.client.compatibilityV2Birthdate()); // eslint-disable-next-line react-hooks/exhaustive-deps }, [gender, navigate]); useEffect(() => { if (privacyPolicyChecked && gender && isSelected) { handleNext(); } }, [gender, handleNext, isSelected, privacyPolicyChecked]); return ( <>
{translate("/gender.description", {
br:
,
})}