import dayjs from "dayjs"; import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { memoService } from "../services"; import Icon from "./Icon"; import { generateDialog } from "./Dialog"; import toastHelper from "./Toast"; import "../less/change-memo-created-ts-dialog.less"; interface Props extends DialogProps { memoId: MemoId; } const ChangeMemoCreatedTsDialog: React.FC = (props: Props) => { const { t } = useTranslation(); const { destroy, memoId } = props; const [createdAt, setCreatedAt] = useState(""); const maxDatetimeValue = dayjs().format("YYYY-MM-DDTHH:mm"); useEffect(() => { const memo = memoService.getMemoById(memoId); if (memo) { const datetime = dayjs(memo.createdTs).format("YYYY-MM-DDTHH:mm"); setCreatedAt(datetime); } else { toastHelper.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 = dayjs().unix(); const createdTs = dayjs(createdAt).unix(); if (createdTs > nowTs) { toastHelper.error(t("message.invalid-created-datetime")); return; } try { await memoService.patchMemo({ id: memoId, createdTs, }); toastHelper.info(t("message.memo-updated-datetime")); handleCloseBtnClick(); } catch (error: any) { console.error(error); toastHelper.error(error.response.data.message); } }; return ( <>

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

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