about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/statsig/gates.ts2
-rw-r--r--src/lib/statsig/statsig.tsx19
-rw-r--r--src/screens/Onboarding/StepFinished.tsx4
-rw-r--r--src/screens/Onboarding/StepInterests/index.tsx2
-rw-r--r--src/screens/Onboarding/StepProfile/index.tsx2
-rw-r--r--src/screens/Onboarding/index.tsx2
-rw-r--r--src/state/queries/post-feed.ts8
-rw-r--r--src/view/com/testing/TestCtrls.e2e.tsx4
8 files changed, 29 insertions, 14 deletions
diff --git a/src/lib/statsig/gates.ts b/src/lib/statsig/gates.ts
index 315706ad0..42f86c81c 100644
--- a/src/lib/statsig/gates.ts
+++ b/src/lib/statsig/gates.ts
@@ -4,7 +4,7 @@ export type Gate =
   | 'disable_min_shell_on_foregrounding_v3'
   | 'disable_poll_on_discover_v2'
   | 'dms'
-  | 'reduced_onboarding_and_home_algo'
+  | 'reduced_onboarding_and_home_algo_v2'
   | 'request_notifications_permission_after_onboarding'
   | 'show_follow_back_label_v2'
   | 'start_session_with_following_v2'
diff --git a/src/lib/statsig/statsig.tsx b/src/lib/statsig/statsig.tsx
index 3b649f88d..005027820 100644
--- a/src/lib/statsig/statsig.tsx
+++ b/src/lib/statsig/statsig.tsx
@@ -108,20 +108,29 @@ export function logEvent<E extends keyof LogEvents>(
 // Our own cache ensures consistent evaluation within a single session.
 const GateCache = React.createContext<Map<string, boolean> | null>(null)
 
-export function useGate(): (gateName: Gate) => boolean {
+type GateOptions = {
+  dangerouslyDisableExposureLogging?: boolean
+}
+
+export function useGate(): (gateName: Gate, options?: GateOptions) => boolean {
   const cache = React.useContext(GateCache)
   if (!cache) {
     throw Error('useGate() cannot be called outside StatsigProvider.')
   }
   const gate = React.useCallback(
-    (gateName: Gate): boolean => {
+    (gateName: Gate, options: GateOptions = {}): boolean => {
       const cachedValue = cache.get(gateName)
       if (cachedValue !== undefined) {
         return cachedValue
       }
-      const value = Statsig.initializeCalled()
-        ? Statsig.checkGate(gateName)
-        : false
+      let value = false
+      if (Statsig.initializeCalled()) {
+        if (options.dangerouslyDisableExposureLogging) {
+          value = Statsig.checkGateWithExposureLoggingDisabled(gateName)
+        } else {
+          value = Statsig.checkGate(gateName)
+        }
+      }
       cache.set(gateName, value)
       return value
     },
diff --git a/src/screens/Onboarding/StepFinished.tsx b/src/screens/Onboarding/StepFinished.tsx
index 3db0cbd2c..855e12ed0 100644
--- a/src/screens/Onboarding/StepFinished.tsx
+++ b/src/screens/Onboarding/StepFinished.tsx
@@ -83,7 +83,7 @@ export function StepFinished() {
            * selected in onboarding and therefore we don't need to run this
            * code (which would overwrite the other feeds already set).
            */
-          if (!gate('reduced_onboarding_and_home_algo')) {
+          if (!gate('reduced_onboarding_and_home_algo_v2')) {
             const otherFeeds = selectedFeeds.length
               ? selectedFeeds.map(f => ({
                   type: 'feed',
@@ -120,7 +120,7 @@ export function StepFinished() {
         })(),
 
         (async () => {
-          if (!gate('reduced_onboarding_and_home_algo')) return
+          if (!gate('reduced_onboarding_and_home_algo_v2')) return
 
           const {imageUri, imageMime} = profileStepResults
           if (imageUri && imageMime) {
diff --git a/src/screens/Onboarding/StepInterests/index.tsx b/src/screens/Onboarding/StepInterests/index.tsx
index 2711f6779..d95445d79 100644
--- a/src/screens/Onboarding/StepInterests/index.tsx
+++ b/src/screens/Onboarding/StepInterests/index.tsx
@@ -134,7 +134,7 @@ export function StepInterests() {
   }, [track])
 
   React.useEffect(() => {
-    if (!gate('reduced_onboarding_and_home_algo')) {
+    if (!gate('reduced_onboarding_and_home_algo_v2')) {
       requestNotificationsPermission('StartOnboarding')
     }
   }, [gate, requestNotificationsPermission])
diff --git a/src/screens/Onboarding/StepProfile/index.tsx b/src/screens/Onboarding/StepProfile/index.tsx
index 93d8a4020..fc19d5bb3 100644
--- a/src/screens/Onboarding/StepProfile/index.tsx
+++ b/src/screens/Onboarding/StepProfile/index.tsx
@@ -94,7 +94,7 @@ export function StepProfile() {
   React.useEffect(() => {
     // We have an experiment running for redueced onboarding, where this screen shows up as the first in onboarding.
     // We only want to request permissions when that gate is actually active to prevent pollution
-    if (gate('reduced_onboarding_and_home_algo')) {
+    if (gate('reduced_onboarding_and_home_algo_v2')) {
       requestNotificationsPermission('StartOnboarding')
     }
   }, [gate, requestNotificationsPermission])
diff --git a/src/screens/Onboarding/index.tsx b/src/screens/Onboarding/index.tsx
index 5af7a12dc..20271a465 100644
--- a/src/screens/Onboarding/index.tsx
+++ b/src/screens/Onboarding/index.tsx
@@ -24,7 +24,7 @@ import {Portal} from '#/components/Portal'
 export function Onboarding() {
   const {_} = useLingui()
   const gate = useGate()
-  const isReducedOnboardingEnabled = gate('reduced_onboarding_and_home_algo')
+  const isReducedOnboardingEnabled = gate('reduced_onboarding_and_home_algo_v2')
   const [state, dispatch] = React.useReducer(
     isReducedOnboardingEnabled ? reducerReduced : reducer,
     isReducedOnboardingEnabled ? {...initialStateReduced} : {...initialState},
diff --git a/src/state/queries/post-feed.ts b/src/state/queries/post-feed.ts
index b9e0628f7..b763f28a0 100644
--- a/src/state/queries/post-feed.ts
+++ b/src/state/queries/post-feed.ts
@@ -152,7 +152,13 @@ export function usePostFeedQuery(
               feedTuners,
               userInterests, // Not in the query key because they don't change.
               getAgent,
-              useBaseFollowingFeed: gate('reduced_onboarding_and_home_algo'),
+              useBaseFollowingFeed: gate(
+                'reduced_onboarding_and_home_algo_v2',
+                {
+                  // If you're not already in this experiment, we don't want to expose you to it now.
+                  dangerouslyDisableExposureLogging: true,
+                },
+              ),
             }),
             cursor: undefined,
           }
diff --git a/src/view/com/testing/TestCtrls.e2e.tsx b/src/view/com/testing/TestCtrls.e2e.tsx
index fbad86f6a..c01856c52 100644
--- a/src/view/com/testing/TestCtrls.e2e.tsx
+++ b/src/view/com/testing/TestCtrls.e2e.tsx
@@ -112,7 +112,7 @@ export function TestCtrls() {
         testID="e2eStartOnboarding"
         onPress={() => {
           // TODO remove when experiment is over
-          setGate('reduced_onboarding_and_home_algo', true)
+          setGate('reduced_onboarding_and_home_algo_v2', true)
           onboardingDispatch({type: 'start'})
         }}
         accessibilityRole="button"
@@ -123,7 +123,7 @@ export function TestCtrls() {
         testID="e2eStartLongboarding"
         onPress={() => {
           // TODO remove when experiment is over
-          setGate('reduced_onboarding_and_home_algo', false)
+          setGate('reduced_onboarding_and_home_algo_v2', false)
           onboardingDispatch({type: 'start'})
         }}
         accessibilityRole="button"