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:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user