From 71c427cea86db31f7bd6c11cd460c0d7a48c0b06 Mon Sep 17 00:00:00 2001
From: dan <dan.abramov@gmail.com>
Date: Tue, 16 Apr 2024 21:55:12 +0100
Subject: Make ref_ always strings (#3583)

* Make ref_ always strings

* Harden types
---
 src/lib/statsig/statsig.tsx | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

(limited to 'src/lib/statsig/statsig.tsx')

diff --git a/src/lib/statsig/statsig.tsx b/src/lib/statsig/statsig.tsx
index 6fa476cd0..df540d79e 100644
--- a/src/lib/statsig/statsig.tsx
+++ b/src/lib/statsig/statsig.tsx
@@ -15,8 +15,21 @@ import {useSession} from '../../state/session'
 import {LogEvents} from './events'
 import {Gate} from './gates'
 
-let refSrc: string
-let refUrl: string
+type StatsigUser = {
+  userID: string | undefined
+  // TODO: Remove when enough users have custom.platform:
+  platform: 'ios' | 'android' | 'web'
+  custom: {
+    // This is the place where we can add our own stuff.
+    // Fields here have to be non-optional to be visible in the UI.
+    platform: 'ios' | 'android' | 'web'
+    refSrc: string
+    refUrl: string
+  }
+}
+
+let refSrc = ''
+let refUrl = ''
 if (isWeb && typeof window !== 'undefined') {
   const params = new URLSearchParams(window.location.search)
   refSrc = params.get('ref_src') ?? ''
@@ -97,19 +110,18 @@ export function useGate(gateName: Gate): boolean {
   return initialValue
 }
 
-function toStatsigUser(did: string | undefined) {
+function toStatsigUser(did: string | undefined): StatsigUser {
   let userID: string | undefined
   if (did) {
     userID = sha256(did)
   }
   return {
     userID,
-    platform: Platform.OS,
+    platform: Platform.OS as 'ios' | 'android' | 'web',
     custom: {
       refSrc,
       refUrl,
-      // Need to specify here too for gating.
-      platform: Platform.OS,
+      platform: Platform.OS as 'ios' | 'android' | 'web',
     },
   }
 }
-- 
cgit 1.4.1

