diff --git a/src/extension.ts b/src/extension.ts index a4079ba..9abe301 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -18,8 +18,15 @@ export function activate(context: vscode.ExtensionContext) { ) ); - // 自动打开聊天面板 - vscode.commands.executeCommand("ic-coder.openChat"); + // 检查登录状态,如果已登录则自动打开聊天面板 + vscode.authentication.getSession("iccoder", [], { createIfNone: false }) + .then((session) => { + if (session) { + vscode.commands.executeCommand("ic-coder.openChat"); + } + }, () => { + // 未登录,不做任何操作 + }); // 注册命令:打开助手面板 const openPanelCommand = vscode.commands.registerCommand( diff --git a/src/panels/ICHelperPanel.ts b/src/panels/ICHelperPanel.ts index e85198c..f9d227e 100644 --- a/src/panels/ICHelperPanel.ts +++ b/src/panels/ICHelperPanel.ts @@ -21,6 +21,26 @@ export async function showICHelperPanel( context: vscode.ExtensionContext, viewColumn?: vscode.ViewColumn ) { + // 检查用户是否已登录 + try { + const session = await vscode.authentication.getSession("iccoder", [], { createIfNone: false }); + if (!session) { + vscode.window.showWarningMessage("请先登录后再使用 IC Coder", "立即登录").then((selection) => { + if (selection === "立即登录") { + vscode.commands.executeCommand("ic-coder.login"); + } + }); + return; + } + } catch (error) { + vscode.window.showWarningMessage("请先登录后再使用 IC Coder", "立即登录").then((selection) => { + if (selection === "立即登录") { + vscode.commands.executeCommand("ic-coder.login"); + } + }); + return; + } + // 创建WebView面板 const panel = vscode.window.createWebviewPanel( "icCoder", // 面板ID diff --git a/src/services/icCoderAuthProvider.ts b/src/services/icCoderAuthProvider.ts index 02d56b0..05c8a3c 100644 --- a/src/services/icCoderAuthProvider.ts +++ b/src/services/icCoderAuthProvider.ts @@ -49,8 +49,8 @@ export class ICCoderAuthenticationProvider */ async getSessions( scopes?: readonly string[] - ): Promise { - return this._sessions; + ): Promise { + return [...this._sessions]; } /**