0.1.06文件树的选择问题及思维导图删除问题
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user