@@ -11,6 +11,10 @@ import { ProjectContext } from "../projects/project-context";
11
11
import { getCurrentTeam , TeamsContext } from "../teams/teams-context" ;
12
12
import { UserContext } from "../user-context" ;
13
13
14
+ interface FeatureFlagConfig {
15
+ [ flagName : string ] : { defaultValue : boolean ; setter : React . Dispatch < React . SetStateAction < boolean > > } ;
16
+ }
17
+
14
18
const FeatureFlagContext = createContext < {
15
19
showUsageBasedPricingUI : boolean ;
16
20
showWorkspaceClassesUI : boolean ;
@@ -31,41 +35,25 @@ const FeatureFlagContextProvider: React.FC = ({ children }) => {
31
35
const [ showWorkspaceClassesUI , setShowWorkspaceClassesUI ] = useState < boolean > ( false ) ;
32
36
const [ showPersistentVolumeClaimUI , setShowPersistentVolumeClaimUI ] = useState < boolean > ( false ) ;
33
37
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
+
34
44
useEffect ( ( ) => {
35
- if ( ! user ) {
36
- return ;
37
- }
45
+ if ( ! user ) return ;
38
46
( 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 , {
61
49
user,
62
50
projectId : project ?. id ,
63
51
teamId : team ?. id ,
64
52
teamName : team ?. name ,
65
53
teams,
66
- } ,
67
- ) ;
68
- setShowPersistentVolumeClaimUI ( showPersistentVolumeClaim ) ;
54
+ } ) ;
55
+ config . setter ( flagValue ) ;
56
+ }
69
57
} ) ( ) ;
70
58
} , [ user , teams , team , project ] ) ;
71
59
0 commit comments