fix: preserve custom canvas skill tags on upgrade
This commit is contained in:
parent
164d9f97e7
commit
02772bc343
@ -224,18 +224,11 @@ export function normalizeCanvasSkillTags(value: unknown): CanvasSkillTag[] {
|
|||||||
|
|
||||||
function mergeCanvasSkillTagsWithDefaultUpdates(value: unknown): CanvasSkillTag[] {
|
function mergeCanvasSkillTagsWithDefaultUpdates(value: unknown): CanvasSkillTag[] {
|
||||||
const currentTags = normalizeCanvasSkillTags(value);
|
const currentTags = normalizeCanvasSkillTags(value);
|
||||||
const currentById = new Map(currentTags.map((tag) => [tag.id, tag]));
|
const currentIds = new Set(currentTags.map((tag) => tag.id));
|
||||||
const defaultIds = new Set(DEFAULT_CANVAS_SKILL_TAGS.map((tag) => tag.id));
|
const missingDefaultTags = DEFAULT_CANVAS_SKILL_TAGS.filter(
|
||||||
const merged: CanvasSkillTag[] = DEFAULT_CANVAS_SKILL_TAGS.map((defaultTag) => {
|
(defaultTag) => !currentIds.has(defaultTag.id)
|
||||||
const currentTag = currentById.get(defaultTag.id);
|
);
|
||||||
return currentTag?.iconUrl ? { ...defaultTag, iconUrl: currentTag.iconUrl } : defaultTag;
|
const merged: CanvasSkillTag[] = [...currentTags, ...missingDefaultTags];
|
||||||
});
|
|
||||||
|
|
||||||
currentTags.forEach((tag) => {
|
|
||||||
if (!defaultIds.has(tag.id)) {
|
|
||||||
merged.push(tag);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return normalizeCanvasSkillTags(merged);
|
return normalizeCanvasSkillTags(merged);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user