Skip to content

Commit 2101719

Browse files
committed
fix:修复添加引用后源头无反向引用显示的问题
1 parent 3816e6f commit 2101719

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

app/src/core/stage/stageManager/concreteMethods/StageReferenceManager.tsx

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { ReferenceBlockNode } from "../../stageObject/entity/ReferenceBlockNode"
99
import { RectangleLittleNoteEffect } from "@/core/service/feedbackService/effectEngine/concrete/RectangleLittleNoteEffect";
1010
import { SectionReferencePanel } from "@/sub/ReferencesWindow";
1111
import { loadAllServicesBeforeInit } from "@/core/loadAllServices";
12+
import { projectsAtom, store } from "@/state";
1213

1314
interface parserResult {
1415
/**
@@ -196,12 +197,22 @@ export class ReferenceManager {
196197
);
197198
if (!referencedFile) return;
198199

199-
// 创建被引用文件的Project实例
200-
const referencedProject = new Project(referencedFile.uri);
200+
// 先检查当前是否已经打开了该文件的Project实例
201+
const allProjects = store.get(projectsAtom);
202+
let referencedProject = allProjects.find((project) => {
203+
const projectFileName = PathString.getFileNameFromPath(project.uri.path);
204+
const projectFileNameFs = PathString.getFileNameFromPath(project.uri.fsPath);
205+
return projectFileName === fileName || projectFileNameFs === fileName;
206+
});
201207

202-
// 初始化项目
203-
loadAllServicesBeforeInit(referencedProject);
204-
await referencedProject.init();
208+
// 如果没有打开,则创建新的Project实例
209+
let shouldDisposeProject = false;
210+
if (!referencedProject) {
211+
referencedProject = new Project(referencedFile.uri);
212+
loadAllServicesBeforeInit(referencedProject);
213+
await referencedProject.init();
214+
shouldDisposeProject = true;
215+
}
205216

206217
// 更新引用
207218
if (sectionName) {
@@ -232,9 +243,10 @@ export class ReferenceManager {
232243
}
233244
}
234245

235-
// 关闭项目
236-
await referencedProject.dispose();
237-
// TODO: 存在隐患,欠考虑如果引用已经被当前软件打开的情况。
246+
// 只有在我们创建的情况下才需要dispose
247+
if (shouldDisposeProject) {
248+
await referencedProject.dispose();
249+
}
238250
} catch (error) {
239251
toast.error("更新reference.msgpack失败:" + String(error));
240252
}

0 commit comments

Comments
 (0)