From a7a255dab6a39abd337090291218e94030497a65 Mon Sep 17 00:00:00 2001 From: Hikari Date: Mon, 23 Mar 2026 18:18:59 -0700 Subject: [PATCH] fix: sort injected entries by canonical defaults order after sync --- apps/api/src/routes/debug.ts | 7 ++++ apps/web/src/components/game/debugPanel.tsx | 14 +++---- apps/web/src/context/gameContext.tsx | 44 ++++++++++----------- 3 files changed, 36 insertions(+), 29 deletions(-) diff --git a/apps/api/src/routes/debug.ts b/apps/api/src/routes/debug.ts index 7837be7..68ba744 100644 --- a/apps/api/src/routes/debug.ts +++ b/apps/api/src/routes/debug.ts @@ -533,6 +533,13 @@ const injectMissingEntries = ( added = added + 1; } } + const defaultOrder = new Map(defaults.map((item, index) => { + return [ item.id, index ] as const; + })); + existing.sort((itemA, itemB) => { + return (defaultOrder.get(itemA.id) ?? Number.MAX_SAFE_INTEGER) + - (defaultOrder.get(itemB.id) ?? Number.MAX_SAFE_INTEGER); + }); return added; }; diff --git a/apps/web/src/components/game/debugPanel.tsx b/apps/web/src/components/game/debugPanel.tsx index 80a1f97..7643418 100644 --- a/apps/web/src/components/game/debugPanel.tsx +++ b/apps/web/src/components/game/debugPanel.tsx @@ -13,14 +13,14 @@ import { ConfirmationModal } from "../ui/confirmationModal.js"; type ActiveModal = "force-unlocks" | "hard-reset" | "sync-new-content" | null; interface SyncNewContentResult { - achievementsAdded: number; - adventurersAdded: number; - bossesAdded: number; - equipmentAdded: number; + achievementsAdded: number; + adventurersAdded: number; + bossesAdded: number; + equipmentAdded: number; explorationAreasAdded: number; - questsAdded: number; - upgradesAdded: number; - zonesAdded: number; + questsAdded: number; + upgradesAdded: number; + zonesAdded: number; } /** diff --git a/apps/web/src/context/gameContext.tsx b/apps/web/src/context/gameContext.tsx index 684ccda..4d43328 100644 --- a/apps/web/src/context/gameContext.tsx +++ b/apps/web/src/context/gameContext.tsx @@ -580,14 +580,14 @@ interface GameContextValue { * @returns Counts of what was added per content type. */ syncNewContent: ()=> Promise<{ - achievementsAdded: number; - adventurersAdded: number; - bossesAdded: number; - equipmentAdded: number; + achievementsAdded: number; + adventurersAdded: number; + bossesAdded: number; + equipmentAdded: number; explorationAreasAdded: number; - questsAdded: number; - upgradesAdded: number; - zonesAdded: number; + questsAdded: number; + upgradesAdded: number; + zonesAdded: number; }>; /** @@ -2176,14 +2176,14 @@ export const GameProvider = ({ localStorage.setItem("elysium_save_signature", data.signature); } return { - achievementsAdded: data.achievementsAdded, - adventurersAdded: data.adventurersAdded, - bossesAdded: data.bossesAdded, - equipmentAdded: data.equipmentAdded, + achievementsAdded: data.achievementsAdded, + adventurersAdded: data.adventurersAdded, + bossesAdded: data.bossesAdded, + equipmentAdded: data.equipmentAdded, explorationAreasAdded: data.explorationAreasAdded, - questsAdded: data.questsAdded, - upgradesAdded: data.upgradesAdded, - zonesAdded: data.zonesAdded, + questsAdded: data.questsAdded, + upgradesAdded: data.upgradesAdded, + zonesAdded: data.zonesAdded, }; } catch (error_: unknown) { setError( @@ -2192,14 +2192,14 @@ export const GameProvider = ({ : "Failed to sync new content", ); return { - achievementsAdded: 0, - adventurersAdded: 0, - bossesAdded: 0, - equipmentAdded: 0, + achievementsAdded: 0, + adventurersAdded: 0, + bossesAdded: 0, + equipmentAdded: 0, explorationAreasAdded: 0, - questsAdded: 0, - upgradesAdded: 0, - zonesAdded: 0, + questsAdded: 0, + upgradesAdded: 0, + zonesAdded: 0, }; } }, []); @@ -2304,6 +2304,7 @@ export const GameProvider = ({ startQuest, state, syncError, + syncNewContent, toggleAutoAdventurer, toggleAutoBoss, toggleAutoPrestige, @@ -2313,7 +2314,6 @@ export const GameProvider = ({ unlockedAchievements, unlockedCodexEntryIds, unlockedStoryChapterIds, - syncNewContent, }; }, [ apotheosis,