feat(editor): Show template credential setup based on feature flag (#7989)

Replace the local storage based feature flag with posthog feature flag.

Also:
- Fix bunch of eslint warnings in posthog store
This commit is contained in:
Tomi Turtiainen
2023-12-11 20:21:10 +02:00
committed by GitHub
parent c378f60a25
commit 08ee307209
9 changed files with 89 additions and 87 deletions

View File

@@ -14,6 +14,8 @@ const EVENTS = {
IS_PART_OF_EXPERIMENT: 'User is part of experiment',
};
export type PosthogStore = ReturnType<typeof usePostHog>;
export const usePostHog = defineStore('posthog', () => {
const usersStore = useUsersStore();
const settingsStore = useSettingsStore();
@@ -39,6 +41,13 @@ export const usePostHog = defineStore('posthog', () => {
return getVariant(experiment) === variant;
};
/**
* Checks if the given feature flag is enabled. Should only be used for boolean flags
*/
const isFeatureEnabled = (experiment: keyof FeatureFlags) => {
return featureFlags.value?.[experiment] === true;
};
if (!window.featureFlags) {
// for testing
const cachedOverrides = useStorage(LOCAL_STORAGE_EXPERIMENT_OVERRIDES).value;
@@ -65,7 +74,7 @@ export const usePostHog = defineStore('posthog', () => {
},
getVariant,
getAll: () => featureFlags.value || {},
getAll: () => featureFlags.value ?? {},
};
}
@@ -90,6 +99,25 @@ export const usePostHog = defineStore('posthog', () => {
};
};
const trackExperiment = (featFlags: FeatureFlags, name: string) => {
const variant = featFlags[name];
if (!variant || trackedDemoExp.value[name] === variant) {
return;
}
telemetryStore.track(EVENTS.IS_PART_OF_EXPERIMENT, {
name,
variant,
});
trackedDemoExp.value[name] = variant;
};
const trackExperiments = (featFlags: FeatureFlags) => {
EXPERIMENTS_TO_TRACK.forEach((name) => trackExperiment(featFlags, name));
};
const trackExperimentsDebounced = debounce(trackExperiments, 2000);
const init = (evaluatedFeatureFlags?: FeatureFlags) => {
if (!window.posthog) {
return;
@@ -143,25 +171,6 @@ export const usePostHog = defineStore('posthog', () => {
}
};
const trackExperiments = (featureFlags: FeatureFlags) => {
EXPERIMENTS_TO_TRACK.forEach((name) => trackExperiment(featureFlags, name));
};
const trackExperimentsDebounced = debounce(trackExperiments, 2000);
const trackExperiment = (featureFlags: FeatureFlags, name: string) => {
const variant = featureFlags[name];
if (!variant || trackedDemoExp.value[name] === variant) {
return;
}
telemetryStore.track(EVENTS.IS_PART_OF_EXPERIMENT, {
name,
variant,
});
trackedDemoExp.value[name] = variant;
};
const capture = (event: string, properties: IDataObject) => {
if (typeof window.posthog?.capture === 'function') {
window.posthog.capture(event, properties);
@@ -181,6 +190,7 @@ export const usePostHog = defineStore('posthog', () => {
return {
init,
isFeatureEnabled,
isVariantEnabled,
getVariant,
reset,