From b954ddcd7996583ca2843e26455e7449bd5decd5 Mon Sep 17 00:00:00 2001 From: simoleo89 Date: Sat, 13 Jun 2026 16:31:07 +0200 Subject: [PATCH] fix(session): refresh furni surfaces on live furnidata merge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mergeFurnitureDataFromUrl dispatched SESSION_DATA_UPDATED, which only drives the userData snapshot (useUserDataSnapshot) — and it was dispatched here WITHOUT invalidateUserDataSnapshot(), so the snapshot reference never changed and consumers bailed out: a no-op. The catalog / inventory / infostand furni name & description surfaces listen to the window event `nitro-localization-updated` (the same signal applyFurnidataDelta emits), which the merge never fired — so newly merged furnidata (e.g. custom/imported.json5 on catalog open) didn't refresh live. Dispatch `nitro-localization-updated` instead. --- packages/session/src/SessionDataManager.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/session/src/SessionDataManager.ts b/packages/session/src/SessionDataManager.ts index 687f3ea..74061ee 100644 --- a/packages/session/src/SessionDataManager.ts +++ b/packages/session/src/SessionDataManager.ts @@ -242,7 +242,12 @@ export class SessionDataManager implements ISessionDataManager const added = await this._furnitureData.mergeFromUrl(url); - if(added && added.length) GetEventDispatcher().dispatchEvent(new NitroEvent(NitroEventType.SESSION_DATA_UPDATED)); + // Refresh the furni name/desc surfaces (catalog, inventory, infostand) + // via the window event they actually listen to — same signal + // applyFurnidataDelta uses. SESSION_DATA_UPDATED only drives the userData + // snapshot and, dispatched here without invalidateUserDataSnapshot(), was + // a no-op (the snapshot ref never changed, so consumers bailed out). + if(added && added.length && (typeof window !== 'undefined')) window.dispatchEvent(new CustomEvent('nitro-localization-updated')); return added; }