Skip to content

Commit ea0b673

Browse files
committed
feat: add FF_OVERRIDE env variable to locally override feature flags
1 parent d2836c2 commit ea0b673

File tree

1 file changed

+16
-0
lines changed
  • apps/browser-extension-wallet/src/providers/PostHogClientProvider/client

1 file changed

+16
-0
lines changed

apps/browser-extension-wallet/src/providers/PostHogClientProvider/client/PostHogClient.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export class PostHogClient<Action extends string = string> {
5656
hasPostHogInitialized$ = new BehaviorSubject(false);
5757
featureFlagsByNetwork: FeatureFlagsByNetwork = featureFlagsByNetworkInitialValue;
5858
featureFlagPayloads: FeatureFlagPayloads = featureFlagPayloadsInitialValue;
59+
private ffOverride: Record<string, boolean> = {};
5960

6061
constructor(
6162
private chain: Wallet.Cardano.ChainId,
@@ -66,6 +67,19 @@ export class PostHogClient<Action extends string = string> {
6667
) {
6768
if (!this.postHogHost) throw new Error('POSTHOG_HOST url has not been provided');
6869
void this.initialize();
70+
71+
try {
72+
const ffOverride = JSON.parse(process.env.FF_OVERRIDE) as Record<string, string | number>;
73+
74+
for (const [key, value] of Object.entries(ffOverride)) {
75+
if (!['false', 'False', 'FALSE', '0', 0, 'true', 'True', 'TRUE', '1', 1].includes(value))
76+
throw new Error(`Invalid value for FF_OVERRIDE[${key}]: "${value}"`);
77+
78+
this.ffOverride[key] = ['true', 'True', 'TRUE', '1', 1].includes(value);
79+
}
80+
} catch (error) {
81+
commonLogger.error('While parsing FF_OVERRIDE', error);
82+
}
6983
}
7084

7185
private async initialize() {
@@ -224,6 +238,8 @@ export class PostHogClient<Action extends string = string> {
224238
}
225239

226240
isFeatureFlagEnabled(feature: FeatureFlag): boolean {
241+
if (feature in this.ffOverride) return this.ffOverride[feature];
242+
227243
const currentNetworkFeatureFlags =
228244
this.featureFlagsByNetwork[this.chain.networkMagic as Wallet.Cardano.NetworkMagics];
229245
return currentNetworkFeatureFlags[feature] || false;

0 commit comments

Comments
 (0)