Skip to content

Commit 28171d3

Browse files
(chore) O3-4372: Remove non-existent feature flags from local storage (#1276)
1 parent e0e1c3f commit 28171d3

File tree

3 files changed

+52
-34
lines changed

3 files changed

+52
-34
lines changed

packages/framework/esm-feature-flags/src/feature-flags.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,22 @@ export function registerFeatureFlag(flagName: string, label: string, description
6464
}));
6565
}
6666

67+
/**
68+
* This function removes feature flags from local storage that no longer exist in the current state.
69+
*/
70+
export function cleanupObsoleteFeatureFlags() {
71+
const flags = featureFlagsStore.getState().flags;
72+
Object.keys(localStorage)
73+
.filter((key) => key.startsWith('openmrs:feature-flag:'))
74+
.forEach((key) => {
75+
const flagName = key.replace('openmrs:feature-flag:', '');
76+
if (!flags[flagName]) {
77+
localStorage.removeItem(key);
78+
localStorage.removeItem(`openmrs:feature-flag-meta:${flagName}`);
79+
}
80+
});
81+
}
82+
6783
/** Use this function to access the current value of the feature flag
6884
*
6985
* If you are using React, use `useFeatureFlag` instead.

packages/framework/esm-framework/docs/API.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4883,7 +4883,7 @@ If you are using React, use `useFeatureFlag` instead.
48834883

48844884
#### Defined in
48854885

4886-
[packages/framework/esm-feature-flags/src/feature-flags.ts:71](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-feature-flags/src/feature-flags.ts#L71)
4886+
[packages/framework/esm-feature-flags/src/feature-flags.ts:87](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-feature-flags/src/feature-flags.ts#L87)
48874887

48884888
___
48894889

packages/shell/esm-app-shell/src/run.ts

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,46 @@
11
import { start, triggerAppChange } from 'single-spa';
22
import {
3-
setupApiModule,
4-
renderLoadingSpinner,
5-
type Config,
6-
provide,
7-
showNotification,
8-
showActionableNotification,
9-
showToast,
10-
showSnackbar,
11-
renderInlineNotifications,
12-
renderActionableNotifications,
13-
renderToasts,
14-
renderSnackbars,
15-
integrateBreakpoints,
3+
activateOfflineCapability,
4+
canAccessStorage,
5+
cleanupObsoleteFeatureFlags,
166
dispatchConnectivityChanged,
17-
subscribeNotificationShown,
18-
subscribeActionableNotificationShown,
19-
subscribeToastShown,
20-
subscribeSnackbarShown,
21-
registerOmrsServiceWorker,
22-
messageOmrsServiceWorker,
23-
subscribeConnectivity,
24-
getCurrentUser,
25-
getConfig,
26-
setupModals,
277
dispatchPrecacheStaticDependencies,
28-
activateOfflineCapability,
29-
subscribePrecacheStaticDependencies,
30-
openmrsFetch,
8+
finishRegisteringAllApps,
9+
getConfig,
10+
getCurrentUser,
11+
integrateBreakpoints,
3112
interpolateUrl,
32-
type OpenmrsRoutes,
33-
canAccessStorage,
34-
localStorageRoutesPrefix,
3513
isOpenmrsAppRoutes,
3614
isOpenmrsRoutes,
37-
setupHistory,
15+
localStorageRoutesPrefix,
16+
messageOmrsServiceWorker,
17+
openmrsFetch,
18+
provide,
3819
registerApp,
39-
finishRegisteringAllApps,
20+
registerOmrsServiceWorker,
21+
renderActionableNotifications,
22+
renderInlineNotifications,
23+
renderLoadingSpinner,
24+
renderSnackbars,
25+
renderToasts,
26+
restBaseUrl,
27+
setupApiModule,
28+
setupHistory,
29+
setupModals,
30+
showActionableNotification,
31+
showNotification,
32+
showSnackbar,
33+
showToast,
34+
subscribeActionableNotificationShown,
35+
subscribeConnectivity,
36+
subscribeNotificationShown,
37+
subscribePrecacheStaticDependencies,
38+
subscribeSnackbarShown,
39+
subscribeToastShown,
4040
tryRegisterExtension,
41+
type Config,
4142
type OpenmrsAppRoutes,
42-
restBaseUrl,
43+
type OpenmrsRoutes,
4344
} from '@openmrs/esm-framework/src/internal';
4445
import { setupI18n } from './locale';
4546
import { registerOptionalDependencyHandler } from './optionaldeps';
@@ -429,5 +430,6 @@ export function run(configUrls: Array<string>) {
429430
.catch(handleInitFailure)
430431
.then(closeLoading)
431432
.then(offlineEnabled ? setupOffline : undefined)
432-
.then(registerOptionalDependencyHandler);
433+
.then(registerOptionalDependencyHandler)
434+
.then(cleanupObsoleteFeatureFlags);
433435
}

0 commit comments

Comments
 (0)