From 34df23cc57aff1194050bc4ac95b456bd480f0a8 Mon Sep 17 00:00:00 2001 From: purocean Date: Wed, 9 Oct 2024 16:33:27 +0800 Subject: [PATCH] refactor: make getFileList method async and fetch tree if current file is from a different repo --- src/renderer/plugins/editor-path-completion.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/renderer/plugins/editor-path-completion.ts b/src/renderer/plugins/editor-path-completion.ts index 393cf101..94f6bd23 100644 --- a/src/renderer/plugins/editor-path-completion.ts +++ b/src/renderer/plugins/editor-path-completion.ts @@ -299,7 +299,7 @@ class CompletionProvider implements Monaco.languages.CompletionItemProvider { pathSegmentEnd.column, ) - const items = this.getFileList(parentDir) + const items = await this.getFileList(parentDir) let i = 0 for (const item of items) { @@ -328,7 +328,7 @@ class CompletionProvider implements Monaco.languages.CompletionItemProvider { } } - private getFileList (parentDir: string): Components.Tree.Node[] { + private async getFileList (parentDir: string): Promise { const result: Components.Tree.Node[] = [] const traverseTree = (nodes: Components.Tree.Node[]) => { @@ -345,7 +345,18 @@ class CompletionProvider implements Monaco.languages.CompletionItemProvider { }) } - traverseTree(this.ctx.store.state.tree || []) + const repo = this.ctx.store.state.currentFile?.repo + + if (!repo) { + return result + } + + if (this.ctx.store.state.currentFile?.repo === this.ctx.store.state.currentRepo?.name) { + traverseTree(this.ctx.store.state.tree || []) + } else { + const tree = await this.ctx.api.fetchTree(repo, { by: 'name', order: 'asc' }, undefined, true) + traverseTree(tree) + } return result }