import { Tooltip } from "@mui/joy"; import { ClientError } from "nice-grpc-web"; import { useEffect, useState } from "react"; import toast from "react-hot-toast"; import { showCommonDialog } from "@/components/Dialog/CommonDialog"; import Empty from "@/components/Empty"; import Icon from "@/components/Icon"; import MemoContent from "@/components/MemoContent"; import MobileHeader from "@/components/MobileHeader"; import { memoServiceClient } from "@/grpcweb"; import { getDateTimeString } from "@/helpers/datetime"; import useCurrentUser from "@/hooks/useCurrentUser"; import useLoading from "@/hooks/useLoading"; import { useMemoStore } from "@/store/v1"; import { RowStatus } from "@/types/proto/api/v2/common"; import { Memo } from "@/types/proto/api/v2/memo_service"; import { useTranslate } from "@/utils/i18n"; const Archived = () => { const t = useTranslate(); const loadingState = useLoading(); const user = useCurrentUser(); const memoStore = useMemoStore(); const [archivedMemos, setArchivedMemos] = useState([]); useEffect(() => { (async () => { try { const filters = [`creator == "${user.name}"`, "row_status == 'ARCHIVED'"]; const { memos } = await memoServiceClient.listMemos({ filter: filters.join(" && "), }); setArchivedMemos(memos); } catch (error: unknown) { toast.error((error as ClientError).details); } loadingState.setFinish(); })(); }, []); const handleDeleteMemoClick = async (memo: Memo) => { showCommonDialog({ title: t("memo.delete-memo"), content: t("memo.delete-confirm"), style: "danger", dialogName: "delete-memo-dialog", onConfirm: async () => { await memoStore.deleteMemo(memo.id); setArchivedMemos((prev) => prev.filter((m) => m.id !== memo.id)); }, }); }; const handleRestoreMemoClick = async (memo: Memo) => { try { await memoStore.updateMemo( { id: memo.id, rowStatus: RowStatus.ACTIVE, }, ["row_status"] ); setArchivedMemos((prev) => prev.filter((m) => m.id !== memo.id)); toast(t("message.restored-successfully")); } catch (error: unknown) { console.error(error); toast.error((error as ClientError).details); } }; return (
{loadingState.isLoading ? (

{t("memo.fetching-data")}

) : archivedMemos.length === 0 ? (

{t("message.no-data")}

) : (
{archivedMemos.map((memo) => (
{getDateTimeString(memo.updateTime)}
))}
)}
); }; export default Archived;