This repository was archived by the owner on Sep 30, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Expand file tree
/
Copy pathfeatureFlags.ts
More file actions
81 lines (74 loc) · 2.44 KB
/
Copy pathfeatureFlags.ts
File metadata and controls
81 lines (74 loc) · 2.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import { gql, useQuery } from '@sourcegraph/http-client'
import type { OrgFeatureFlagOverridesResult, OrgFeatureFlagOverridesVariables } from '../graphql-operations'
// A union of all feature flags we currently have.
export const FEATURE_FLAGS = [
'admin-analytics-cache-disabled',
'admin-onboarding',
'blob-page-switch-areas-shortcuts',
'cody-chat-mock-test',
'contrast-compliant-syntax-highlighting',
'enable-ownership-panels',
'enable-simple-search',
'web-next',
'web-next-rollout',
'web-next-toggle',
'end-user-onboarding',
'insight-polling-enabled',
'opencodegraph',
'own-analytics',
'own-promote',
'plg-enable-add-codehost-widget',
'quick-start-tour-for-authenticated-users',
'repository-metadata',
'search-content-based-lang-detection',
'search-debug',
'signup-survey-enabled',
'sourcegraph-operator-site-admin-hide-maintenance',
'sourcegraph-cloud-managed-feature-flags-warning-shown',
'ab-shortened-install-first-signup-flow-cody-2024-04',
'batches-github-app-integration',
] as const
export type FeatureFlagName = typeof FEATURE_FLAGS[number]
interface OrgFlagOverride {
orgID: string
flagName: string
value: boolean
}
/**
* // TODO: clarify why to use this if GQL already takes care of overrides?
* Fetches all feature flag overrides for organizations that the current user is a member of
*/
export function useFlagsOverrides(): { data: OrgFlagOverride[]; loading: boolean } {
const { data, loading } = useQuery<OrgFeatureFlagOverridesResult, OrgFeatureFlagOverridesVariables>(
gql`
query OrgFeatureFlagOverrides {
organizationFeatureFlagOverrides {
namespace {
id
}
targetFlag {
... on FeatureFlagBoolean {
name
}
... on FeatureFlagRollout {
name
}
}
value
}
}
`,
{ fetchPolicy: 'cache-and-network' }
)
if (!data) {
return { data: [], loading }
}
return {
data: data?.organizationFeatureFlagOverrides.map(value => ({
orgID: value.namespace.id,
flagName: value.targetFlag.name,
value: value.value,
})),
loading,
}
}