import { Button } from "@mui/joy"; import { useEffect, useState } from "react"; import { useSearchParams } from "react-router-dom"; import useToggle from "react-use/lib/useToggle"; import Empty from "@/components/Empty"; import Icon from "@/components/Icon"; import MemoEditor from "@/components/MemoEditor"; import MobileHeader from "@/components/MobileHeader"; import TimelineMemo from "@/components/TimelineMemo"; import DatePicker from "@/components/kit/DatePicker"; import { DAILY_TIMESTAMP } from "@/helpers/consts"; import { getDateStampByDate, getNormalizedDateString, getTimeStampByDate } from "@/helpers/datetime"; import useCurrentUser from "@/hooks/useCurrentUser"; import { useMemoList, useMemoStore } from "@/store/v1"; import { useTranslate } from "@/utils/i18n"; const Timeline = () => { const t = useTranslate(); const [searchParams, setSearchParams] = useSearchParams(); const user = useCurrentUser(); const memoStore = useMemoStore(); const memoList = useMemoList(); const currentDateStamp = getDateStampByDate(getNormalizedDateString()) as number; const [selectedDateStamp, setSelectedDateStamp] = useState( (searchParams.get("timestamp") ? Number(searchParams.get("timestamp")) : currentDateStamp) as number ); const [isRequesting, setIsRequesting] = useState(true); const [showDatePicker, toggleShowDatePicker] = useToggle(false); const sortedMemos = memoList.value.sort((a, b) => getTimeStampByDate(a.createTime) - getTimeStampByDate(b.createTime)); useEffect(() => { setSearchParams(); }, []); useEffect(() => { memoList.reset(); fetchMemos(); }, [selectedDateStamp]); const fetchMemos = async () => { const filters = [ `creator == "${user.name}"`, `row_status == "NORMAL"`, `created_ts_after == ${selectedDateStamp / 1000}`, `created_ts_before == ${(selectedDateStamp + DAILY_TIMESTAMP) / 1000}`, ]; setIsRequesting(true); await memoStore.fetchMemos({ filter: filters.join(" && "), offset: memoList.size(), }); setIsRequesting(false); }; const handleDataPickerChange = (datestamp: number): void => { setSelectedDateStamp(datestamp); toggleShowDatePicker(false); }; return (

toggleShowDatePicker()} > {new Date(selectedDateStamp).toLocaleDateString()}

{selectedDateStamp !== currentDateStamp && ( )} toggleShowDatePicker(false)} />
{sortedMemos.map((memo, index) => (
{index !== sortedMemos.length - 1 && (
)}
))} {!isRequesting && sortedMemos.length === 0 && (

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

)} {selectedDateStamp === currentDateStamp && (
)}
); }; export default Timeline;