From 8a1e80f92fc9fe41e66a45de202ece5c8a1abed5 Mon Sep 17 00:00:00 2001 From: DaYoung-woo <131967254+DaYoung-woo@users.noreply.github.com> Date: Thu, 29 Aug 2024 21:34:13 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[fix]#520=20git=20=EC=97=B0=EB=8F=99?= =?UTF-8?q?=EC=9D=B4=20=EC=95=88=EB=90=9C=20=ED=94=84=EB=A1=9C=EC=A0=9D?= =?UTF-8?q?=ED=8A=B8=EC=97=90=EC=84=9C=20=EB=AC=B4=ED=95=9C=EB=A1=9C?= =?UTF-8?q?=EB=94=A9=20=EC=A6=9D=EC=83=81=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: yu iseo <97578465+yuiseo@users.noreply.github.com> --- packages/vscode/src/extension.ts | 8 ++- packages/vscode/src/webview-loader.ts | 90 +++++++++++++-------------- 2 files changed, 50 insertions(+), 48 deletions(-) diff --git a/packages/vscode/src/extension.ts b/packages/vscode/src/extension.ts index a046b354..e1c6357f 100644 --- a/packages/vscode/src/extension.ts +++ b/packages/vscode/src/extension.ts @@ -42,6 +42,7 @@ export async function activate(context: vscode.ExtensionContext) { myStatusBarItem.text = `$(check) ${projectName}`; return; } + const gitPath = (await findGit()).path; const currentWorkspaceUri = vscode.workspace.workspaceFolders?.[0].uri; @@ -57,6 +58,7 @@ export async function activate(context: vscode.ExtensionContext) { } const fetchBranches = async () => await getBranches(gitPath, currentWorkspacePath); + const fetchCurrentBranch = async () => { let branchName; try { @@ -76,6 +78,7 @@ export async function activate(context: vscode.ExtensionContext) { const fetchClusterNodes = async (baseBranchName = initialBaseBranchName) => { const gitLog = await getGitLog(gitPath, currentWorkspacePath); const gitConfig = await getGitConfig(gitPath, currentWorkspacePath, "origin"); + const { owner, repo: initialRepo } = getRepo(gitConfig); webLoader.setGlobalOwnerAndRepo(owner, initialRepo); const repo = initialRepo[0]; @@ -89,8 +92,7 @@ export async function activate(context: vscode.ExtensionContext) { }); const { isPRSuccess, csmDict } = await engine.analyzeGit(); - if (isPRSuccess) console.log("crawling PR failed"); - + if (isPRSuccess) console.log("crawling PR Success"); return mapClusterNodesFrom(csmDict); }; @@ -99,6 +101,7 @@ export async function activate(context: vscode.ExtensionContext) { fetchBranches, fetchCurrentBranch, }); + currentPanel = webLoader.getPanel(); currentPanel?.onDidDispose( @@ -121,6 +124,7 @@ export async function activate(context: vscode.ExtensionContext) { vscode.window.showErrorMessage(error.message); } else { vscode.window.showErrorMessage((error as Error).message); + myStatusBarItem.text = `$(diff-review-close) ${projectName}`; } } }); diff --git a/packages/vscode/src/webview-loader.ts b/packages/vscode/src/webview-loader.ts index e6d1c16c..966d4a9e 100644 --- a/packages/vscode/src/webview-loader.ts +++ b/packages/vscode/src/webview-loader.ts @@ -15,13 +15,8 @@ export default class WebviewLoader implements vscode.Disposable { fetcher: GithruFetcherMap ) { const { fetchClusterNodes, fetchBranches, fetchCurrentBranch } = fetcher; - const viewColumn = vscode.ViewColumn.One; - //캐시 초기화 - console.log("Initialize cache data"); - context.workspaceState.keys().forEach(key => { - context.workspaceState.update(key, undefined); - }); + const viewColumn = vscode.ViewColumn.One; this._panel = vscode.window.createWebviewPanel("WebviewLoader", "githru-view", viewColumn, { enableScripts: true, @@ -31,52 +26,55 @@ export default class WebviewLoader implements vscode.Disposable { const icon_path = vscode.Uri.file(path.join(this.extensionPath, "images", "logo.png")); this._panel.iconPath = icon_path; - + let analyzedData; this._panel.webview.onDidReceiveMessage(async (message: { command: string; payload?: string }) => { - const { command, payload } = message; - - if (command === "fetchAnalyzedData" || command === "refresh") { - const baseBranchName = (payload && JSON.parse(payload)) ?? (await fetchCurrentBranch()); - const storedAnalyzedData = context.workspaceState.get(`${ANALYZE_DATA_KEY}_${baseBranchName}`); - let analyzedData = storedAnalyzedData; - if (!storedAnalyzedData) { - console.log("No cache Data"); - console.log("baseBranchName : ",baseBranchName); - analyzedData = await fetchClusterNodes(baseBranchName); - context.workspaceState.update(`${ANALYZE_DATA_KEY}_${baseBranchName}`, analyzedData); - }else console.log("Cache data exists"); - - // 현재 캐싱된 Branch - console.log("Current Stored data"); - context.workspaceState.keys().forEach(key=>{ - console.log(key); - }) - - - const resMessage = { - command, - payload: analyzedData, - }; - - await this.respondToMessage(resMessage); - } + try { + const { command, payload } = message; + + if (command === "fetchAnalyzedData" || command === "refresh") { + const baseBranchName = (payload && JSON.parse(payload)) ?? (await fetchCurrentBranch()); + // Disable Cache temporarily + // const storedAnalyzedData = context.workspaceState.get(`${ANALYZE_DATA_KEY}_${baseBranchName}`); + + // if (!storedAnalyzedData) { + try { + analyzedData = await fetchClusterNodes(baseBranchName); + context.workspaceState.update(`${ANALYZE_DATA_KEY}_${baseBranchName}`, analyzedData); + + const resMessage = { + command, + payload: analyzedData, + }; + + await this.respondToMessage(resMessage); + } catch (e) { + console.error("Error fetching analyzed data:", e); + throw e; + } + } - if (command === "fetchBranchList") { - const branches = await fetchBranches(); - await this.respondToMessage({ - ...message, - payload: branches, - }); - } + if (command === "fetchBranchList") { + const branches = await fetchBranches(); + await this.respondToMessage({ + ...message, + payload: branches, + }); + } - if (command === "updatePrimaryColor") { - const colorCode = payload && JSON.parse(payload); - if (colorCode.primary) { - setPrimaryColor(colorCode.primary); + if (command === "updatePrimaryColor") { + const colorCode = payload && JSON.parse(payload); + if (colorCode.primary) { + setPrimaryColor(colorCode.primary); + } } + } catch (e) { + console.error("An error occurred while processing the webview message:", e); } }); - + if (!analyzedData) { + this.dispose(); + throw new Error("Project not connected to Git."); + } this._panel.webview.html = this.getWebviewContent(this._panel.webview); } From 507df624224c08e5650c6c23a2e13686ee3db228 Mon Sep 17 00:00:00 2001 From: DaYoung-woo <131967254+DaYoung-woo@users.noreply.github.com> Date: Sat, 31 Aug 2024 15:54:59 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=EB=88=84=EB=9D=BD=EB=90=9C=20=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/vscode/src/webview-loader.ts | 30 ++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/packages/vscode/src/webview-loader.ts b/packages/vscode/src/webview-loader.ts index 966d4a9e..2469a675 100644 --- a/packages/vscode/src/webview-loader.ts +++ b/packages/vscode/src/webview-loader.ts @@ -15,9 +15,14 @@ export default class WebviewLoader implements vscode.Disposable { fetcher: GithruFetcherMap ) { const { fetchClusterNodes, fetchBranches, fetchCurrentBranch } = fetcher; - const viewColumn = vscode.ViewColumn.One; + //캐시 초기화 + console.log("Initialize cache data"); + context.workspaceState.keys().forEach((key) => { + context.workspaceState.update(key, undefined); + }); + this._panel = vscode.window.createWebviewPanel("WebviewLoader", "githru-view", viewColumn, { enableScripts: true, retainContextWhenHidden: true, @@ -33,13 +38,24 @@ export default class WebviewLoader implements vscode.Disposable { if (command === "fetchAnalyzedData" || command === "refresh") { const baseBranchName = (payload && JSON.parse(payload)) ?? (await fetchCurrentBranch()); - // Disable Cache temporarily - // const storedAnalyzedData = context.workspaceState.get(`${ANALYZE_DATA_KEY}_${baseBranchName}`); - - // if (!storedAnalyzedData) { try { - analyzedData = await fetchClusterNodes(baseBranchName); - context.workspaceState.update(`${ANALYZE_DATA_KEY}_${baseBranchName}`, analyzedData); + const baseBranchName = (payload && JSON.parse(payload)) ?? (await fetchCurrentBranch()); + const storedAnalyzedData = context.workspaceState.get( + `${ANALYZE_DATA_KEY}_${baseBranchName}` + ); + let analyzedData = storedAnalyzedData; + if (!storedAnalyzedData) { + console.log("No cache Data"); + console.log("baseBranchName : ", baseBranchName); + analyzedData = await fetchClusterNodes(baseBranchName); + context.workspaceState.update(`${ANALYZE_DATA_KEY}_${baseBranchName}`, analyzedData); + } else console.log("Cache data exists"); + + // 현재 캐싱된 Branch + console.log("Current Stored data"); + context.workspaceState.keys().forEach((key) => { + console.log(key); + }); const resMessage = { command,