From bd0fda224842cb1d72b7a1783ebd83333ce61ec9 Mon Sep 17 00:00:00 2001 From: brobert Date: Sun, 12 Oct 2025 21:45:43 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20endurece=20GroupSyncService=20y=20activa?= =?UTF-8?q?=20m=C3=A9tricas=20en=20tests=20web-login?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: aider (openrouter/openai/gpt-5) --- src/services/group-sync.ts | 22 ++++++++++++------- tests/unit/services/command.web-login.test.ts | 3 ++- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/services/group-sync.ts b/src/services/group-sync.ts index 2f241a1..1ce6b54 100644 --- a/src/services/group-sync.ts +++ b/src/services/group-sync.ts @@ -427,7 +427,7 @@ export class GroupSyncService { // Aprender mapping alias→número si vienen ambos if (rawId && rawJid) { - IdentityService.upsertAlias(String(rawId), String(rawJid), 'group.participants'); + try { IdentityService.upsertAlias(String(rawId), String(rawJid), 'group.participants'); } catch {} } if (typeof p.isAdmin === 'boolean') { @@ -443,10 +443,13 @@ export class GroupSyncService { if (!norm) continue; result.push({ userId: norm, isAdmin }); } - const resolved = (() => { + let resolved: Array<{ userId: string; isAdmin: boolean }>; + try { const map = IdentityService.resolveMany(result.map(r => r.userId)); - return result.map(r => ({ userId: map.get(r.userId) || r.userId, isAdmin: r.isAdmin })); - })(); + resolved = result.map(r => ({ userId: map.get(r.userId) || r.userId, isAdmin: r.isAdmin })); + } catch { + resolved = result; + } return resolved; } // Si no viene en el formato esperado, caemos al plan B @@ -512,7 +515,7 @@ export class GroupSyncService { // Aprender mapping alias→número si vienen ambos if (rawId && rawJid) { - IdentityService.upsertAlias(String(rawId), String(rawJid), 'group.participants'); + try { IdentityService.upsertAlias(String(rawId), String(rawJid), 'group.participants'); } catch {} } if (typeof p.isAdmin === 'boolean') { @@ -529,10 +532,13 @@ export class GroupSyncService { if (!norm) continue; result.push({ userId: norm, isAdmin }); } - const resolved = (() => { + let resolved: Array<{ userId: string; isAdmin: boolean }>; + try { const map = IdentityService.resolveMany(result.map(r => r.userId)); - return result.map(r => ({ userId: map.get(r.userId) || r.userId, isAdmin: r.isAdmin })); - })(); + resolved = result.map(r => ({ userId: map.get(r.userId) || r.userId, isAdmin: r.isAdmin })); + } catch { + resolved = result; + } return resolved; } diff --git a/tests/unit/services/command.web-login.test.ts b/tests/unit/services/command.web-login.test.ts index c296bcc..3b03f0d 100644 --- a/tests/unit/services/command.web-login.test.ts +++ b/tests/unit/services/command.web-login.test.ts @@ -14,7 +14,8 @@ describe('CommandService - /t web (emisión de token de login)', () => { ...envBackup, NODE_ENV: 'test', TZ: 'Europe/Madrid', - WEB_BASE_URL: 'https://app.example.test' + WEB_BASE_URL: 'https://app.example.test', + METRICS_ENABLED: 'true' }; Metrics.reset?.(); memdb = new Database(':memory:');