about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorHailey <me@haileyok.com>2025-01-10 09:45:58 -0800
committerGitHub <noreply@github.com>2025-01-10 09:45:58 -0800
commitd79c66af8ac20771c6de08bfc3b9fa953669764a (patch)
tree13d08b0f74f1ee7183751c62fe1c822b90e50e70 /src
parent02dbcc134ef9f9870c4f6eab2da93773b8310d67 (diff)
downloadvoidsky-d79c66af8ac20771c6de08bfc3b9fa953669764a.tar.zst
add back statsig gate testing (#7404)
Diffstat (limited to 'src')
-rw-r--r--src/lib/statsig/gates.ts2
-rw-r--r--src/view/screens/Profile.tsx78
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
+}