Skip to content

Commit

Permalink
Feature flags that no longer exist should be removed from local storage
Browse files Browse the repository at this point in the history
  • Loading branch information
Bharath-K-Shetty committed Jan 23, 2025
1 parent a9a9134 commit 749adde
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions packages/framework/esm-feature-flags/src/feature-flags.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ featureFlagsStore.subscribe((state) => {
JSON.stringify({ label: flag.label, description: flag.description }),
);
}
cleanupObsoleteFeatureFlags(state.flags);
});

function getFeatureFlagsFromLocalStorage() {
Expand Down Expand Up @@ -62,6 +63,22 @@ export function registerFeatureFlag(flagName: string, label: string, description
},
},
}));
cleanupObsoleteFeatureFlags();
}

/**
* This function removes feature flags from local storage that no longer exist in the current state.
*/
function cleanupObsoleteFeatureFlags(currentFlags?: FeatureFlagsStore['flags']) {
const flags = currentFlags || featureFlagsStore.getState().flags;
const storedFlags = Object.keys(localStorage).filter((key) => key.startsWith('openmrs:feature-flag:'));
storedFlags.forEach((key) => {
const flagName = key.replace('openmrs:feature-flag:', '');
if (!flags[flagName]) {
localStorage.removeItem(key);
localStorage.removeItem(`openmrs:feature-flag-meta:${flagName}`);
}
});
}

/** Use this function to access the current value of the feature flag
Expand Down

0 comments on commit 749adde

Please sign in to comment.