From 6da33cda7e619637acf569e2e46efca4c747e4d3 Mon Sep 17 00:00:00 2001 From: liufree Date: Wed, 15 Oct 2025 00:59:11 +0800 Subject: [PATCH 1/3] feat: support mermorycard view --- src/pages/bases/DashMemoryCardView.tsx | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/pages/bases/DashMemoryCardView.tsx b/src/pages/bases/DashMemoryCardView.tsx index eac145d..c496db8 100644 --- a/src/pages/bases/DashMemoryCardView.tsx +++ b/src/pages/bases/DashMemoryCardView.tsx @@ -1,9 +1,10 @@ -import {BasesView, MarkdownRenderer, QueryController, TFile,Component} from 'obsidian'; +import {BasesView, MarkdownRenderer, QueryController, TFile, Component} from 'obsidian'; import React, {useEffect, useRef, useState} from 'react'; import {createRoot} from 'react-dom/client'; import {Button, Space, Card, Modal, notification} from 'antd'; import dayjs from 'dayjs'; import isSameOrBefore from 'dayjs/plugin/isSameOrBefore'; + dayjs.extend(isSameOrBefore); export const MemoryCardViewType = 'dash-memory-card-view'; @@ -24,19 +25,21 @@ export class DashMemoryCardView extends BasesView { const allCards = this.data.data; // 按 sr-due 升序排序 this.sortedCards = [...allCards] - .map(card => ({card, due: card.getValue('properties.sr-due')})) + .map(function (card) { + return {card, due: card.getValue('note.sr-due')}; + }) .sort((a, b) => { if (!a.due && !b.due) return 0; if (!a.due) return 1; if (!b.due) return -1; - return dayjs(a.due).valueOf() - dayjs(b.due).valueOf(); + return dayjs(a.due).isSameOrBefore(b.due) ? -1 : 1; }) .map(item => item.card); // 找到 sr-due 最近的卡片 let idx = 0; const now = dayjs(); for (let i = 0; i < this.sortedCards.length; i++) { - const due = this.sortedCards[i].getValue('properties.sr-due'); + const due = this.sortedCards[i].getValue('note.sr-due'); if (due && dayjs(due).isSameOrBefore(now, 'day')) { idx = i; break; @@ -159,7 +162,17 @@ const updateSRFrontmatter = async ( return false; }; -const MemoryCard: React.FC = ({markdown, app, filePath, title, frontmatter, onPrev, onNext, isPrevDisabled, isNextDisabled}) => { +const MemoryCard: React.FC = ({ + markdown, + app, + filePath, + title, + frontmatter, + onPrev, + onNext, + isPrevDisabled, + isNextDisabled + }) => { const mdRef = useRef(null); const [rendered, setRendered] = useState(false); const [fm, setFM] = useState(frontmatter); From 49dbf84dd07fb1cb1b0d00b6161a52c6ef67a793 Mon Sep 17 00:00:00 2001 From: liufree Date: Thu, 16 Oct 2025 00:16:22 +0800 Subject: [PATCH 2/3] feat: support mermorycard view --- src/pages/bases/DashMemoryCardView.tsx | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/src/pages/bases/DashMemoryCardView.tsx b/src/pages/bases/DashMemoryCardView.tsx index c496db8..39567c9 100644 --- a/src/pages/bases/DashMemoryCardView.tsx +++ b/src/pages/bases/DashMemoryCardView.tsx @@ -176,37 +176,24 @@ const MemoryCard: React.FC = ({ const mdRef = useRef(null); const [rendered, setRendered] = useState(false); const [fm, setFM] = useState(frontmatter); - const [md, setMD] = useState(markdown); const [showModal, setShowModal] = useState(false); - useEffect(() => { - setFM(frontmatter); - setMD(markdown); - }, [frontmatter, markdown]); - useEffect(() => { if (mdRef.current && !rendered) { // 修正:传递一个 Obsidian Component 实例,避免内存泄漏 MarkdownRenderer.render( app, - md, + markdown, mdRef.current, filePath, null ); setRendered(true); } - }, [md, app, filePath, rendered]); + }, [markdown, app, filePath]); const refresh = async () => { - const file = app.vault.getAbstractFileByPath(filePath); - if (file instanceof TFile) { - const newMD = await app.vault.read(file); - setMD(newMD); - const cache = app.metadataCache.getFileCache(file); - setFM(cache?.frontmatter); - setRendered(false); - } + }; const handleDifficulty = async (action: 'hard' | 'medium' | 'easy') => { From 0ec25ef964c27514a7c98ede3cc36c89d4b0d7f3 Mon Sep 17 00:00:00 2001 From: liufree Date: Thu, 16 Oct 2025 00:30:17 +0800 Subject: [PATCH 3/3] feat: support mermorycard view --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index b6b3396..f8e00ec 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "querydash", "name": "QueryDash", - "version": "2.0.1", + "version": "2.0.2", "minAppVersion": "1.8.0", "description": "The new view for bases refers to an updated or additional interface that allows users to interact with base data in a different way, such as through enhanced search, sorting, and pagination features, similar to Notion. This improves usability and data management within your application. It was originally a new view for dataview, but now its functionality has been extended to bases.", "author": "lwx",