import { useTranslation } from "react-i18next"; import MainButton from "../MainButton"; import Title from "../Title"; import styles from "./styles.module.css"; import { useCallback, useState } from "react"; import NameInput from "./nameInput"; import { DatePicker } from "../DateTimePicker"; import { IDate, getDateAsString } from "@/services/date"; import { AICompatCategories, useApi, useApiCall } from "@/api"; import { useNavigate } from "react-router-dom"; import routes from "@/routes"; import { useDispatch } from "react-redux"; import { actions } from "@/store"; function CompatibilityPage(): JSX.Element { const { t, i18n } = useTranslation(); const navigate = useNavigate() const dispatch = useDispatch() const [isDisabled, setIsDisabled] = useState(true); const [isDisabledName, setIsDisabledName] = useState(true); const [isDisabledDate, setIsDisabledDate] = useState(true); const [name, setName] = useState(''); const [date, setDate] = useState(''); const [compatCategory, setCompatCategory] = useState(1); const handleNext = () => { dispatch(actions.compatibility.update({ rightUser: { name, birthDate: date }, categoryId: compatCategory })) navigate(routes.client.compatibilityResult()) }; const api = useApi() const locale = i18n.language const loadData = useCallback(() => { return api.getAiCompatCategories({ locale }) .then((resp: AICompatCategories.Response) => resp.compat_categories) }, [api, locale]) const { data } = useApiCall(loadData) const handleValidName = (name: string) => { setIsDisabledName(!name.length); setName(name) checkAllDisabled() } const handleValidDate = (date: IDate | string) => { setIsDisabledDate(date === ''); setDate(date) checkAllDisabled() } const checkAllDisabled = () => { setIsDisabled(isDisabledName || isDisabledDate); } const changeCompatCategory = (event: React.ChangeEvent) => { setCompatCategory(parseInt(event.target.value)) } return (
{t("compatibility")}
{t("iAm")} +
setIsDisabledName(true)} />
setIsDisabledDate(true)} />
{data && data.length && (
{ data.map((item, index) => (
)) }
)} {t("check")}
); } export default CompatibilityPage;