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.
This commit is contained in:
farion1231
2025-09-26 09:27:56 +08:00
parent 186c361a79
commit 11ee8bddf7

View File

@@ -68,16 +68,26 @@ export function removeManagedKeys(content: string): string {
// 忽略删除失败 // 忽略删除失败
} }
// chatgpt.config 变为空对象,顺便移除(不影响其他 chatgpt* 键) // 清理 chatgpt.config 的异常情况:
// 1. 早期遗留的标量值(字符串/数字/null等
// 2. 空对象
// 3. 数组类型
try { try {
const data = parse(out) as any; const data = parse(out) as any;
const cfg = data?.["chatgpt.config"]; const cfg = data?.["chatgpt.config"];
if (
cfg && // 需要清理的情况:
typeof cfg === "object" && // - 标量值null、字符串、数字等
!Array.isArray(cfg) && // - 数组
Object.keys(cfg).length === 0 // - 空对象
) { 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 = applyEdits(
out, out,
modify(out, ["chatgpt.config"], undefined, { formattingOptions: fmt }), modify(out, ["chatgpt.config"], undefined, { formattingOptions: fmt }),