diff --git a/resources/demo.png b/resources/demo.png index 5c968e48..013430cd 100644 Binary files a/resources/demo.png and b/resources/demo.png differ diff --git a/web/public/icons/arrow-left.svg b/web/public/icons/arrow-left.svg index b38183a9..8d67f438 100644 --- a/web/public/icons/arrow-left.svg +++ b/web/public/icons/arrow-left.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/web/public/icons/arrow-right.svg b/web/public/icons/arrow-right.svg index 4710da89..79092597 100644 --- a/web/public/icons/arrow-right.svg +++ b/web/public/icons/arrow-right.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/web/src/components/DailyMemoDiaryDialog.tsx b/web/src/components/DailyReviewDialog.tsx similarity index 63% rename from web/src/components/DailyMemoDiaryDialog.tsx rename to web/src/components/DailyReviewDialog.tsx index ba4d7139..3754aae5 100644 --- a/web/src/components/DailyMemoDiaryDialog.tsx +++ b/web/src/components/DailyReviewDialog.tsx @@ -1,15 +1,14 @@ -import { useEffect, useRef, useState } from "react"; -import { memoService } from "../services"; +import { useRef, useState } from "react"; +import { useAppSelector } from "../store"; import toImage from "../labs/html2image"; import useToggle from "../hooks/useToggle"; -import useLoading from "../hooks/useLoading"; import { DAILY_TIMESTAMP } from "../helpers/consts"; import * as utils from "../helpers/utils"; import { showDialog } from "./Dialog"; +import DatePicker from "./common/DatePicker"; import showPreviewImageDialog from "./PreviewImageDialog"; import DailyMemo from "./DailyMemo"; -import DatePicker from "./common/DatePicker"; -import "../less/daily-memo-diary-dialog.less"; +import "../less/daily-review-dialog.less"; interface Props extends DialogProps { currentDateStamp: DateStamp; @@ -18,50 +17,38 @@ interface Props extends DialogProps { const monthChineseStrArray = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dev"]; const weekdayChineseStrArray = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; -const DailyMemoDiaryDialog: React.FC = (props: Props) => { - const loadingState = useLoading(); - const [memos, setMemos] = useState([]); +const DailyReviewDialog: React.FC = (props: Props) => { + const memos = useAppSelector((state) => state.memo.memos); const [currentDateStamp, setCurrentDateStamp] = useState(utils.getDateStampByDate(utils.getDateString(props.currentDateStamp))); const [showDatePicker, toggleShowDatePicker] = useToggle(false); const memosElRef = useRef(null); const currentDate = new Date(currentDateStamp); - - useEffect(() => { - const setDailyMemos = () => { - const dailyMemos = memoService - .getState() - .memos.filter( - (a) => - utils.getTimeStampByDate(a.createdTs) >= currentDateStamp && - utils.getTimeStampByDate(a.createdTs) < currentDateStamp + DAILY_TIMESTAMP - ) - .sort((a, b) => utils.getTimeStampByDate(a.createdTs) - utils.getTimeStampByDate(b.createdTs)); - setMemos(dailyMemos); - loadingState.setFinish(); - }; - - setDailyMemos(); - }, [currentDateStamp]); + const dailyMemos = memos + .filter( + (m) => + m.rowStatus === "NORMAL" && + utils.getTimeStampByDate(m.createdTs) >= currentDateStamp && + utils.getTimeStampByDate(m.createdTs) < currentDateStamp + DAILY_TIMESTAMP + ) + .sort((a, b) => utils.getTimeStampByDate(a.createdTs) - utils.getTimeStampByDate(b.createdTs)); const handleShareBtnClick = () => { - toggleShowDatePicker(false); + if (!memosElRef.current) { + return; + } - setTimeout(() => { - if (!memosElRef.current) { - return; - } + toggleShowDatePicker(false); - toImage(memosElRef.current, { - backgroundColor: "#ffffff", - pixelRatio: window.devicePixelRatio * 2, + toImage(memosElRef.current, { + backgroundColor: "#ffffff", + pixelRatio: window.devicePixelRatio * 2, + }) + .then((url) => { + showPreviewImageDialog(url); }) - .then((url) => { - showPreviewImageDialog(url); - }) - .catch(() => { - // do nth - }); - }, 0); + .catch(() => { + // do nth + }); }; const handleDataPickerChange = (datestamp: DateStamp): void => { @@ -72,8 +59,8 @@ const DailyMemoDiaryDialog: React.FC = (props: Props) => { return ( <>
-

- 📅 Daily Memos +

toggleShowDatePicker()}> + 📅 Daily Review

setCurrentDateStamp(currentDateStamp - DAILY_TIMESTAMP)}> @@ -89,9 +76,14 @@ const DailyMemoDiaryDialog: React.FC = (props: Props) => {
+
-
toggleShowDatePicker()}> +
{currentDate.getFullYear()}
{monthChineseStrArray[currentDate.getMonth()]}
@@ -99,22 +91,13 @@ const DailyMemoDiaryDialog: React.FC = (props: Props) => {
{weekdayChineseStrArray[currentDate.getDay()]}
- - {loadingState.isLoading ? ( -
-

Loading...

-
- ) : memos.length === 0 ? ( + {dailyMemos.length === 0 ? (

Oops, there is nothing.

) : (
- {memos.map((memo) => ( + {dailyMemos.map((memo) => ( ))}
@@ -124,12 +107,13 @@ const DailyMemoDiaryDialog: React.FC = (props: Props) => { ); }; -export default function showDailyMemoDiaryDialog(datestamp: DateStamp = Date.now()): void { +export default function showDailyReviewDialog(datestamp: DateStamp = Date.now()): void { showDialog( { - className: "daily-memo-diary-dialog", + className: "daily-review-dialog", + useAppContext: true, }, - DailyMemoDiaryDialog, + DailyReviewDialog, { currentDateStamp: datestamp } ); } diff --git a/web/src/components/ShareMemoImageDialog.tsx b/web/src/components/ShareMemoImageDialog.tsx index c812a764..44459a52 100644 --- a/web/src/components/ShareMemoImageDialog.tsx +++ b/web/src/components/ShareMemoImageDialog.tsx @@ -65,7 +65,7 @@ const ShareMemoImageDialog: React.FC = (props: Props) => { <>

- 🥰Share Memo + 🌄Share Memo

-