From 8b65d248b1e271f74fbd28df041c560cde1c6991 Mon Sep 17 00:00:00 2001 From: Steven Date: Tue, 14 Jan 2025 00:05:33 +0800 Subject: [PATCH] fix: memo filter --- .../components/HomeSidebar/HomeSidebar.tsx | 2 +- web/src/components/StatisticsView.tsx | 20 ++----------------- web/src/pages/Explore.tsx | 12 +++++++++++ 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/web/src/components/HomeSidebar/HomeSidebar.tsx b/web/src/components/HomeSidebar/HomeSidebar.tsx index 48de9f36..cb5c18d0 100644 --- a/web/src/components/HomeSidebar/HomeSidebar.tsx +++ b/web/src/components/HomeSidebar/HomeSidebar.tsx @@ -17,7 +17,7 @@ const HomeSidebar = (props: Props) => { useDebounce( async () => { - const filters = [`state == "NORMAL"`]; + const filters = [`state == "NORMAL"`, `creator == "${currentUser.name}"`]; await userStatsStore.listUserStats(currentUser.name, filters.join(" && ")); }, 300, diff --git a/web/src/components/StatisticsView.tsx b/web/src/components/StatisticsView.tsx index bbd69191..0ffff857 100644 --- a/web/src/components/StatisticsView.tsx +++ b/web/src/components/StatisticsView.tsx @@ -1,11 +1,10 @@ -import { Divider, Tooltip } from "@mui/joy"; +import { Tooltip } from "@mui/joy"; import clsx from "clsx"; import dayjs from "dayjs"; import { countBy } from "lodash-es"; import { CalendarDaysIcon, CheckCircleIcon, ChevronLeftIcon, ChevronRightIcon, Code2Icon, LinkIcon, ListTodoIcon } from "lucide-react"; import { useState } from "react"; import useAsyncEffect from "@/hooks/useAsyncEffect"; -import useCurrentUser from "@/hooks/useCurrentUser"; import i18n from "@/i18n"; import { useMemoFilterStore, useUserStatsStore } from "@/store/v1"; import { UserStats_MemoTypeStats } from "@/types/proto/api/v1/user_service"; @@ -14,18 +13,12 @@ import ActivityCalendar from "./ActivityCalendar"; const StatisticsView = () => { const t = useTranslate(); - const currentUser = useCurrentUser(); const memoFilterStore = useMemoFilterStore(); const userStatsStore = useUserStatsStore(); - const [memoAmount, setMemoAmount] = useState(0); const [memoTypeStats, setMemoTypeStats] = useState(UserStats_MemoTypeStats.fromPartial({})); const [activityStats, setActivityStats] = useState>({}); const [selectedDate] = useState(new Date()); const [visibleMonthString, setVisibleMonthString] = useState(dayjs(selectedDate.toDateString()).format("YYYY-MM")); - const days = Math.ceil((Date.now() - currentUser.createTime!.getTime()) / 86400000); - - const singularOrPluralMemo = (memoAmount > 0 ? t("common.memos") : t("common.memo")).toLowerCase(); - const singularOrPluralDay = (days > 0 ? t("common.days") : t("common.day")).toLowerCase(); useAsyncEffect(async () => { const memoTypeStats = UserStats_MemoTypeStats.fromPartial({}); @@ -40,7 +33,6 @@ const StatisticsView = () => { } } setMemoTypeStats(memoTypeStats); - setMemoAmount(displayTimeList.length); setActivityStats(countBy(displayTimeList.map((date) => dayjs(date).format("YYYY-MM-DD")))); }, [userStatsStore.stateId]); @@ -80,16 +72,8 @@ const StatisticsView = () => { data={activityStats} onClick={onCalendarClick} /> - {memoAmount === 0 ? ( -

{t("memo.no-memos")}

- ) : ( -

- {memoAmount} {singularOrPluralMemo} {t("common.in").toLowerCase()} {days} {singularOrPluralDay} -

- )} - -
+
memoFilterStore.addFilter({ factor: "property.hasLink", value: "" })} diff --git a/web/src/pages/Explore.tsx b/web/src/pages/Explore.tsx index 9900510f..134ed069 100644 --- a/web/src/pages/Explore.tsx +++ b/web/src/pages/Explore.tsx @@ -26,6 +26,18 @@ const Explore = () => { contentSearch.push(`"${filter.value}"`); } else if (filter.factor === "tagSearch") { tagSearch.push(`"${filter.value}"`); + } else if (filter.factor === "property.hasLink") { + filters.push(`has_link == true`); + } else if (filter.factor === "property.hasTaskList") { + filters.push(`has_task_list == true`); + } else if (filter.factor === "property.hasCode") { + filters.push(`has_code == true`); + } else if (filter.factor === "displayTime") { + const filterDate = new Date(filter.value); + const filterUtcTimestamp = filterDate.getTime() + filterDate.getTimezoneOffset() * 60 * 1000; + const timestampAfter = filterUtcTimestamp / 1000; + filters.push(`display_time_after == ${timestampAfter}`); + filters.push(`display_time_before == ${timestampAfter + 60 * 60 * 24}`); } } if (memoFilterStore.orderByTimeAsc) {