diff options
-rw-r--r-- | src/lib/statsig/gates.ts | 2 | ||||
-rw-r--r-- | src/view/screens/Profile.tsx | 78 |
2 files changed, 79 insertions, 1 deletions
diff --git a/src/lib/statsig/gates.ts b/src/lib/statsig/gates.ts index 455a70345..d2caa47f2 100644 --- a/src/lib/statsig/gates.ts +++ b/src/lib/statsig/gates.ts @@ -4,4 +4,6 @@ export type Gate = | 'debug_subscriptions' | 'new_postonboarding' | 'remove_show_latest_button' + | 'test_gate_1' + | 'test_gate_2' | 'trending_topics_beta' diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx index 24e8719e1..d4b6c2571 100644 --- a/src/view/screens/Profile.tsx +++ b/src/view/screens/Profile.tsx @@ -1,4 +1,4 @@ -import React, {useCallback, useMemo} from 'react' +import React, {useCallback, useEffect, useMemo} from 'react' import {StyleSheet} from 'react-native' import {SafeAreaView} from 'react-native-safe-area-context' import { @@ -20,6 +20,7 @@ import { import {useSetTitle} from '#/lib/hooks/useSetTitle' import {ComposeIcon2} from '#/lib/icons' import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types' +import {logEvent, useGate} from '#/lib/statsig/statsig' import {combinedDisplayName} from '#/lib/strings/display-names' import {cleanError} from '#/lib/strings/errors' import {isInvalidHandle} from '#/lib/strings/handles' @@ -496,6 +497,7 @@ function ProfileScreenLoaded({ accessibilityHint="" /> )} + <TestGates /> </ScreenHider> ) } @@ -554,3 +556,77 @@ const styles = StyleSheet.create({ textAlign: 'center', }, }) + +const shouldExposeToGate2 = Math.random() < 0.2 + +// --- Temporary: we're testing our Statsig setup --- +let TestGates = React.memo(function TestGates() { + const gate = useGate() + + useEffect(() => { + logEvent('test:all:always', {}) + if (Math.random() < 0.2) { + logEvent('test:all:sometimes', {}) + } + if (Math.random() < 0.1) { + logEvent('test:all:boosted_by_gate1', { + reason: 'base', + }) + } + if (Math.random() < 0.1) { + logEvent('test:all:boosted_by_gate2', { + reason: 'base', + }) + } + if (Math.random() < 0.1) { + logEvent('test:all:boosted_by_both', { + reason: 'base', + }) + } + }, []) + + return [ + gate('test_gate_1') ? <TestGate1 /> : null, + shouldExposeToGate2 && gate('test_gate_2') ? <TestGate2 /> : null, + ] +}) + +function TestGate1() { + useEffect(() => { + logEvent('test:gate1:always', {}) + if (Math.random() < 0.2) { + logEvent('test:gate1:sometimes', {}) + } + if (Math.random() < 0.5) { + logEvent('test:all:boosted_by_gate1', { + reason: 'gate1', + }) + } + if (Math.random() < 0.5) { + logEvent('test:all:boosted_by_both', { + reason: 'gate1', + }) + } + }, []) + return null +} + +function TestGate2() { + useEffect(() => { + logEvent('test:gate2:always', {}) + if (Math.random() < 0.2) { + logEvent('test:gate2:sometimes', {}) + } + if (Math.random() < 0.5) { + logEvent('test:all:boosted_by_gate2', { + reason: 'gate2', + }) + } + if (Math.random() < 0.5) { + logEvent('test:all:boosted_by_both', { + reason: 'gate2', + }) + } + }, []) + return null +} |