feat: 实现文档集持久化存储
- 在 extension.ts 中初始化 contextHelper
- 在 ICHelperPanel.ts 中加载已保存的文档集
- 在 contextHelper.ts 中实现持久化逻辑
- 使用 globalState 存储文档集数据
- 保存和删除时自动持久化
This commit is contained in:
@ -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: {
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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<typeof documentSets>("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,
|
||||
|
||||
Reference in New Issue
Block a user