Skip to content

Commit f46c742

Browse files
Andrew Farriesroboquat
Andrew Farries
authored andcommitted
Refactor: Fetch by iterating over flags
1 parent 8b2f616 commit f46c742

File tree

1 file changed

+16
-28
lines changed

1 file changed

+16
-28
lines changed

components/dashboard/src/contexts/FeatureFlagContext.tsx

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ import { ProjectContext } from "../projects/project-context";
1111
import { getCurrentTeam, TeamsContext } from "../teams/teams-context";
1212
import { UserContext } from "../user-context";
1313

14+
interface FeatureFlagConfig {
15+
[flagName: string]: { defaultValue: boolean; setter: React.Dispatch<React.SetStateAction<boolean>> };
16+
}
17+
1418
const FeatureFlagContext = createContext<{
1519
showUsageBasedPricingUI: boolean;
1620
showWorkspaceClassesUI: boolean;
@@ -31,41 +35,25 @@ const FeatureFlagContextProvider: React.FC = ({ children }) => {
3135
const [showWorkspaceClassesUI, setShowWorkspaceClassesUI] = useState<boolean>(false);
3236
const [showPersistentVolumeClaimUI, setShowPersistentVolumeClaimUI] = useState<boolean>(false);
3337

38+
const featureFlags: FeatureFlagConfig = {
39+
isUsageBasedBillingEnabled: { defaultValue: false, setter: setShowUsageBasedPricingUI },
40+
workspace_classes: { defaultValue: true, setter: setShowWorkspaceClassesUI },
41+
persistent_volume_claim: { defaultValue: true, setter: setShowPersistentVolumeClaimUI },
42+
};
43+
3444
useEffect(() => {
35-
if (!user) {
36-
return;
37-
}
45+
if (!user) return;
3846
(async () => {
39-
const isUsageBasedBillingEnabled = await getExperimentsClient().getValueAsync(
40-
"isUsageBasedBillingEnabled",
41-
false,
42-
{
43-
user,
44-
projectId: project?.id,
45-
teamId: team?.id,
46-
teamName: team?.name,
47-
teams,
48-
},
49-
);
50-
setShowUsageBasedPricingUI(isUsageBasedBillingEnabled);
51-
52-
const showWorkspaceClasses = await getExperimentsClient().getValueAsync("workspace_classes", true, {
53-
user,
54-
});
55-
setShowWorkspaceClassesUI(showWorkspaceClasses);
56-
57-
const showPersistentVolumeClaim = await getExperimentsClient().getValueAsync(
58-
"persistent_volume_claim",
59-
false,
60-
{
47+
for (const [flagName, config] of Object.entries(featureFlags)) {
48+
const flagValue = await getExperimentsClient().getValueAsync(flagName, config.defaultValue, {
6149
user,
6250
projectId: project?.id,
6351
teamId: team?.id,
6452
teamName: team?.name,
6553
teams,
66-
},
67-
);
68-
setShowPersistentVolumeClaimUI(showPersistentVolumeClaim);
54+
});
55+
config.setter(flagValue);
56+
}
6957
})();
7058
}, [user, teams, team, project]);
7159

0 commit comments

Comments
 (0)