From 11ee8bddf780bc93992e127200a3aa09b6251d2d Mon Sep 17 00:00:00 2001 From: farion1231 Date: Fri, 26 Sep 2025 09:27:56 +0800 Subject: [PATCH] refactor: consolidate chatgpt.config cleanup logic Merged duplicate try-catch blocks that handle invalid chatgpt.config values. Now handles all edge cases (scalar values, arrays, empty objects) in a single unified check, reducing code duplication and improving performance by parsing JSON only once. --- src/utils/vscodeSettings.ts | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/utils/vscodeSettings.ts b/src/utils/vscodeSettings.ts index 09ed9b4..ccd5a86 100644 --- a/src/utils/vscodeSettings.ts +++ b/src/utils/vscodeSettings.ts @@ -68,16 +68,26 @@ export function removeManagedKeys(content: string): string { // 忽略删除失败 } - // 若 chatgpt.config 变为空对象,顺便移除(不影响其他 chatgpt* 键) + // 清理 chatgpt.config 的异常情况: + // 1. 早期遗留的标量值(字符串/数字/null等) + // 2. 空对象 + // 3. 数组类型 try { const data = parse(out) as any; const cfg = data?.["chatgpt.config"]; - if ( - cfg && - typeof cfg === "object" && - !Array.isArray(cfg) && - Object.keys(cfg).length === 0 - ) { + + // 需要清理的情况: + // - 标量值(null、字符串、数字等) + // - 数组 + // - 空对象 + const shouldRemove = cfg !== undefined && ( + cfg === null || + typeof cfg !== "object" || + Array.isArray(cfg) || + (typeof cfg === "object" && Object.keys(cfg).length === 0) + ); + + if (shouldRemove) { out = applyEdits( out, modify(out, ["chatgpt.config"], undefined, { formattingOptions: fmt }),