valtech-components 2.0.827 → 2.0.828
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/services/auth/auth.service.mjs +46 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +46 -1
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/services/auth/auth.service.d.ts +18 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -53,7 +53,7 @@ import 'prismjs/components/prism-json';
|
|
|
53
53
|
* Current version of valtech-components.
|
|
54
54
|
* This is automatically updated during the publish process.
|
|
55
55
|
*/
|
|
56
|
-
const VERSION = '2.0.
|
|
56
|
+
const VERSION = '2.0.828';
|
|
57
57
|
|
|
58
58
|
/**
|
|
59
59
|
* Servicio para gestionar presets de componentes.
|
|
@@ -24626,6 +24626,14 @@ class AuthService {
|
|
|
24626
24626
|
}
|
|
24627
24627
|
// 3. Iniciar timer de refresco proactivo
|
|
24628
24628
|
this.startRefreshTimer();
|
|
24629
|
+
// 4. Re-establecer la sesión de Firebase en bootstrap.
|
|
24630
|
+
// El access token sigue válido, así que NO pasamos por la rama de
|
|
24631
|
+
// refresh — pero la persistencia IndexedDB propia de Firebase Auth no
|
|
24632
|
+
// sobrevive el contenedor de storage de una PWA standalone en iOS.
|
|
24633
|
+
// Sin esto, `firebaseAuthReady` se queda en `false` para siempre y
|
|
24634
|
+
// cualquier listener Firestore (ej. el inbox de notificaciones) cuelga.
|
|
24635
|
+
// Fire-and-forget: NO debe demorar el resolve de initialize().
|
|
24636
|
+
void this.ensureFirebaseSessionOnBootstrap();
|
|
24629
24637
|
}
|
|
24630
24638
|
else if (storedState.refreshToken) {
|
|
24631
24639
|
// 4. Token expirado pero hay refresh token - intentar refrescar
|
|
@@ -25402,6 +25410,43 @@ class AuthService {
|
|
|
25402
25410
|
console.warn('[ValtechAuth] Firebase signout failed:', error);
|
|
25403
25411
|
}
|
|
25404
25412
|
}
|
|
25413
|
+
/**
|
|
25414
|
+
* Re-establece la sesión de Firebase Auth en el bootstrap de la app cuando
|
|
25415
|
+
* el access token de la app sigue válido (la rama de initialize() que NO
|
|
25416
|
+
* pasa por refresh).
|
|
25417
|
+
*
|
|
25418
|
+
* Firebase Auth mantiene su PROPIA sesión con persistencia IndexedDB
|
|
25419
|
+
* independiente del storage de tokens de la app. En un navegador normal esa
|
|
25420
|
+
* persistencia se auto-restaura sola; en una PWA standalone en iOS el
|
|
25421
|
+
* contenedor de storage no sobrevive, y `firebaseAuthReady` se queda en
|
|
25422
|
+
* `false` indefinidamente → los listeners Firestore cuelgan (~40s timeout).
|
|
25423
|
+
*
|
|
25424
|
+
* Estrategia: dar una ventana corta a la auto-restauración de Firebase y, si
|
|
25425
|
+
* no ocurre, forzar un `refreshAccessToken()` — que ya hace `signInWithFirebase`
|
|
25426
|
+
* con el `firebaseToken` que devuelve `/refresh`.
|
|
25427
|
+
*
|
|
25428
|
+
* Fire-and-forget: se invoca con `void` para no demorar `initialize()`.
|
|
25429
|
+
*/
|
|
25430
|
+
async ensureFirebaseSessionOnBootstrap() {
|
|
25431
|
+
if (!this.config.enableFirebaseIntegration || !this.firebaseService)
|
|
25432
|
+
return;
|
|
25433
|
+
// Dar a la persistencia IndexedDB propia de Firebase Auth una oportunidad
|
|
25434
|
+
// de auto-restaurarse (navegador normal). En una PWA standalone de iOS
|
|
25435
|
+
// normalmente NO lo hará.
|
|
25436
|
+
await new Promise(r => setTimeout(r, 2500));
|
|
25437
|
+
if (this.firebaseService.firebaseAuthReady()) {
|
|
25438
|
+
console.log('[FBAuth] bootstrap — Firebase session restored on its own');
|
|
25439
|
+
return;
|
|
25440
|
+
}
|
|
25441
|
+
console.log('[FBAuth] bootstrap — session valid but Firebase NOT ready → refreshing to re-establish');
|
|
25442
|
+
try {
|
|
25443
|
+
// refreshAccessToken() ya llama signInWithFirebase() en éxito.
|
|
25444
|
+
await firstValueFrom(this.refreshAccessToken());
|
|
25445
|
+
}
|
|
25446
|
+
catch (e) {
|
|
25447
|
+
console.warn('[FBAuth] bootstrap — refresh to re-establish Firebase failed:', e);
|
|
25448
|
+
}
|
|
25449
|
+
}
|
|
25405
25450
|
// =============================================
|
|
25406
25451
|
// DEVICE REGISTRATION (Push Notifications)
|
|
25407
25452
|
// =============================================
|