add back statsig gate testing (#7404)

This commit is contained in:
Hailey
2025-01-10 09:45:58 -08:00
parent 9f075b1340
commit 004522466e
2 changed files with 79 additions and 1 deletions
+2
View File
@@ -4,4 +4,6 @@ export type Gate =
| 'debug_subscriptions' | 'debug_subscriptions'
| 'new_postonboarding' | 'new_postonboarding'
| 'remove_show_latest_button' | 'remove_show_latest_button'
| 'test_gate_1'
| 'test_gate_2'
| 'trending_topics_beta' | 'trending_topics_beta'
+77 -1
View File
@@ -1,4 +1,4 @@
import React, {useCallback, useMemo} from 'react' import React, {useCallback, useEffect, useMemo} from 'react'
import {StyleSheet} from 'react-native' import {StyleSheet} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context' import {SafeAreaView} from 'react-native-safe-area-context'
import { import {
@@ -20,6 +20,7 @@ import {
import {useSetTitle} from '#/lib/hooks/useSetTitle' import {useSetTitle} from '#/lib/hooks/useSetTitle'
import {ComposeIcon2} from '#/lib/icons' import {ComposeIcon2} from '#/lib/icons'
import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types' import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
import {logEvent, useGate} from '#/lib/statsig/statsig'
import {combinedDisplayName} from '#/lib/strings/display-names' import {combinedDisplayName} from '#/lib/strings/display-names'
import {cleanError} from '#/lib/strings/errors' import {cleanError} from '#/lib/strings/errors'
import {isInvalidHandle} from '#/lib/strings/handles' import {isInvalidHandle} from '#/lib/strings/handles'
@@ -496,6 +497,7 @@ function ProfileScreenLoaded({
accessibilityHint="" accessibilityHint=""
/> />
)} )}
<TestGates />
</ScreenHider> </ScreenHider>
) )
} }
@@ -554,3 +556,77 @@ const styles = StyleSheet.create({
textAlign: 'center', 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
}