From 60b80beb7cc6adbfd474c5d44ec1713a18ae40dc Mon Sep 17 00:00:00 2001 From: Johnny McQuade Date: Fri, 17 Jan 2025 18:41:16 +0000 Subject: [PATCH 1/5] fix: allow firebase auth to be enabled independent of crashlytics --- packages/data-models/deployment.model.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/data-models/deployment.model.ts b/packages/data-models/deployment.model.ts index 776b3771e..43d2dd815 100644 --- a/packages/data-models/deployment.model.ts +++ b/packages/data-models/deployment.model.ts @@ -62,6 +62,9 @@ export interface IDeploymentRuntimeConfig { /** Enables app crash reports to firebase crashlytics */ enabled: boolean; }; + auth: { + enabled: boolean; + }; }; /** Friendly name used to identify the deployment name */ name: string; From 3f6340b2aedfec336eb51591f3c2afe2c93a3e2f Mon Sep 17 00:00:00 2001 From: Johnny McQuade Date: Fri, 17 Jan 2025 19:18:29 +0000 Subject: [PATCH 2/5] chore: set deployment default for firebase.auth.enabled --- packages/data-models/deployment.model.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/data-models/deployment.model.ts b/packages/data-models/deployment.model.ts index 43d2dd815..7bb72ced3 100644 --- a/packages/data-models/deployment.model.ts +++ b/packages/data-models/deployment.model.ts @@ -210,6 +210,7 @@ export const DEPLOYMENT_RUNTIME_CONFIG_DEFAULTS: IDeploymentRuntimeConfig = { firebase: { config: null, crashlytics: { enabled: true }, + auth: { enabled: false }, }, supabase: { enabled: false, From 06496ac32f4c1407e7e3c126c2ee99e5ced1a2e4 Mon Sep 17 00:00:00 2001 From: Johnny McQuade Date: Sun, 19 Jan 2025 15:58:59 +0000 Subject: [PATCH 3/5] chore: revert chages to deployment model --- packages/data-models/deployment.model.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/data-models/deployment.model.ts b/packages/data-models/deployment.model.ts index 7bb72ced3..776b3771e 100644 --- a/packages/data-models/deployment.model.ts +++ b/packages/data-models/deployment.model.ts @@ -62,9 +62,6 @@ export interface IDeploymentRuntimeConfig { /** Enables app crash reports to firebase crashlytics */ enabled: boolean; }; - auth: { - enabled: boolean; - }; }; /** Friendly name used to identify the deployment name */ name: string; @@ -210,7 +207,6 @@ export const DEPLOYMENT_RUNTIME_CONFIG_DEFAULTS: IDeploymentRuntimeConfig = { firebase: { config: null, crashlytics: { enabled: true }, - auth: { enabled: false }, }, supabase: { enabled: false, From 9dc5f017d3986a4c9d75c3f75e0bae5613d46b7a Mon Sep 17 00:00:00 2001 From: Johnny McQuade Date: Sun, 19 Jan 2025 15:59:31 +0000 Subject: [PATCH 4/5] chore: enable firebase if and only if firebase config provided --- src/app/shared/services/firebase/firebase.service.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/app/shared/services/firebase/firebase.service.ts b/src/app/shared/services/firebase/firebase.service.ts index e8ca57e73..4015d7765 100644 --- a/src/app/shared/services/firebase/firebase.service.ts +++ b/src/app/shared/services/firebase/firebase.service.ts @@ -20,14 +20,11 @@ export class FirebaseService extends SyncServiceBase { private initialise() { const { firebase } = this.deploymentService.config; - // Check if any services are enabled, simply return if not - const enabledServices = Object.entries(firebase) - .filter(([key, v]) => v && v.constructor === {}.constructor && v["enabled"]) - .map(([key]) => key); - if (enabledServices.length === 0) return; - - // Check config exists if services are enabled + // If no firebase config is provided, do not initialise Firebase app and provide warning if (!firebase.config) { + const enabledServices = Object.entries(firebase) + .filter(([key, v]) => v && v.constructor === {}.constructor && v["enabled"]) + .map(([key]) => key); console.warn(`[Firebase] config missing, services disabled:\n`, enabledServices.join(", ")); return; } From ab113399598a709b1e0d1b20e12a4b383abff7ac Mon Sep 17 00:00:00 2001 From: chrismclarke Date: Sun, 2 Feb 2025 16:33:01 -0800 Subject: [PATCH 5/5] chore: code tidying --- packages/data-models/deployment.model.ts | 14 +++++--------- .../shared/services/firebase/firebase.service.ts | 14 ++++++++------ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/packages/data-models/deployment.model.ts b/packages/data-models/deployment.model.ts index 776b3771e..d1c1f4005 100644 --- a/packages/data-models/deployment.model.ts +++ b/packages/data-models/deployment.model.ts @@ -3,7 +3,7 @@ import type { IGdriveEntry } from "../@idemsInternational/gdrive-tools"; import type { IAppConfig, IAppConfigOverride } from "./appConfig"; /** Update version to force recompile next time deployment set (e.g. after default config update) */ -export const DEPLOYMENT_CONFIG_VERSION = 20241215.1; +export const DEPLOYMENT_CONFIG_VERSION = 20250202.0; /** Configuration settings available to runtime application */ export interface IDeploymentRuntimeConfig { @@ -46,9 +46,9 @@ export interface IDeploymentRuntimeConfig { /** * Specify if using firebase for auth and crashlytics. * Requires firebase config available through encrypted config */ - firebase: { + firebase?: { /** Project config as specified in firebase console (recommend loading from encrypted environment) */ - config?: { + config: { apiKey: string; authDomain: string; databaseURL: string; @@ -58,8 +58,8 @@ export interface IDeploymentRuntimeConfig { appId: string; measurementId: string; }; - crashlytics: { - /** Enables app crash reports to firebase crashlytics */ + /** Configure app crash reports to firebase crashlytics */ + crashlytics?: { enabled: boolean; }; }; @@ -204,10 +204,6 @@ export const DEPLOYMENT_RUNTIME_CONFIG_DEFAULTS: IDeploymentRuntimeConfig = { }, app_config: {}, auth: {}, - firebase: { - config: null, - crashlytics: { enabled: true }, - }, supabase: { enabled: false, }, diff --git a/src/app/shared/services/firebase/firebase.service.ts b/src/app/shared/services/firebase/firebase.service.ts index 4015d7765..8832669ba 100644 --- a/src/app/shared/services/firebase/firebase.service.ts +++ b/src/app/shared/services/firebase/firebase.service.ts @@ -20,12 +20,14 @@ export class FirebaseService extends SyncServiceBase { private initialise() { const { firebase } = this.deploymentService.config; - // If no firebase config is provided, do not initialise Firebase app and provide warning - if (!firebase.config) { - const enabledServices = Object.entries(firebase) - .filter(([key, v]) => v && v.constructor === {}.constructor && v["enabled"]) - .map(([key]) => key); - console.warn(`[Firebase] config missing, services disabled:\n`, enabledServices.join(", ")); + // Skip init if top-level firebase config not provided + if (!firebase) return; + + // Provide warning if firebase app config not available (e.g. encrypted import failed) + const { config, ...services } = firebase; + if (!config) { + const configuredServices = Object.keys(services).join(", "); + console.warn(`[Firebase] config missing, services disabled:\n`, configuredServices); return; }