diff --git a/apps/browser-extension-wallet/src/providers/PostHogClientProvider/client/PostHogClient.ts b/apps/browser-extension-wallet/src/providers/PostHogClientProvider/client/PostHogClient.ts index 3ede63af0..be360845d 100644 --- a/apps/browser-extension-wallet/src/providers/PostHogClientProvider/client/PostHogClient.ts +++ b/apps/browser-extension-wallet/src/providers/PostHogClientProvider/client/PostHogClient.ts @@ -56,6 +56,7 @@ export class PostHogClient { hasPostHogInitialized$ = new BehaviorSubject(false); featureFlagsByNetwork: FeatureFlagsByNetwork = featureFlagsByNetworkInitialValue; featureFlagPayloads: FeatureFlagPayloads = featureFlagPayloadsInitialValue; + private ffOverride: Record = {}; constructor( private chain: Wallet.Cardano.ChainId, @@ -66,6 +67,19 @@ export class PostHogClient { ) { if (!this.postHogHost) throw new Error('POSTHOG_HOST url has not been provided'); void this.initialize(); + + try { + const ffOverride = JSON.parse(process.env.FF_OVERRIDE) as Record; + + for (const [key, value] of Object.entries(ffOverride)) { + if (!['false', 'False', 'FALSE', '0', 0, 'true', 'True', 'TRUE', '1', 1].includes(value)) + throw new Error(`Invalid value for FF_OVERRIDE[${key}]: "${value}"`); + + this.ffOverride[key] = ['true', 'True', 'TRUE', '1', 1].includes(value); + } + } catch (error) { + commonLogger.error('While parsing FF_OVERRIDE', error); + } } private async initialize() { @@ -224,6 +238,8 @@ export class PostHogClient { } isFeatureFlagEnabled(feature: FeatureFlag): boolean { + if (feature in this.ffOverride) return this.ffOverride[feature]; + const currentNetworkFeatureFlags = this.featureFlagsByNetwork[this.chain.networkMagic as Wallet.Cardano.NetworkMagics]; return currentNetworkFeatureFlags[feature] || false;