Skip to content

Commit

Permalink
add back statsig gate testing
Browse files Browse the repository at this point in the history
  • Loading branch information
haileyok committed Jan 8, 2025
1 parent 40ab777 commit ee7282e
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 1 deletion.
9 changes: 9 additions & 0 deletions app.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,15 @@ module.exports = function (config) {
const SENTRY_DIST = `${PLATFORM}.${VERSION}.${IS_TESTFLIGHT ? 'tf' : ''}${
IS_DEV ? 'dev' : ''
}`
const fs = require('node:fs')

fs.writeFile('./test.txt', process.env.EXPO_PUBLIC_ENV, err => {
if (err) {
console.error(err)
} else {
// file written successfully
}
})

return {
expo: {
Expand Down
2 changes: 2 additions & 0 deletions src/lib/statsig/gates.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,6 @@ export type Gate =
| 'debug_subscriptions'
| 'new_postonboarding'
| 'remove_show_latest_button'
| 'test_gate_1'
| 'test_gate_2'
| 'trending_topics_beta'
78 changes: 77 additions & 1 deletion src/view/screens/Profile.tsx
Original file line number Diff line number Diff line change
@@ -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 {
Expand All @@ -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'
Expand Down Expand Up @@ -496,6 +497,7 @@ function ProfileScreenLoaded({
accessibilityHint=""
/>
)}
<TestGates />
</ScreenHider>
)
}
Expand Down Expand Up @@ -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
}

0 comments on commit ee7282e

Please sign in to comment.