import { useRef, useState } from "react"; import { useTranslation } from "react-i18next"; import { useMemoStore, useUserStore } from "../store/module"; import { DAILY_TIMESTAMP } from "../helpers/consts"; import * as utils from "../helpers/utils"; import MobileHeader from "../components/MobileHeader"; import useToggle from "../hooks/useToggle"; import toImage from "../labs/html2image"; import showPreviewImageDialog from "../components/PreviewImageDialog"; import Icon from "../components/Icon"; import DatePicker from "../components/base/DatePicker"; import DailyMemo from "../components/DailyMemo"; const monthChineseStrArray = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"]; const weekdayChineseStrArray = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; const DailyReview = () => { const { t } = useTranslation(); const memoStore = useMemoStore(); const memos = memoStore.state.memos; const userStore = useUserStore(); const { localSetting } = userStore.state.user as User; const [currentDateStamp, setCurrentDateStamp] = useState(utils.getDateStampByDate(utils.getDateString(Date.now()))); const [showDatePicker, toggleShowDatePicker] = useToggle(false); const memosElRef = useRef(null); const currentDate = new Date(currentDateStamp); const dailyMemos = memos .filter((m) => { const createdTimestamp = utils.getTimeStampByDate(m.createdTs); const currentDateStampWithOffset = currentDateStamp + utils.convertToMillis(localSetting); return ( m.rowStatus === "NORMAL" && createdTimestamp >= currentDateStampWithOffset && createdTimestamp < currentDateStampWithOffset + DAILY_TIMESTAMP ); }) .sort((a, b) => utils.getTimeStampByDate(a.createdTs) - utils.getTimeStampByDate(b.createdTs)); const handleShareBtnClick = () => { if (!memosElRef.current) { return; } toggleShowDatePicker(false); toImage(memosElRef.current, { pixelRatio: window.devicePixelRatio * 2, }) .then((url) => { showPreviewImageDialog(url); }) .catch(() => { // do nth }); }; const handleDataPickerChange = (datestamp: DateStamp): void => { setCurrentDateStamp(datestamp); toggleShowDatePicker(false); }; return (

toggleShowDatePicker()} > {t("common.daily-review")}

{currentDate.getFullYear()}
{monthChineseStrArray[currentDate.getMonth()]}
{currentDate.getDate()}
{weekdayChineseStrArray[currentDate.getDay()]}
{dailyMemos.length === 0 ? (

{t("daily-review.oops-nothing")}

) : (
{dailyMemos.map((memo) => ( ))}
)}
); }; export default DailyReview;