diff --git a/src/pages/bases/DashMemoryCardView.tsx b/src/pages/bases/DashMemoryCardView.tsx index 99a98ab..0ef0ecd 100644 --- a/src/pages/bases/DashMemoryCardView.tsx +++ b/src/pages/bases/DashMemoryCardView.tsx @@ -1,7 +1,7 @@ import {BasesView, MarkdownRenderer, QueryController, TFile} from 'obsidian'; import React, {useEffect, useRef, useState} from 'react'; import {createRoot} from 'react-dom/client'; -import {Button, Space, Card,Modal} from 'antd'; +import {Button, Space, Card, Modal, notification} from 'antd'; import dayjs from 'dayjs'; export const MemoryCardViewType = 'dash-memory-card-view'; @@ -56,9 +56,9 @@ const updateSRFrontmatter = async ( rating: 1 | 3 | 5, refresh: () => void ) => { - if (!filePath) return; + if (!filePath) return false; const file = app.vault.getAbstractFileByPath(filePath); - if (!(file instanceof TFile)) return; + if (!(file instanceof TFile)) return false; let repetitions = Number(frontmatter?.['sr-repetitions']) || 0; let interval = Number(frontmatter?.['sr-interval']) || 1; let ease = Number(frontmatter?.['sr-ease']) || 2.5; @@ -84,8 +84,7 @@ const updateSRFrontmatter = async ( const due = dayjs().add(interval, 'day'); const now = dayjs(); if (due.diff(now, 'day') >= 365) { - Modal.success('恭喜已经掌握该卡片'); - return; + return true; } await app.fileManager.processFrontMatter(file, (fm: Record) => { fm['sr-repetitions'] = repetitions; @@ -95,6 +94,7 @@ const updateSRFrontmatter = async ( fm['sr-lapses'] = lapses; }); refresh(); + return false; }; const MemoryCard: React.FC = ({markdown, app, filePath, title, frontmatter}) => { @@ -102,6 +102,7 @@ const MemoryCard: React.FC = ({markdown, app, filePath, title, const [rendered, setRendered] = useState(false); const [fm, setFM] = useState(frontmatter); const [md, setMD] = useState(markdown); + const [showModal, setShowModal] = useState(false); useEffect(() => { setFM(frontmatter); @@ -137,7 +138,8 @@ const MemoryCard: React.FC = ({markdown, app, filePath, title, if (action === 'hard') rating = 1; else if (action === 'medium') rating = 3; else if (action === 'easy') rating = 5; - await updateSRFrontmatter(app, filePath, fm, rating, refresh); + const isDueOverYear = await updateSRFrontmatter(app, filePath, fm, rating, refresh); + if (isDueOverYear) setShowModal(true); }; return ( @@ -173,11 +175,22 @@ const MemoryCard: React.FC = ({markdown, app, filePath, title, justifyContent: 'center', }}> - - - + + + + setShowModal(false)} + footer={null} + centered + > +
+ Congratulations! You have memorized this note. +
+
); }; diff --git a/src/pages/kanbanview/KanbanView.tsx b/src/pages/kanbanview/KanbanView.tsx index 36bc50d..5deb824 100644 --- a/src/pages/kanbanview/KanbanView.tsx +++ b/src/pages/kanbanview/KanbanView.tsx @@ -118,34 +118,34 @@ const KanbanView: React.FC = ({app, source}) => { useEffect(() => { - const onModify = (file: TFile) => { - setTimeout(() => { - setRefresh((prev) => !prev); // 触发刷新 - }, 300); // 延迟 500 毫秒,可根据实际情况调整 - console.log("文件已修改:", file.path); - }; + // const onModify = (file: TFile) => { + // setTimeout(() => { + // setRefresh((prev) => !prev); // 触发刷新 + // }, 300); // 延迟 500 毫秒,可根据实际情况调整 + // console.log("文件已修改:", file.path); + // }; + // + // const onCreate = (file: TFile) => { + // console.log("文件已创建:", file.path); + // setRefresh(!refresh); // 触发刷新 + // }; + // + // const onDelete = (file: TFile) => { + // console.log("文件已删除:", file.path); + // setRefresh(!refresh); // 触发刷新 + // }; - const onCreate = (file: TFile) => { - console.log("文件已创建:", file.path); - setRefresh(!refresh); // 触发刷新 - }; - - const onDelete = (file: TFile) => { - console.log("文件已删除:", file.path); - setRefresh(!refresh); // 触发刷新 - }; - - // 监听文件事件 - app.vault.on("modify", onModify); - app.vault.on("create", onCreate); - app.vault.on("delete", onDelete); - - // 清理事件监听器 - return () => { - app.vault.off("modify", onModify); - app.vault.off("create", onCreate); - app.vault.off("delete", onDelete); - }; + // // 监听文件事件 + // app.vault.on("modify", onModify); + // app.vault.on("create", onCreate); + // app.vault.on("delete", onDelete); + // + // // 清理事件监听器 + // return () => { + // app.vault.off("modify", onModify); + // app.vault.off("create", onCreate); + // app.vault.off("delete", onDelete); + // }; }, [app]); const cardDetails = (dataList: any) => {