import { Box, Button, Stack, Typography } from "@mui/material"; import { HasChildren } from "@types"; import { uploadOtherLicenseImages, uploadStudentLicenseImages, } from "api/season-ticket-contract"; import RequireChip from "components/chip/RequireChip"; import { FormProvider } from "components/hook-form"; import { RHFUpload } from "components/hook-form/RHFUpload"; import StackRow from "components/stack/StackRow"; import { useSeasonTicketContractContext } from "contexts/dashboard/SeasonTicketContractContext"; import useAPICall from "hooks/useAPICall"; import useAuth from "hooks/useAuth"; import useDashboard from "hooks/useDashBoard"; import useNavigateCustom from "hooks/useNavigateCustom"; import useSnackbarCustom from "hooks/useSnackbarCustom"; import { PageID, TabID } from "pages"; import { useEffect, useMemo, useState } from "react"; import { useForm } from "react-hook-form"; import { getPath } from "routes/path"; type AreaBoxProps = { label: string; require?: boolean; } & HasChildren; function AreaBox({ label, children, require }: AreaBoxProps) { return ( 〇{label} {children} ); } type FormProps = { file1: File[]; file2: File[]; file3: File[]; }; export default function OtherLicenseImagesUpload() { const { setHeaderTitle, setTabs } = useDashboard( PageID.DASHBOARD_USER_OTHER_LICENSE_IMAGES_UPLOAD, TabID.NONE ); const { navigateWhenChanged, navigate } = useNavigateCustom(); const { selectedseasonTicketContract, initialized } = useSeasonTicketContractContext(); const [done, setDone] = useState(false); const { error } = useSnackbarCustom(); const form = useForm({ defaultValues: { file1: [], file2: [], file3: [], }, }); const { callAPI: callUploadOtherLicenseImages } = useAPICall({ apiMethod: uploadOtherLicenseImages, backDrop: true, onSuccess: () => { setDone(true); }, onFailed: () => { error("失敗しました"); }, }); const file1 = form.watch("file1"); const file2 = form.watch("file2"); const file3 = form.watch("file3"); const canSend = useMemo(() => { return file1.length !== 0; }, [file1]); const handleSubmit = (data: FormProps) => { if (!selectedseasonTicketContract) return; const files = [...file1, ...file2, ...file3]; callUploadOtherLicenseImages({ images: files, season_ticket_contract_record_no: selectedseasonTicketContract.season_ticekt_contract_record_no ?? "", }); }; useEffect(() => { if (file1.length === 0) { if (file2.length !== 0) { form.setValue("file2", []); } if (file3.length !== 0) { form.setValue("file3", []); } } if (file2.length === 0) { if (file3.length !== 0) { form.setValue("file3", []); } } }, [file1, file2, file3]); useEffect(() => { if (initialized && !selectedseasonTicketContract) { navigateWhenChanged( getPath(PageID.DASHBOARD_SEASON_TICKET_CONTRACT_LIST) ); } }, [initialized, selectedseasonTicketContract]); useEffect(() => { setHeaderTitle("障害者手帳アップロード"); setTabs(null); }, []); if (!selectedseasonTicketContract) { return null; } if (done) { return ( アップロードしました ); } return ( {selectedseasonTicketContract.student_license_images_upload_datetime ?? "-"} {file1.length !== 0 && ( )} {file2.length !== 0 && ( )} ); }