import classNames from "classnames"; import { useEffect, useState } from "react"; import Empty from "@/components/Empty"; import HomeSidebar from "@/components/HomeSidebar"; import HomeSidebarDrawer from "@/components/HomeSidebarDrawer"; import MemoEditor from "@/components/MemoEditor"; import MemoFilter from "@/components/MemoFilter"; import MemoView from "@/components/MemoView"; import MobileHeader from "@/components/MobileHeader"; import { DEFAULT_MEMO_LIMIT } from "@/helpers/consts"; import { getTimeStampByDate } from "@/helpers/datetime"; import useCurrentUser from "@/hooks/useCurrentUser"; import useResponsiveWidth from "@/hooks/useResponsiveWidth"; import { useFilterStore } from "@/store/module"; import { useMemoList, useMemoStore } from "@/store/v1"; import { useTranslate } from "@/utils/i18n"; const Home = () => { const t = useTranslate(); const { md } = useResponsiveWidth(); const user = useCurrentUser(); const filterStore = useFilterStore(); const memoStore = useMemoStore(); const memoList = useMemoList(); const [isRequesting, setIsRequesting] = useState(true); const [isComplete, setIsComplete] = useState(false); const { tag: tagQuery, text: textQuery } = filterStore.state; const sortedMemos = memoList.value .sort((a, b) => getTimeStampByDate(b.displayTime) - getTimeStampByDate(a.displayTime)) .sort((a, b) => Number(b.pinned) - Number(a.pinned)); useEffect(() => { memoList.reset(); fetchMemos(); }, [tagQuery, textQuery]); const fetchMemos = async () => { const filters = [`creator == "${user.name}"`, `row_status == "NORMAL"`, `order_by_pinned == true`]; const contentSearch: string[] = []; if (tagQuery) { contentSearch.push(`"#${tagQuery}"`); } if (textQuery) { contentSearch.push(`"${textQuery}"`); } if (contentSearch.length > 0) { filters.push(`content_search == [${contentSearch.join(", ")}]`); } setIsRequesting(true); const data = await memoStore.fetchMemos({ limit: DEFAULT_MEMO_LIMIT, offset: memoList.size(), filter: filters.join(" && "), }); setIsRequesting(false); setIsComplete(data.length < DEFAULT_MEMO_LIMIT); }; return (
{t("memo.fetching-data")}
{t("message.no-data")}