diff --git a/src/extension.ts b/src/extension.ts index 171268f..083360b 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -11,10 +11,13 @@ import { isTokenExpired } from "./utils/jwtUtils"; import { NotificationService } from "./services/notificationService"; import { InvitationService } from "./services/invitationService"; import { ICCoderCodeActionProvider } from "./providers/codeActionProvider"; +import { initializeContextHelper } from "./panels/helpers/contextHelper"; export async function activate(context: vscode.ExtensionContext) { console.log("🎉 IC Coder 插件已激活!"); + initializeContextHelper(context); + // 创建装饰类型(代码旁边的提示) const decorationType = vscode.window.createTextEditorDecorationType({ after: { diff --git a/src/panels/ICHelperPanel.ts b/src/panels/ICHelperPanel.ts index bf31d94..0e42ba7 100644 --- a/src/panels/ICHelperPanel.ts +++ b/src/panels/ICHelperPanel.ts @@ -13,6 +13,7 @@ import { setupBalanceUpdateCallback, } from "./helpers/userInfoHelper"; import { handleWebviewMessage } from "./helpers/messageRouter"; +import { getDocumentSets } from "./helpers/contextHelper"; function getIconUris( webview: vscode.Webview, @@ -123,6 +124,13 @@ export async function showICHelperPanel( await sendUserInfoToWebview(panel, context); setupBalanceUpdateCallback(panel, context); + setTimeout(() => { + panel.webview.postMessage({ + command: "documentSetSaved", + documentSets: getDocumentSets(), + }); + }, 500); + const pendingMessage = context.globalState.get("pendingMessage") as any; if (pendingMessage) { await context.globalState.update("pendingMessage", undefined); diff --git a/src/panels/helpers/contextHelper.ts b/src/panels/helpers/contextHelper.ts index 58b9a86..96cb569 100644 --- a/src/panels/helpers/contextHelper.ts +++ b/src/panels/helpers/contextHelper.ts @@ -6,6 +6,13 @@ */ import * as vscode from "vscode"; +let globalContext: vscode.ExtensionContext; + +export function initializeContextHelper(context: vscode.ExtensionContext) { + globalContext = context; + loadDocumentSets(); +} + export async function handleAddContextFile(panel: vscode.WebviewPanel) { const workspaceFolder = vscode.workspace.workspaceFolders?.[0]; if (!workspaceFolder) { @@ -154,6 +161,7 @@ export function saveDocumentSet( updatedAt: new Date().toISOString(), }; documentSets.push(newDocSet); + persistDocumentSets(); panel.webview.postMessage({ command: "documentSetSaved", documentSets: documentSets, @@ -167,12 +175,24 @@ let documentSets: Array<{ updatedAt: string; }> = []; +function loadDocumentSets() { + const saved = globalContext.globalState.get("documentSets"); + if (saved) { + documentSets = saved; + } +} + +function persistDocumentSets() { + globalContext.globalState.update("documentSets", documentSets); +} + export function getDocumentSets() { return documentSets; } export function deleteDocumentSet(id: string, panel: vscode.WebviewPanel) { documentSets = documentSets.filter(ds => ds.id !== id); + persistDocumentSets(); panel.webview.postMessage({ command: "documentSetSaved", documentSets: documentSets,