Skip to content

Commit 196c23e

Browse files
committed
Update chat preset migration to include deduplication logic and reset the migration ID
1 parent 96587e2 commit 196c23e

1 file changed

Lines changed: 28 additions & 1 deletion

File tree

‎apps/editor/src/migrations/migrate-merge-chat-presets.ts‎

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,30 @@
11
import * as vscode from 'vscode'
22
import { Logger } from '@shared/utils/logger'
33

4-
const MIGRATION_ID = 'merge-chat-presets-migration-202606095'
4+
const MIGRATION_ID = 'merge-chat-presets-migration-2026060951'
5+
6+
function arePresetsIdentical(p1: any, p2: any): boolean {
7+
const c1 = { ...p1 }
8+
const c2 = { ...p2 }
9+
delete c1.name
10+
delete c1.promptPrefix
11+
delete c1.promptSuffix
12+
delete c2.name
13+
delete c2.promptPrefix
14+
delete c2.promptSuffix
15+
16+
const stringify = (obj: any) => {
17+
if (!obj || typeof obj != 'object') return JSON.stringify(obj)
18+
const sortedKeys = Object.keys(obj).sort()
19+
const sortedObj: any = {}
20+
for (const key of sortedKeys) {
21+
sortedObj[key] = obj[key]
22+
}
23+
return JSON.stringify(sortedObj)
24+
}
25+
26+
return stringify(c1) == stringify(c2)
27+
}
528

629
export async function migrate_merge_chat_presets(
730
context: vscode.ExtensionContext
@@ -34,6 +57,10 @@ export async function migrate_merge_chat_presets(
3457
const base_name = preset.name?.trim()
3558
if (!base_name) continue
3659

60+
if (final_presets.some(existing => arePresetsIdentical(existing, preset))) {
61+
continue
62+
}
63+
3764
let name = base_name
3865
const match = base_name.match(/^(.*?)\s*\((\d+)\)$/)
3966
let prefix = base_name

0 commit comments

Comments
 (0)