import { Box, Button, Paper, Stack, Step, StepLabel, Stepper, Table, TableBody, TableCell, TableRow, Typography, } from "@mui/material"; import { HasChildren } from "@types"; import { emailRequest } from "api/app/receipt-issuing-order"; import useAPICall from "hooks/useAPICall"; import useApp from "hooks/useApp"; import useSnackbarCustom from "hooks/useSnackbarCustom"; import { useMemo, useState } from "react"; import useInputEmailStep from "./hooks/useInputEmailStep"; type TableRowCustomProps = { title: string; value: string; }; const TableRowCustom = ({ title, value }: TableRowCustomProps) => { return ( {title} {value} ); }; type SectionProps = { title: string; subtitle?: string; } & HasChildren; const Section = ({ title, subtitle, children }: SectionProps) => { return ( {title} {subtitle && {subtitle}} {children} ); }; export default function EmailOrder() { const { tokenResult, token, navigateToHome, fetch, receiptIssuingOrder: order, } = useApp(); const { error } = useSnackbarCustom(); const [mode, setMode] = useState<"input" | "confirm" | "done">("input"); const input = useInputEmailStep({ onNext: () => { setMode("confirm"); }, onPrev: () => { navigateToHome(); }, }); const requestEmailAPI = useAPICall({ apiMethod: emailRequest, backDrop: true, onSuccess: () => { fetch(); setMode("done"); }, onFailed: () => { error("登録失敗"); }, }); const currentStep = useMemo(() => { if (mode === "input") return 0; if (mode === "confirm") return 1; if (mode === "done") return 2; }, [mode]); const handleConfirm = () => { if (!order) return; requestEmailAPI.callAPI({ access_token: token, timestamp: order.updated_at, ...input.values(), }); }; if (tokenResult !== "ok") { return null; } return ( <> 領収証Email送付依頼
Email送信先入力 確認 完了 {mode === "input" && input.element} {mode === "confirm" && ( Email送信先情報確認
)} {mode === "done" && ( 受付いたしました。 )}
); }