diff --git a/src/extension.ts b/src/extension.ts index 2f436d3..9cb3007 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -5,8 +5,6 @@ import { VCDViewerPanel, VCDViewerEditorProvider } from "./panels/VCDViewerPanel import { ChatHistoryManager } from "./utils/chatHistoryManager"; import { ICCoderAuthenticationProvider } from "./services/icCoderAuthProvider"; import { VCDFileServer } from "./services/vcdFileServer"; -import { initUserService } from "./services/userService"; -import { initCreditsService } from "./services/creditsService"; import { isTokenExpired } from "./utils/jwtUtils"; import { NotificationService } from "./services/notificationService"; import { InvitationService } from "./services/invitationService"; @@ -50,33 +48,26 @@ export async function activate(context: vscode.ExtensionContext) { const notificationService = NotificationService.getInstance(context); console.log('[Extension] 通知服务已初始化'); - // 【关键】在创建 AuthProvider 之前,先检查并清除过期的 session - const storedSessions = context.globalState.get('icCoderSessions', []); - console.log('[Extension] 检查 sessions 数量:', storedSessions.length); - - if (storedSessions.length > 0) { - const session = storedSessions[0]; - const token = session.accessToken; - console.log('[Extension] 检查 token 是否过期...'); - - if (token) { - const expired = isTokenExpired(token); - console.log('[Extension] token 过期检查结果:', expired); - - if (expired) { - // 必须等待清除完成后再创建 AuthProvider - await context.globalState.update('icCoderSessions', []); - await context.globalState.update('icCoderUserInfo', undefined); - console.log('[Extension] Token 已过期,已清除所有登录状态'); - } - } - } - - // 初始化用户服务 - initUserService(context); - - // 初始化 Credits 服务 - initCreditsService(context); + // 【已禁用】登录和 token 验证 - 无需登录即可使用 + // const storedSessions = context.globalState.get('icCoderSessions', []); + // console.log('[Extension] 检查 sessions 数量:', storedSessions.length); + // + // if (storedSessions.length > 0) { + // const session = storedSessions[0]; + // const token = session.accessToken; + // console.log('[Extension] 检查 token 是否过期...'); + // + // if (token) { + // const expired = isTokenExpired(token); + // console.log('[Extension] token 过期检查结果:', expired); + // + // if (expired) { + // await context.globalState.update('icCoderSessions', []); + // await context.globalState.update('icCoderUserInfo', undefined); + // console.log('[Extension] Token 已过期,已清除所有登录状态'); + // } + // } + // } // 初始化 VCD 文件服务器 const vcdFileServer = new VCDFileServer(context.extensionUri); @@ -91,25 +82,18 @@ export async function activate(context: vscode.ExtensionContext) { dispose: () => vcdFileServer.stop() }); - // 注册 Authentication Provider(此时 icCoderSessions 已经被清除) - const authProvider = new ICCoderAuthenticationProvider(context); - context.subscriptions.push( - vscode.authentication.registerAuthenticationProvider( - "iccoder", - "IC Coder", - authProvider - ) - ); + // 【已禁用】Authentication Provider 注册 - 无需登录 + // const authProvider = new ICCoderAuthenticationProvider(context); + // context.subscriptions.push( + // vscode.authentication.registerAuthenticationProvider( + // "iccoder", + // "IC Coder", + // authProvider + // ) + // ); - // 检查登录状态,如果已登录则自动打开聊天面板 - vscode.authentication.getSession("iccoder", [], { createIfNone: false }) - .then((session) => { - if (session) { - vscode.commands.executeCommand("ic-coder.openChat"); - } - }, () => { - // 未登录,不做任何操作 - }); + // 【已禁用】登录状态检查 - 直接打开聊天面板 + vscode.commands.executeCommand("ic-coder.openChat"); // 注册命令:打开助手面板 const openPanelCommand = vscode.commands.registerCommand( diff --git a/src/panels/ICHelperPanel.ts b/src/panels/ICHelperPanel.ts index ec28085..d86c193 100644 --- a/src/panels/ICHelperPanel.ts +++ b/src/panels/ICHelperPanel.ts @@ -22,46 +22,7 @@ import { compactDialog } from "../services/apiClient"; import { VCDViewerPanel } from "./VCDViewerPanel"; import { ChatHistoryManager } from "../utils/chatHistoryManager"; import { MessageType } from "../types/chatHistory"; -import { getCachedUserInfo } from "../services/userService"; import { isTokenExpired } from "../utils/jwtUtils"; -import { setBalanceUpdateCallback } from "../services/creditsService"; - -/** - * 获取会员等级图标 URI - */ -function getTierIconUri( - webview: vscode.Webview, - context: vscode.ExtensionContext, - tierCode?: string, -): string | undefined { - if (!tierCode) { - return undefined; - } - - const tierIconMap: Record = { - BASIC: "free.png", - TRIAL: "PRO-Try.png", - ADVANCED: "PRO.png", - PROFESSIONAL: "PRO+.png", - }; - - const iconFile = tierIconMap[tierCode]; - if (!iconFile) { - return undefined; - } - - const iconUri = webview.asWebviewUri( - vscode.Uri.joinPath( - context.extensionUri, - "dist", - "assets", - "titleIcon", - iconFile, - ), - ); - - return iconUri.toString(); -} /** * 创建并显示 IC 助手面板 @@ -70,63 +31,35 @@ export async function showICHelperPanel( context: vscode.ExtensionContext, viewColumn?: vscode.ViewColumn, ) { - // 检查 token 是否过期 - let token: string | undefined; - try { - const session = await vscode.authentication.getSession("iccoder", [], { - createIfNone: false, - }); - token = session?.accessToken; - } catch (error) { - console.warn("[ICHelperPanel] 获取 session 失败:", error); - } - - if (token && isTokenExpired(token)) { - // 清除过期的 session - await context.globalState.update("icCoderSessions", []); - await context.globalState.update("icCoderUserInfo", undefined); - - const action = await vscode.window.showWarningMessage( - "登录已过期,请重新登录", - "立即登录", - ); - if (action === "立即登录") { - vscode.commands.executeCommand("ic-coder.login", { - forceReauth: true, - }); - } - return; - } - - // 检查用户是否已登录 - 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", { - forceReauth: true, - }); - } - }); - return; - } - } catch (error) { - vscode.window - .showWarningMessage("请先登录后再使用 IC Coder", "立即登录") - .then((selection) => { - if (selection === "立即登录") { - vscode.commands.executeCommand("ic-coder.login", { - forceReauth: true, - }); - } - }); - return; - } + // 创建WebView面板 + // 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", { + // forceReauth: true, + // }); + // } + // }); + // return; + // } + // } catch (error) { + // vscode.window + // .showWarningMessage("请先登录后再使用 IC Coder", "立即登录") + // .then((selection) => { + // if (selection === "立即登录") { + // vscode.commands.executeCommand("ic-coder.login", { + // forceReauth: true, + // }); + // } + // }); + // return; + // } // 创建WebView面板 const panel = vscode.window.createWebviewPanel( @@ -230,81 +163,6 @@ export async function showICHelperPanel( logoUri.toString(), ); - // 获取并发送用户信息到 webview - try { - // 优先使用缓存的用户信息 - let userInfo = getCachedUserInfo(); - - if (userInfo) { - // 使用缓存的用户信息 - console.log("[ICHelperPanel] 使用缓存的用户信息:", userInfo); - console.log("[ICHelperPanel] Credits 余额:", userInfo.credits); - const tierIconUrl = getTierIconUri( - panel.webview, - context, - userInfo.membership?.tierCode, - ); - const messageData = { - command: "updateUserInfo", - userInfo: { - userId: userInfo.userId, - nickname: userInfo.nickname, - username: userInfo.username, - credits: userInfo.credits, - membership: userInfo.membership, - }, - tierIconUrl: tierIconUrl, - }; - console.log("[ICHelperPanel] 发送用户信息到前端:", messageData); - panel.webview.postMessage(messageData); - } else { - // 如果没有缓存,从 session 中获取 - const session = await vscode.authentication.getSession("iccoder", [], { - createIfNone: false, - }); - if (session) { - console.log( - "[ICHelperPanel] 从 session 获取用户信息, account:", - session.account, - ); - panel.webview.postMessage({ - command: "updateUserInfo", - userInfo: { - userId: session.account.id, - nickname: session.account.label, - username: session.account.label, - }, - }); - } - } - } catch (error) { - console.error("[ICHelperPanel] 获取用户信息失败:", error); - } - - // 设置余额更新回调 - setBalanceUpdateCallback((balance: number) => { - const userInfo = getCachedUserInfo(); - if (userInfo) { - userInfo.credits = balance; - const tierIconUrl = getTierIconUri( - panel.webview, - context, - userInfo.membership?.tierCode, - ); - panel.webview.postMessage({ - command: "updateUserInfo", - userInfo: { - userId: userInfo.userId, - nickname: userInfo.nickname, - username: userInfo.username, - credits: balance, - membership: userInfo.membership, - }, - tierIconUrl: tierIconUrl, - }); - } - }); - // 检查是否有待发送的消息 const pendingMessage = context.globalState.get("pendingMessage") as any; if (pendingMessage) { @@ -585,71 +443,17 @@ export async function showICHelperPanel( } break; case "checkInvitationCode": - // 检查邀请码验证状态 + // 【已禁用】检查邀请码验证状态 - 现在所有用户都可以直接使用 { - // 先检查是否是试用用户 - const { getCachedUserInfo } = require("../services/userService"); - const userInfo = getCachedUserInfo(); - - if (userInfo?.isPluginTrial === true) { - // 试用用户,跳过邀请码验证,直接返回已验证 - console.log("[ICHelperPanel] 试用用户,跳过邀请码验证"); - panel.webview.postMessage({ - command: "invitationCodeStatus", - verified: true, - }); - } else { - // 正式用户,检查邀请码 - const { - InvitationService, - } = require("../services/invitationService"); - const isVerified = await InvitationService.isVerified(context); - panel.webview.postMessage({ - command: "invitationCodeStatus", - verified: isVerified, - }); - } + // 直接返回已验证,无需登录和邀请码 + panel.webview.postMessage({ + command: "invitationCodeStatus", + verified: true, + }); } break; case "checkWelcomeModal": - // 检查是否需要显示欢迎弹窗 - { - console.log("[ICHelperPanel] 收到 checkWelcomeModal 消息"); - const userInfo = getCachedUserInfo(); - - console.log("[ICHelperPanel] 用户信息:", userInfo); - console.log("[ICHelperPanel] isPluginTrial:", userInfo?.isPluginTrial); - console.log("[ICHelperPanel] pluginTrialExpiresAt:", userInfo?.pluginTrialExpiresAt); - - if (userInfo?.isPluginTrial === true) { - // undefined 表示无效,不显示 - if (userInfo.pluginTrialExpiresAt === undefined) { - console.log("[ICHelperPanel] pluginTrialExpiresAt 未设置,不显示欢迎弹窗"); - break; - } - - // null 表示长期有效,显示弹窗 - // 有值则检查是否过期 - if (userInfo.pluginTrialExpiresAt !== null) { - const now = Date.now(); - const isExpired = now >= userInfo.pluginTrialExpiresAt; - console.log("[ICHelperPanel] 是否过期:", isExpired); - - if (isExpired) { - console.log("[ICHelperPanel] 试用已过期,不显示欢迎弹窗"); - break; - } - } - - // 未过期或长期有效(null),显示欢迎弹窗 - console.log("[ICHelperPanel] ✅ 发送 showWelcomeModal 命令到前端"); - panel.webview.postMessage({ - command: "showWelcomeModal", - }); - } else { - console.log("[ICHelperPanel] 非试用用户"); - } - } + // 【已禁用】检查是否需要显示欢迎弹窗 - 无需登录,不显示欢迎弹窗 break; case "checkTrialExpiration": // 检查试用期是否过期 @@ -664,37 +468,13 @@ export async function showICHelperPanel( } break; case "verifyInvitationCode": - // 验证邀请码 + // 【已禁用】验证邀请码 - 无需邀请码验证 { - const { - InvitationService, - } = require("../services/invitationService"); - const result = await InvitationService.verifyCode(message.code); - - if (result.success) { - // 验证成功,保存状态 - await InvitationService.saveVerificationStatus( - context, - message.code, - ); - panel.webview.postMessage({ - command: "invitationCodeVerified", - success: true, - }); - // 延迟显示欢迎弹窗,确保邀请码弹窗已关闭 - setTimeout(() => { - panel.webview.postMessage({ - command: "showNdtWelcomeModal", - }); - }, 300); - } else { - // 验证失败,返回错误信息 - panel.webview.postMessage({ - command: "invitationCodeVerified", - success: false, - message: result.message, - }); - } + // 直接返回验证成功 + panel.webview.postMessage({ + command: "invitationCodeVerified", + success: true, + }); } break; case "openICCoder": diff --git a/src/services/dialogService.ts b/src/services/dialogService.ts index 585e512..1e7c2c5 100644 --- a/src/services/dialogService.ts +++ b/src/services/dialogService.ts @@ -30,7 +30,6 @@ import type { import { submitToolConfirm, submitAnswer, stopDialog } from "./apiClient"; import { ChatHistoryManager } from "../utils/chatHistoryManager"; import { getUserIdFromToken, isTokenExpired } from "../utils/jwtUtils"; -import { updateCachedBalance } from "./creditsService"; /** * 消息段落类型 @@ -444,6 +443,7 @@ export class DialogSession { const expired = isTokenExpired(session.accessToken); if (expired === true) { console.error("[DialogSession] token 已过期,需要重新登录"); + /* vscode.window .showErrorMessage("登录已过期,请重新登录", "重新登录") .then((selection) => { @@ -453,6 +453,7 @@ export class DialogSession { }); } }); + */ throw new Error("登录已过期,请重新登录"); } @@ -899,6 +900,7 @@ export class DialogSession { data.message.includes("LOGIN_EXPIRED") || data.message.includes("登录状态已过期") ) { + /* vscode.window .showErrorMessage("登录状态已过期,请重新登录", "重新登录") .then((selection) => { @@ -908,6 +910,7 @@ export class DialogSession { }); } }); + */ // 登录过期错误已处理,不再传递给外部 return; } @@ -1017,8 +1020,9 @@ export class DialogSession { data.remainingCredits ); // 更新余额缓存 - updateCachedBalance(data.remainingCredits); + // updateCachedBalance(data.remainingCredits); // 资源点余额低于阈值时弹窗提醒 + /* const LOW_CREDIT_THRESHOLD = 5; if (data.remainingCredits < LOW_CREDIT_THRESHOLD) { vscode.window @@ -1030,13 +1034,13 @@ export class DialogSession { ) .then((selection) => { if (selection === "去充值") { - // 打开充值页面 vscode.env.openExternal( - vscode.Uri.parse("https://iccoder.com/recharge") + vscode.Uri.parse("https://iccoder.com/memberCenter") ); } }); } + */ }, onOpen: () => { diff --git a/src/services/icCoderAuthProvider.ts b/src/services/icCoderAuthProvider.ts index 244a01b..360067f 100644 --- a/src/services/icCoderAuthProvider.ts +++ b/src/services/icCoderAuthProvider.ts @@ -2,7 +2,6 @@ import * as vscode from "vscode"; import * as http from "http"; import * as path from "path"; import * as fs from "fs"; -import { onTokenReceived, type UserInfo, clearUserInfo } from "./userService"; import { getConfig } from "../config/settings"; import { resetInvitationVerification } from "./apiClient"; @@ -85,7 +84,7 @@ export class ICCoderAuthenticationProvider const oldSession = this._sessions[0]; this._sessions = []; await this.saveSessions(); - await clearUserInfo(); + // await clearUserInfo(); this._onDidChangeSessions.fire({ added: [], removed: [oldSession], @@ -97,15 +96,15 @@ export class ICCoderAuthenticationProvider const token = await this.login(); // 获取到 token 后立即调用用户信息接口 - const userInfo = await onTokenReceived(token); + // const userInfo = await onTokenReceived(token); // 创建会话 const session: vscode.AuthenticationSession = { id: this.generateSessionId(), accessToken: token, account: { - id: userInfo?.userId || "iccoder-user", - label: userInfo?.nickname || userInfo?.username || "IC Coder 用户", + id: "user", + label: "IC Coder User", }, scopes: [...scopes], }; @@ -158,7 +157,7 @@ export class ICCoderAuthenticationProvider await this.saveSessions(); // 3. 清除用户信息缓存 - await clearUserInfo(); + // await clearUserInfo(); // 4. 触发会话变化事件 this._onDidChangeSessions.fire({ @@ -182,14 +181,14 @@ export class ICCoderAuthenticationProvider */ async clearSessionsForRelogin(): Promise { if (this._sessions.length === 0) { - await clearUserInfo(); + // await clearUserInfo(); return; } const removed = [...this._sessions]; this._sessions = []; await this.saveSessions(); - await clearUserInfo(); + // await clearUserInfo(); this._onDidChangeSessions.fire({ added: [], diff --git a/src/services/userService.ts b/src/services/userService.ts index 3d335d1..25e90c0 100644 --- a/src/services/userService.ts +++ b/src/services/userService.ts @@ -335,43 +335,21 @@ export async function onTokenReceived(token: string): Promise { // 保存到持久化存储 await saveUserInfo(userInfo); - // 判断是否是插件试用用户 - console.log('[UserService] 检查用户类型,isPluginTrial:', userInfo.isPluginTrial); - console.log('[UserService] extensionContext 是否存在:', !!extensionContext); - - if (userInfo.isPluginTrial === true && userInfo.pluginTrialExpiresAt !== null && userInfo.pluginTrialExpiresAt !== undefined) { - // 检查是否过期 - const now = Date.now(); - const isExpired = now >= userInfo.pluginTrialExpiresAt; - console.log('[UserService] 试用到期时间:', new Date(userInfo.pluginTrialExpiresAt).toLocaleString()); - console.log('[UserService] 当前时间:', new Date(now).toLocaleString()); - console.log('[UserService] 是否过期:', isExpired); - - if (isExpired) { - // 已过期:显示邀请码弹窗 - console.log('[UserService] 试用已过期,将显示邀请码弹窗'); - } else { - // 未过期:显示欢迎弹窗 - const hasWelcomed = extensionContext?.globalState.get('pluginTrialWelcomed'); - console.log('[UserService] 是否已显示过欢迎弹窗:', hasWelcomed); - - if (!hasWelcomed && extensionContext) { - await extensionContext.globalState.update('showWelcomeModal', true); - await extensionContext.globalState.update('pluginTrialWelcomed', true); - console.log('[UserService] ✅ 已设置欢迎弹窗标记 showWelcomeModal=true'); - - const checkMark = extensionContext.globalState.get('showWelcomeModal'); - console.log('[UserService] 验证标记:', checkMark); - } else if (!extensionContext) { - console.error('[UserService] ❌ extensionContext 为 null,无法设置标记'); - } else { - console.log('[UserService] 已经显示过欢迎弹窗,跳过'); - } - } - } else { - // isPluginTrial=false 或 enterpriseTrialExpires 为 null:显示邀请码弹窗 - console.log('[UserService] 非试用用户或无过期时间,将显示邀请码弹窗'); - } + // 【已禁用】试用用户和欢迎弹窗逻辑 - 无需登录 + // if (userInfo.isPluginTrial === true && userInfo.pluginTrialExpiresAt !== null && userInfo.pluginTrialExpiresAt !== undefined) { + // const now = Date.now(); + // const isExpired = now >= userInfo.pluginTrialExpiresAt; + // if (isExpired) { + // console.log('[UserService] 试用已过期,将显示邀请码弹窗'); + // } else { + // const hasWelcomed = extensionContext?.globalState.get('pluginTrialWelcomed'); + // if (!hasWelcomed && extensionContext) { + // await extensionContext.globalState.update('showWelcomeModal', true); + // await extensionContext.globalState.update('pluginTrialWelcomed', true); + // console.log('[UserService] ✅ 已设置欢迎弹窗标记 showWelcomeModal=true'); + // } + // } + // } return userInfo; } catch (error) { diff --git a/src/utils/messageHandler.ts b/src/utils/messageHandler.ts index 919e88a..cb0a3d0 100644 --- a/src/utils/messageHandler.ts +++ b/src/utils/messageHandler.ts @@ -19,10 +19,6 @@ import { dialogManager, DialogSession } from "../services/dialogService"; import { userInteractionManager } from "../services/userInteraction"; import { healthCheck } from "../services/apiClient"; import { isTokenExpired } from "./jwtUtils"; -import { - checkBalanceBeforeSend, - fetchBalance, -} from "../services/creditsService"; import { optimizePrompt } from "../services/promptOptimizeService"; import { NotificationService } from "../services/notificationService"; import { TrialExpirationService } from "../services/trialExpirationService"; @@ -66,9 +62,9 @@ export async function handleUserMessage( ) { console.log("收到用户消息:", text); - // 检查 token 是否过期 + // 【已禁用】检查 token 是否过期 - 无需登录 const context = (panel as any).__context; - if (context) { + if (false && context) { // 从 session 中获取 token let token: string | undefined; try { @@ -112,7 +108,7 @@ export async function handleUserMessage( return; } - if (isTokenExpired(token)) { + if (token && isTokenExpired(token as string)) { console.warn("[MessageHandler] Token 已过期,阻止发送"); // 保存待发送的消息 @@ -128,6 +124,7 @@ export async function handleUserMessage( await context.globalState.update("icCoderUserInfo", undefined); // 显示弹窗提示 + /* const action = await vscode.window.showWarningMessage( "登录已过期,请重新登录", "立即登录", @@ -138,6 +135,7 @@ export async function handleUserMessage( forceReauth: true, }); } + */ // 恢复输入状态 panel.webview.postMessage({ @@ -189,29 +187,6 @@ export async function handleUserMessage( return; } - // 发送前检测余额 - const balanceCheck = await checkBalanceBeforeSend(); - if (!balanceCheck.allowed) { - console.warn("[MessageHandler] 余额不足,阻止发送:", balanceCheck.message); - // 显示错误提示 - const selection = await vscode.window.showWarningMessage( - balanceCheck.message || "资源点余额不足", - "去充值", - ); - if (selection === "去充值") { - vscode.env.openExternal( - vscode.Uri.parse("https://iccoder.com/memberCenter"), - ); - } - // 恢复输入状态 - panel.webview.postMessage({ - command: "updateSegments", - segments: [], - isComplete: true, - }); - return; - } - // 尝试使用后端服务 if (useBackendService && extensionPath) { try { @@ -360,17 +335,6 @@ async function handleUserMessageWithBackend( console.error("[MessageHandler] 保存AI响应历史失败:", error); } - // 对话完成后重新获取余额(因为已经消耗了 Credits) - try { - console.log("[MessageHandler] 对话完成,重新获取余额..."); - const newBalance = await fetchBalance(); - if (newBalance !== null) { - console.log("[MessageHandler] 余额已更新:", newBalance); - } - } catch (error) { - console.error("[MessageHandler] 获取余额失败:", error); - } - // 尝试更新面板(如果面板已关闭,这些操作会失败,但不影响数据保存) try { // 隐藏状态栏 diff --git a/src/views/ICViewProvider.ts b/src/views/ICViewProvider.ts index d2b90a4..e751b90 100644 --- a/src/views/ICViewProvider.ts +++ b/src/views/ICViewProvider.ts @@ -158,52 +158,21 @@ export class ICViewProvider implements vscode.WebviewViewProvider { private readonly extensionUri: vscode.Uri, private readonly context: vscode.ExtensionContext ) { - // 监听认证状态变化 - this.context.subscriptions.push( - vscode.authentication.onDidChangeSessions((e) => { - if (e.provider.id === "iccoder") { - this.refreshLoginStatus(); - } - }) - ); + // 【已禁用】监听认证状态变化 - 无需登录 } /** - * 刷新登录状态并更新视图 + * 【已禁用】刷新登录状态并更新视图 - 无需登录 */ private async refreshLoginStatus(): Promise { - if (this._view) { - const isLoggedIn = await this.checkLoginStatus(); - this._view.webview.html = this.getWebviewContent( - this._view.webview, - isLoggedIn - ); - } + // 无需刷新登录状态 } /** - * 检查登录状态(使用 Authentication API) + * 【已禁用】检查登录状态 - 无需登录 */ private async checkLoginStatus(): Promise { - try { - const session = await vscode.authentication.getSession("iccoder", [], { createIfNone: false }); - console.log("[ICViewProvider] 检查登录状态, session:", session ? "存在" : "不存在"); - if (!session) { - return false; - } - // 检查 token 是否过期 - const expired = isTokenExpired(session.accessToken); - console.log("[ICViewProvider] token 过期检查结果:", expired); - // 只有明确过期才认为未登录,无法判断时认为已登录 - if (expired === true) { - console.log("[ICViewProvider] Token 已过期"); - return false; - } - return true; - } catch (error) { - console.log("[ICViewProvider] 检查登录状态失败:", error); - return false; - } + return true; // 始终返回已登录状态 } resolveWebviewView(webviewView: vscode.WebviewView) { @@ -223,30 +192,8 @@ export class ICViewProvider implements vscode.WebviewViewProvider { console.log('[ICViewProvider] Webview options 已设置'); console.log('[ICViewProvider] extensionUri:', this.extensionUri.toString()); - // 【关键修复】先设置默认 HTML,避免一直加载 - try { - const html = this.getWebviewContent(webviewView.webview, false); - console.log('[ICViewProvider] HTML 内容已生成,长度:', html.length); - webviewView.webview.html = html; - console.log('[ICViewProvider] HTML 已设置到 webview'); - } catch (error) { - console.error('[ICViewProvider] 设置 HTML 失败:', error); - } - - // 异步检查登录状态并更新 UI - this.checkLoginStatus() - .then((isLoggedIn) => { - console.log('[ICViewProvider] 登录状态检查完成:', isLoggedIn); - webviewView.webview.html = this.getWebviewContent( - webviewView.webview, - isLoggedIn - ); - }) - .catch((error) => { - console.error('[ICViewProvider] 检查登录状态失败:', error); - // 即使失败也显示未登录状态 - webviewView.webview.html = this.getWebviewContent(webviewView.webview, false); - }); + // 【已禁用】登录检查 - 直接显示"开始使用"按钮 + webviewView.webview.html = this.getWebviewContent(webviewView.webview, true); // 处理侧边栏的消息 webviewView.webview.onDidReceiveMessage( @@ -338,7 +285,7 @@ export class ICViewProvider implements vscode.WebviewViewProvider { IC Coder

欢迎使用 IC Coder

${isLoggedIn - ? '' + ? '' : '' } diff --git a/src/views/conversationHistoryBar.ts b/src/views/conversationHistoryBar.ts index 880d9df..3951dc6 100644 --- a/src/views/conversationHistoryBar.ts +++ b/src/views/conversationHistoryBar.ts @@ -47,11 +47,7 @@ export function getConversationHistoryBarContent(): string { -