import { getNormalizedTimeString, getUnixTime } from "@/helpers/datetime"; import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; import { useTranslate } from "@/utils/i18n"; import { useMemoStore } from "@/store/module"; import Icon from "./Icon"; import { generateDialog } from "./Dialog"; interface Props extends DialogProps { memoId: MemoId; } const ChangeMemoCreatedTsDialog: React.FC = (props: Props) => { const t = useTranslate(); const { destroy, memoId } = props; const memoStore = useMemoStore(); const [createdAt, setCreatedAt] = useState(""); const maxDatetimeValue = getNormalizedTimeString(); useEffect(() => { memoStore.getMemoById(memoId).then((memo) => { if (memo) { const datetime = getNormalizedTimeString(memo.createdTs); setCreatedAt(datetime); } else { toast.error(t("message.memo-not-found")); destroy(); } }); }, []); const handleCloseBtnClick = () => { destroy(); }; const handleDatetimeInputChange = (e: React.ChangeEvent) => { const datetime = e.target.value as string; setCreatedAt(datetime); }; const handleSaveBtnClick = async () => { const nowTs = getUnixTime(); const createdTs = getUnixTime(createdAt); if (createdTs > nowTs) { toast.error(t("message.invalid-created-datetime")); return; } try { await memoStore.patchMemo({ id: memoId, createdTs, }); toast.success(t("message.memo-updated-datetime")); handleCloseBtnClick(); } catch (error: any) { console.error(error); toast.error(error.response.data.message); } }; return ( <>

{t("message.change-memo-created-time")}

{t("message.change-memo-created-time-warning-1")}

{t("message.change-memo-created-time-warning-2")}

{t("common.cancel")} {t("common.save")}
); }; function showChangeMemoCreatedTsDialog(memoId: MemoId) { generateDialog( { className: "change-memo-created-ts-dialog", dialogName: "change-memo-created-ts-dialog", }, ChangeMemoCreatedTsDialog, { memoId, } ); } export default showChangeMemoCreatedTsDialog;