From f05db6aa6d54549095370594b72c725642605f6b Mon Sep 17 00:00:00 2001 From: Nicolas Varrot Date: Fri, 13 Feb 2026 06:41:26 +0000 Subject: [PATCH] refactor: replace console.log with debug logger in gateway client WebSocket debug logs are now silent by default. Enable with: localStorage.setItem('pinchchat:debug', '1') Reduces console noise in production while keeping full debug visibility available for developers. --- src/lib/gateway.ts | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/lib/gateway.ts b/src/lib/gateway.ts index 817bac7..fc4ca39 100644 --- a/src/lib/gateway.ts +++ b/src/lib/gateway.ts @@ -1,5 +1,11 @@ import { genId } from './utils'; +/** Debug logger — enable with localStorage.setItem('pinchchat:debug', '1') */ +const isDebug = () => { + try { return localStorage.getItem('pinchchat:debug') === '1'; } catch { return false; } +}; +const log = (...args: unknown[]) => { if (isDebug()) console.log('[GW]', ...args); }; + /** JSON-safe payload type used for gateway messages. */ export type JsonPayload = Record; @@ -57,12 +63,12 @@ export class GatewayClient { this._onStatus('connecting'); this.ws = new WebSocket(this.wsUrl); - this.ws.onopen = () => { console.log('[GW] WS open'); }; + this.ws.onopen = () => { log('WS open'); }; this.ws.onmessage = (ev) => { let msg: GatewayMessage; - try { msg = JSON.parse(ev.data as string) as GatewayMessage; } catch { console.log('[GW] parse error', ev.data); return; } - console.log('[GW] msg:', msg.type, msg.event || msg.id || '', msg.ok); + try { msg = JSON.parse(ev.data as string) as GatewayMessage; } catch { log('parse error', ev.data); return; } + log('msg:', msg.type, msg.event || msg.id || '', msg.ok); if (msg.type === 'event') { if (msg.event === 'connect.challenge') { @@ -81,7 +87,7 @@ export class GatewayClient { }; this.ws.onclose = (ev) => { - console.log('[GW] WS close:', ev.code, ev.reason); + log('WS close:', ev.code, ev.reason); this.ws = null; this.connected = false; this._onStatus('disconnected'); @@ -90,7 +96,7 @@ export class GatewayClient { if (this.autoReconnect) this.scheduleReconnect(); }; - this.ws.onerror = (e) => { console.log('[GW] WS error', e); }; + this.ws.onerror = (e) => { log('WS error', e); }; } private handleChallenge() { @@ -108,12 +114,12 @@ export class GatewayClient { locale: navigator.language || 'en', userAgent: `pinchchat/${__APP_VERSION__}`, }).then((res) => { - console.log('[GW] connected!', res); + log('connected!', res); this.connected = true; this.reconnectAttempts = 0; this._onStatus('connected'); }).catch((err) => { - console.log('[GW] connect failed:', err); + log('connect failed:', err); this.autoReconnect = false; this.disconnect(); }); @@ -125,7 +131,7 @@ export class GatewayClient { const jitter = Math.random() * base * 0.3; const delay = base + jitter; this.reconnectAttempts++; - console.log(`[GW] reconnecting in ${Math.round(delay)}ms (attempt ${this.reconnectAttempts})`); + log(`reconnecting in ${Math.round(delay)}ms (attempt ${this.reconnectAttempts})`); this.reconnectTimer = setTimeout(() => { this.reconnectTimer = null; this.connect();