0.1.06文件树的选择问题及思维导图删除问题

This commit is contained in:
liaibo
2026-01-07 22:06:49 +08:00
parent afad811d85
commit 9de2d69c55
4 changed files with 109 additions and 8 deletions
@@ -319,6 +319,7 @@ const MindmapBlockView = ({
const hotkeyScopeRef = useRef(false);
const recentNodeDblclickRef = useRef(false);
const [fullscreenApiActive, setFullscreenApiActive] = useState(false);
const deletingRef = useRef(false);
const getRootNode = useCallback((mm?: MindMapInstance | null) => {
const instance = mm ?? mindmap;
@@ -1080,7 +1081,20 @@ const MindmapBlockView = ({
destroyed = true;
try {
// 切换“内嵌/全屏”会导致实例重建:这里尽量在销毁前同步一次数据,避免丢失最后一次编辑
if (createdInstance && typeof window !== "undefined") {
const skipPersist =
deletingRef.current ||
(() => {
if (!docId || typeof window === "undefined") return false;
try {
const w = window as unknown as {
__wolaiMindmapDeletingDocIds?: Set<string>;
};
return Boolean(w.__wolaiMindmapDeletingDocIds?.has(docId));
} catch {
return false;
}
})();
if (!skipPersist && createdInstance && typeof window !== "undefined") {
const data =
createdInstance.getData?.(true) ?? createdInstance.getData?.();
if (data) {
@@ -1607,15 +1621,18 @@ const MindmapBlockView = ({
const handleDeleteMindmap = useCallback(async () => {
if (!docId) {
deletingRef.current = true;
editor.removeBlocks([block.id]);
return;
}
const confirmed = window.confirm("确认删除当前思维导图?此操作会移除文件并清空侧边栏记录。");
if (!confirmed) return;
deletingRef.current = true;
const resp = await fetch(`/api/mindmap/${docId}`, { method: "DELETE" });
if (!resp.ok) {
const payload = await resp.json().catch(() => ({}));
window.alert(payload?.error ?? "删除思维导图失败");
deletingRef.current = false;
return;
}
try {