import { useEffect, useState } from "react"; import { memoServiceClient } from "@/grpcweb"; import { useMemoStore, useTagStore } from "@/store/v1"; import { User } from "@/types/proto/api/v1/user_service"; import { useTranslate } from "@/utils/i18n"; import Icon from "./Icon"; interface Props { user: User; } const UserStatisticsView = (props: Props) => { const { user } = props; const t = useTranslate(); const tagStore = useTagStore(); const memoStore = useMemoStore(); const [memoAmount, setMemoAmount] = useState(0); const [isRequesting, setIsRequesting] = useState(false); const days = Math.ceil((Date.now() - user.createTime!.getTime()) / 86400000); const memos = Object.values(memoStore.getState().memoMapByName); const tags = tagStore.getState().tags.size; useEffect(() => { if (memos.length === 0) { return; } (async () => { setIsRequesting(true); const { stats } = await memoServiceClient.getUserMemosStats({ name: user.name, timezone: Intl.DateTimeFormat().resolvedOptions().timeZone, }); setIsRequesting(false); setMemoAmount(Object.values(stats).reduce((acc, cur) => acc + cur, 0)); })(); }, [memos.length, user.name]); return (
{t("common.statistics")}