diff options
author | dan <dan.abramov@gmail.com> | 2024-03-19 20:11:26 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-19 13:11:26 -0700 |
commit | 5bec5877172ac0f18c3c1bebec7ad6c46ca0ae39 (patch) | |
tree | d979dba3b39f38ede6359421bd0def2a17fab0c3 /src | |
parent | e9222a9d97beba9e5edc12388315f7057a9224fe (diff) | |
download | voidsky-5bec5877172ac0f18c3c1bebec7ad6c46ca0ae39.tar.zst |
[Statsig] Include OS and track app state changes (#3273)
* Include platform in identify * Track back/foregrounding
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/statsig/events.ts | 2 | ||||
-rw-r--r-- | src/lib/statsig/statsig.tsx | 20 |
2 files changed, 21 insertions, 1 deletions
diff --git a/src/lib/statsig/events.ts b/src/lib/statsig/events.ts index fa7e597fb..cb9f3fe92 100644 --- a/src/lib/statsig/events.ts +++ b/src/lib/statsig/events.ts @@ -2,6 +2,8 @@ export type LogEvents = { init: { initMs: number } + 'state:background': {} + 'state:foreground': {} 'feed:endReached': { feedType: string itemCount: number diff --git a/src/lib/statsig/statsig.tsx b/src/lib/statsig/statsig.tsx index 5745d204a..3abec5c4f 100644 --- a/src/lib/statsig/statsig.tsx +++ b/src/lib/statsig/statsig.tsx @@ -1,9 +1,11 @@ import React from 'react' +import {Platform} from 'react-native' import { Statsig, StatsigProvider, useGate as useStatsigGate, } from 'statsig-react-native-expo' +import {AppState, AppStateStatus} from 'react-native' import {useSession} from '../../state/session' import {sha256} from 'js-sha256' import {LogEvents} from './events' @@ -58,9 +60,25 @@ function toStatsigUser(did: string | undefined) { if (did) { userID = sha256(did) } - return {userID} + return { + userID, + platform: Platform.OS, + } } +let lastState: AppStateStatus = AppState.currentState +AppState.addEventListener('change', (state: AppStateStatus) => { + if (state === lastState) { + return + } + lastState = state + if (state === 'active') { + logEvent('state:foreground', {}) + } else { + logEvent('state:background', {}) + } +}) + export function Provider({children}: {children: React.ReactNode}) { const {currentAccount} = useSession() const currentStatsigUser = React.useMemo( |