fix(session-store): rename globalThis key collision between session-store and eterra-client

Both session-store.ts and eterra-client.ts used globalThis.__eterraSessionStore
but for completely different purposes (EterraSession vs Map<string, SessionEntry>).
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) <noreply@anthropic.com>
This commit is contained in:
Claude VM
2026-04-08 21:36:33 +03:00
parent 708e550d06
commit b356e70148
@@ -78,16 +78,16 @@ type SessionEntry = {
};
const globalStore = globalThis as {
__eterraSessionStore?: Map<string, SessionEntry>;
__eterraCleanupTimer?: ReturnType<typeof setInterval>;
__eterraClientCache?: Map<string, SessionEntry>;
__eterraClientCleanupTimer?: ReturnType<typeof setInterval>;
};
const sessionStore =
globalStore.__eterraSessionStore ?? new Map<string, SessionEntry>();
globalStore.__eterraSessionStore = sessionStore;
globalStore.__eterraClientCache ?? new Map<string, SessionEntry>();
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) {