valtech-components 2.0.752 → 2.0.754

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.
@@ -62,20 +62,24 @@ export declare class MessagingService {
62
62
  private readonly DEBUG_STORAGE_KEY;
63
63
  constructor(injector: Injector, config: ValtechFirebaseConfig, platformId: Object, ngZone: NgZone);
64
64
  /**
65
- * Obtiene la instancia de Messaging de forma perezosa.
66
- * Esto evita el error de APP_INITIALIZER de AngularFire.
67
- */
68
- /**
69
- * Obtiene la instancia de Messaging de forma async-safe.
65
+ * Obtiene la instancia de Messaging via Firebase SDK directo (NO AngularFire DI).
70
66
  *
71
- * Angular Fire requiere que `await isSupported()` (Firebase SDK) se haya
72
- * resuelto antes de inyectar `Messaging`. Si llamamos `injector.get(Messaging)`
73
- * antes de eso, AngularFire lanza:
74
- * "The APP_INITIALIZER that is 'making' isSupported() sync ... has not resolved"
67
+ * **Por qué no usamos `injector.get(Messaging)`:**
68
+ * AngularFire `provideMessaging` registra un APP_INITIALIZER que internamente
69
+ * resuelve `await isSupported()`. Si `injector.get(Messaging)` se llama antes
70
+ * que ese APP_INITIALIZER termine (ej. otros APP_INITIALIZER del cliente
71
+ * construyen AuthService → MessagingService → toca Messaging temprano),
72
+ * AngularFire lanza el error "APP_INITIALIZER ... has not resolved". Angular
73
+ * DI **cachea errores de factory** — una vez que falló, todos los
74
+ * `injector.get` siguientes retornan el mismo error cacheado. Retry loops
75
+ * no funcionan.
75
76
  *
76
- * Por eso esta función:
77
- * 1. Cachea el resultado de `fcmIsSupported()` (Firebase SDK web check).
78
- * 2. Solo después de await, intenta `injector.get(Messaging)`.
77
+ * **Workaround:** bypass AngularFire entirely y usar Firebase SDK directo
78
+ * (`firebase/messaging.getMessaging(getApp())`). AngularFire es un wrapper
79
+ * sobre el mismo SDK la instancia que obtenemos es funcionalmente idéntica.
80
+ * `getApp()` retorna la default Firebase app inicializada por
81
+ * `provideFirebaseApp(() => initializeApp(config.firebase))`. Si por alguna
82
+ * razón no está inicializada aún, hacemos initializeApp idempotente.
79
83
  */
80
84
  private fcmSupportPromise?;
81
85
  private getMessagingInstance;
package/lib/version.d.ts CHANGED
@@ -2,4 +2,4 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export declare const VERSION = "2.0.752";
5
+ export declare const VERSION = "2.0.754";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valtech-components",
3
- "version": "2.0.752",
3
+ "version": "2.0.754",
4
4
  "private": false,
5
5
  "bin": {
6
6
  "valtech-firebase-config": "./src/lib/services/firebase/scripts/generate-sw-config.js"