import { useEffect, useState } from "react"; import Empty from "@/components/Empty"; import HomeSidebar from "@/components/HomeSidebar"; import HomeSidebarDrawer from "@/components/HomeSidebarDrawer"; import MemoEditorV1 from "@/components/MemoEditorV1"; import MemoFilter from "@/components/MemoFilter"; import MemoViewV1 from "@/components/MemoViewV1"; import MobileHeader from "@/components/MobileHeader"; import { DEFAULT_MEMO_LIMIT } from "@/helpers/consts"; import useCurrentUser from "@/hooks/useCurrentUser"; import useResponsiveWidth from "@/hooks/useResponsiveWidth"; import { useFilterStore } from "@/store/module"; import { useMemoV1Store } from "@/store/v1"; import { Memo } from "@/types/proto/api/v2/memo_service"; import { useTranslate } from "@/utils/i18n"; const Home = () => { const t = useTranslate(); const { md } = useResponsiveWidth(); const user = useCurrentUser(); const filterStore = useFilterStore(); const memoStore = useMemoV1Store(); const [memos, setMemos] = useState([]); const [isComplete, setIsComplete] = useState(false); const [isRequesting, setIsRequesting] = useState(false); const { tag: tagQuery, text: textQuery } = filterStore.state; useEffect(() => { fetchMemos(); }, [tagQuery, textQuery]); const fetchMemos = async () => { const filters = [`creator == "${user.name}"`, `row_status == "NORMAL"`]; if (tagQuery) filters.push(`tags == "${tagQuery}"`); if (textQuery) filters.push(`content_search == "${textQuery}"`); setIsRequesting(true); const data = await memoStore.fetchMemos({ limit: DEFAULT_MEMO_LIMIT, offset: memos.length, filter: filters.join(" && "), }); setIsRequesting(false); setMemos([...memos, ...data]); setIsComplete(data.length < DEFAULT_MEMO_LIMIT); }; const handleMemoCreated = async (memoId: number) => { const memo = await memoStore.getOrFetchMemoById(memoId); setMemos([memo, ...memos]); }; return (
{!md && }
{memos.map((memo) => ( ))} {isRequesting && (

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

)} {isComplete ? ( memos.length === 0 && (

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

) ) : (
{t("memo.fetch-more")}
)}
{md && (
)}
); }; export default Home;