From b356e70148d865f15f5b64922451d2f688bf3466 Mon Sep 17 00:00:00 2001 From: Claude VM Date: Wed, 8 Apr 2026 21:36:33 +0300 Subject: [PATCH] fix(session-store): rename globalThis key collision between session-store and eterra-client MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both session-store.ts and eterra-client.ts used globalThis.__eterraSessionStore but for completely different purposes (EterraSession vs Map). The Map from eterra-client made getSessionStatus() report connected: true on server start (Map is truthy), while getSessionCredentials() returned undefined username/password — causing "Credentiale lipsa" on sync attempts despite the UI showing a green "Conectat" dot. Renamed eterra-client's global keys to __eterraClientCache and __eterraClientCleanupTimer to eliminate the collision. Co-Authored-By: Claude Opus 4.6 (1M context) --- src/modules/parcel-sync/services/eterra-client.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/modules/parcel-sync/services/eterra-client.ts b/src/modules/parcel-sync/services/eterra-client.ts index 9734ed0..e0c01b7 100644 --- a/src/modules/parcel-sync/services/eterra-client.ts +++ b/src/modules/parcel-sync/services/eterra-client.ts @@ -78,16 +78,16 @@ type SessionEntry = { }; const globalStore = globalThis as { - __eterraSessionStore?: Map; - __eterraCleanupTimer?: ReturnType; + __eterraClientCache?: Map; + __eterraClientCleanupTimer?: ReturnType; }; const sessionStore = - globalStore.__eterraSessionStore ?? new Map(); -globalStore.__eterraSessionStore = sessionStore; + globalStore.__eterraClientCache ?? new Map(); +globalStore.__eterraClientCache = sessionStore; // Periodic cleanup of expired sessions (every 5 minutes, 9-min TTL) -if (!globalStore.__eterraCleanupTimer) { - globalStore.__eterraCleanupTimer = setInterval(() => { +if (!globalStore.__eterraClientCleanupTimer) { + globalStore.__eterraClientCleanupTimer = setInterval(() => { const now = Date.now(); for (const [key, entry] of sessionStore.entries()) { if (now - entry.lastUsed > 9 * 60_000) {