From b9006f8ce082bdf04bcf6bcb2206f52719824fba Mon Sep 17 00:00:00 2001 From: Steven Date: Sat, 27 Jul 2024 17:21:22 +0800 Subject: [PATCH] chore: tweak date utils --- .../components/CreateMemoRelationDialog.tsx | 5 ++- web/src/components/UserStatisticsView.tsx | 2 +- web/src/helpers/datetime.ts | 31 ------------------- web/src/pages/Archived.tsx | 5 +-- web/src/pages/Explore.tsx | 3 +- web/src/pages/Home.tsx | 4 +-- web/src/pages/UserProfile.tsx | 5 +-- 7 files changed, 7 insertions(+), 48 deletions(-) delete mode 100644 web/src/helpers/datetime.ts diff --git a/web/src/components/CreateMemoRelationDialog.tsx b/web/src/components/CreateMemoRelationDialog.tsx index a8ebffa9ce748..8ad69bbd97452 100644 --- a/web/src/components/CreateMemoRelationDialog.tsx +++ b/web/src/components/CreateMemoRelationDialog.tsx @@ -4,7 +4,6 @@ import { toast } from "react-hot-toast"; import useDebounce from "react-use/lib/useDebounce"; import { memoServiceClient } from "@/grpcweb"; import { DEFAULT_LIST_MEMOS_PAGE_SIZE } from "@/helpers/consts"; -import { getDateTimeString } from "@/helpers/datetime"; import useCurrentUser from "@/hooks/useCurrentUser"; import { Memo } from "@/types/proto/api/v1/memo_service"; import { useTranslate } from "@/utils/i18n"; @@ -112,7 +111,7 @@ const CreateMemoRelationDialog: React.FC = (props: Props) => { renderOption={(props, memo) => (
-

{getDateTimeString(memo.displayTime)}

+

{memo.displayTime?.toLocaleString()}

{searchText ? getHighlightedContent(memo.content) : memo.snippet}

@@ -121,7 +120,7 @@ const CreateMemoRelationDialog: React.FC = (props: Props) => { memos.map((memo) => (
-

{getDateTimeString(memo.displayTime)}

+

{memo.displayTime?.toLocaleString()}

{memo.content}
diff --git a/web/src/components/UserStatisticsView.tsx b/web/src/components/UserStatisticsView.tsx index 2227df418eff7..be1cb5b34282a 100644 --- a/web/src/components/UserStatisticsView.tsx +++ b/web/src/components/UserStatisticsView.tsx @@ -82,7 +82,7 @@ const UserStatisticsView = () => { type="month" value={monthString} onFocus={(e: any) => e.target.showPicker()} - onChange={(e) => setMonthString(e.target.value)} + onChange={(e) => setMonthString(e.target.value || dayjs().format("YYYY-MM"))} />
diff --git a/web/src/helpers/datetime.ts b/web/src/helpers/datetime.ts deleted file mode 100644 index d1e4a6c597dbe..0000000000000 --- a/web/src/helpers/datetime.ts +++ /dev/null @@ -1,31 +0,0 @@ -import i18n from "@/i18n"; - -export function getTimeStampByDate(t: Date | number | string | any): number { - return new Date(t).getTime(); -} - -/** - * Get a localized date and time string to provided time. - * - * If no date is provided, the current date is used. - * - * Sample outputs: - * - "en" locale: "1/30/2023, 10:05:00 PM" - * - "pt-BR" locale: "30/01/2023 22:05:00" - * - "pl" locale: "30.01.2023, 22:05:00" - */ -export function getDateTimeString(t?: Date | number | string | any, locale = i18n.language): string { - const tsFromDate = new Date(getTimeStampByDate(t ? t : Date.now())); - try { - return tsFromDate.toLocaleString(locale, { - year: "numeric", - month: "numeric", - day: "numeric", - hour: "numeric", - minute: "numeric", - second: "numeric", - }); - } catch (error) { - return tsFromDate.toLocaleString(); - } -} diff --git a/web/src/pages/Archived.tsx b/web/src/pages/Archived.tsx index 649f6f9b6e15a..bac94b2a2c5d0 100644 --- a/web/src/pages/Archived.tsx +++ b/web/src/pages/Archived.tsx @@ -9,7 +9,6 @@ import MemoFilters from "@/components/MemoFilters"; import MobileHeader from "@/components/MobileHeader"; import SearchBar from "@/components/SearchBar"; import { DEFAULT_LIST_MEMOS_PAGE_SIZE } from "@/helpers/consts"; -import { getTimeStampByDate } from "@/helpers/datetime"; import useCurrentUser from "@/hooks/useCurrentUser"; import { useMemoFilterStore, useMemoList, useMemoStore } from "@/store/v1"; import { RowStatus } from "@/types/proto/api/v1/common"; @@ -24,9 +23,7 @@ const Archived = () => { const memoFilterStore = useMemoFilterStore(); const [isRequesting, setIsRequesting] = useState(true); const [nextPageToken, setNextPageToken] = useState(""); - const sortedMemos = memoList.value - .filter((memo) => memo.rowStatus === RowStatus.ARCHIVED) - .sort((a, b) => getTimeStampByDate(b.displayTime) - getTimeStampByDate(a.displayTime)); + const sortedMemos = memoList.value.filter((memo) => memo.rowStatus === RowStatus.ARCHIVED); useEffect(() => { memoList.reset(); diff --git a/web/src/pages/Explore.tsx b/web/src/pages/Explore.tsx index 2e52c5ff84400..9281a2377d8a0 100644 --- a/web/src/pages/Explore.tsx +++ b/web/src/pages/Explore.tsx @@ -8,7 +8,6 @@ import MemoFilters from "@/components/MemoFilters"; import MemoView from "@/components/MemoView"; import MobileHeader from "@/components/MobileHeader"; import { DEFAULT_LIST_MEMOS_PAGE_SIZE } from "@/helpers/consts"; -import { getTimeStampByDate } from "@/helpers/datetime"; import useCurrentUser from "@/hooks/useCurrentUser"; import useResponsiveWidth from "@/hooks/useResponsiveWidth"; import { useMemoFilterStore, useMemoList, useMemoStore } from "@/store/v1"; @@ -23,7 +22,7 @@ const Explore = () => { const memoFilterStore = useMemoFilterStore(); const [isRequesting, setIsRequesting] = useState(true); const [nextPageToken, setNextPageToken] = useState(""); - const sortedMemos = memoList.value.sort((a, b) => getTimeStampByDate(b.displayTime) - getTimeStampByDate(a.displayTime)); + const sortedMemos = memoList.value; useEffect(() => { memoList.reset(); diff --git a/web/src/pages/Home.tsx b/web/src/pages/Home.tsx index 9cf5c37e529eb..a729cfe257ef5 100644 --- a/web/src/pages/Home.tsx +++ b/web/src/pages/Home.tsx @@ -9,7 +9,6 @@ import MemoFilters from "@/components/MemoFilters"; import MemoView from "@/components/MemoView"; import MobileHeader from "@/components/MobileHeader"; import { DEFAULT_LIST_MEMOS_PAGE_SIZE } from "@/helpers/consts"; -import { getTimeStampByDate } from "@/helpers/datetime"; import useCurrentUser from "@/hooks/useCurrentUser"; import useResponsiveWidth from "@/hooks/useResponsiveWidth"; import { useMemoFilterStore, useMemoList, useMemoStore } from "@/store/v1"; @@ -27,7 +26,6 @@ const Home = () => { const [nextPageToken, setNextPageToken] = useState(""); const sortedMemos = memoList.value .filter((memo) => memo.rowStatus === RowStatus.ACTIVE) - .sort((a, b) => getTimeStampByDate(b.displayTime) - getTimeStampByDate(a.displayTime)) .sort((a, b) => Number(b.pinned) - Number(a.pinned)); useEffect(() => { @@ -52,7 +50,7 @@ const Home = () => { } else if (filter.factor === "property.hasCode") { filters.push(`has_code == true`); } else if (filter.factor === "displayTime") { - const timestampAfter = getTimeStampByDate(new Date(filter.value)) / 1000; + const timestampAfter = new Date(filter.value).getTime() / 1000; filters.push(`display_time_after == ${timestampAfter}`); filters.push(`display_time_before == ${timestampAfter + 60 * 60 * 24}`); } diff --git a/web/src/pages/UserProfile.tsx b/web/src/pages/UserProfile.tsx index 78033dab6a0c0..9aa02a7287b6d 100644 --- a/web/src/pages/UserProfile.tsx +++ b/web/src/pages/UserProfile.tsx @@ -10,7 +10,6 @@ import MemoView from "@/components/MemoView"; import MobileHeader from "@/components/MobileHeader"; import UserAvatar from "@/components/UserAvatar"; import { DEFAULT_LIST_MEMOS_PAGE_SIZE } from "@/helpers/consts"; -import { getTimeStampByDate } from "@/helpers/datetime"; import useLoading from "@/hooks/useLoading"; import { useMemoFilterStore, useMemoList, useMemoStore, useUserStore } from "@/store/v1"; import { User } from "@/types/proto/api/v1/user_service"; @@ -27,9 +26,7 @@ const UserProfile = () => { const memoFilterStore = useMemoFilterStore(); const [isRequesting, setIsRequesting] = useState(true); const [nextPageToken, setNextPageToken] = useState(""); - const sortedMemos = memoList.value - .sort((a, b) => getTimeStampByDate(b.displayTime) - getTimeStampByDate(a.displayTime)) - .sort((a, b) => Number(b.pinned) - Number(a.pinned)); + const sortedMemos = memoList.value.sort((a, b) => Number(b.pinned) - Number(a.pinned)); useEffect(() => { const username = params.username;