Unfork Statsig for web (#3192)
parent
202adb6d7b
commit
7af338ed21
|
@ -179,7 +179,6 @@
|
||||||
"react-responsive": "^9.0.2",
|
"react-responsive": "^9.0.2",
|
||||||
"rn-fetch-blob": "^0.12.0",
|
"rn-fetch-blob": "^0.12.0",
|
||||||
"sentry-expo": "~7.0.1",
|
"sentry-expo": "~7.0.1",
|
||||||
"statsig-react": "^1.36.0",
|
|
||||||
"statsig-react-native-expo": "^4.6.1",
|
"statsig-react-native-expo": "^4.6.1",
|
||||||
"tippy.js": "^6.3.7",
|
"tippy.js": "^6.3.7",
|
||||||
"tlds": "^1.234.0",
|
"tlds": "^1.234.0",
|
||||||
|
|
|
@ -1,75 +0,0 @@
|
||||||
import React from 'react'
|
|
||||||
import {
|
|
||||||
Statsig,
|
|
||||||
StatsigProvider,
|
|
||||||
useGate as useStatsigGate,
|
|
||||||
} from 'statsig-react'
|
|
||||||
import {useSession} from '../../state/session'
|
|
||||||
import {sha256} from 'js-sha256'
|
|
||||||
|
|
||||||
const statsigOptions = {
|
|
||||||
environment: {
|
|
||||||
tier: process.env.NODE_ENV === 'development' ? 'development' : 'production',
|
|
||||||
},
|
|
||||||
// Don't block on waiting for network. The fetched config will kick in on next load.
|
|
||||||
// This ensures the UI is always consistent and doesn't update mid-session.
|
|
||||||
// Note this makes cold load (no local storage) and private mode return `false` for all gates.
|
|
||||||
initTimeoutMs: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
export function logEvent(
|
|
||||||
eventName: string,
|
|
||||||
value?: string | number | null,
|
|
||||||
metadata?: Record<string, string> | null,
|
|
||||||
) {
|
|
||||||
Statsig.logEvent(eventName, value, metadata)
|
|
||||||
}
|
|
||||||
|
|
||||||
export function useGate(gateName: string) {
|
|
||||||
const {isLoading, value} = useStatsigGate(gateName)
|
|
||||||
if (isLoading) {
|
|
||||||
// This should not happen because of waitForInitialization={true}.
|
|
||||||
console.error('Did not expected isLoading to ever be true.')
|
|
||||||
}
|
|
||||||
return value
|
|
||||||
}
|
|
||||||
|
|
||||||
function toStatsigUser(did: string | undefined) {
|
|
||||||
let userID: string | undefined
|
|
||||||
if (did) {
|
|
||||||
userID = sha256(did)
|
|
||||||
}
|
|
||||||
return {userID}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Provider({children}: {children: React.ReactNode}) {
|
|
||||||
const {currentAccount} = useSession()
|
|
||||||
const currentStatsigUser = React.useMemo(
|
|
||||||
() => toStatsigUser(currentAccount?.did),
|
|
||||||
[currentAccount?.did],
|
|
||||||
)
|
|
||||||
|
|
||||||
React.useEffect(() => {
|
|
||||||
function refresh() {
|
|
||||||
// Intentionally refetching the config using the JS SDK rather than React SDK
|
|
||||||
// so that the new config is stored in cache but isn't used during this session.
|
|
||||||
// It will kick in for the next reload.
|
|
||||||
Statsig.updateUser(currentStatsigUser)
|
|
||||||
}
|
|
||||||
const id = setInterval(refresh, 3 * 60e3 /* 3 min */)
|
|
||||||
return () => clearInterval(id)
|
|
||||||
}, [currentStatsigUser])
|
|
||||||
|
|
||||||
return (
|
|
||||||
<StatsigProvider
|
|
||||||
sdkKey="client-SXJakO39w9vIhl3D44u8UupyzFl4oZ2qPIkjwcvuPsV"
|
|
||||||
mountKey={currentStatsigUser.userID}
|
|
||||||
user={currentStatsigUser}
|
|
||||||
// This isn't really blocking due to short initTimeoutMs above.
|
|
||||||
// However, it ensures `isLoading` is always `false`.
|
|
||||||
waitForInitialization={true}
|
|
||||||
options={statsigOptions}>
|
|
||||||
{children}
|
|
||||||
</StatsigProvider>
|
|
||||||
)
|
|
||||||
}
|
|
20
yarn.lock
20
yarn.lock
|
@ -15059,11 +15059,6 @@ js-sha256@^0.10.1:
|
||||||
resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.10.1.tgz#b40104ba1368e823fdd5f41b66b104b15a0da60d"
|
resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.10.1.tgz#b40104ba1368e823fdd5f41b66b104b15a0da60d"
|
||||||
integrity sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw==
|
integrity sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw==
|
||||||
|
|
||||||
js-sha256@^0.11.0:
|
|
||||||
version "0.11.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.0.tgz#256a921d9292f7fe98905face82e367abaca9576"
|
|
||||||
integrity sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q==
|
|
||||||
|
|
||||||
js-sha256@^0.9.0:
|
js-sha256@^0.9.0:
|
||||||
version "0.9.0"
|
version "0.9.0"
|
||||||
resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966"
|
resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966"
|
||||||
|
@ -20082,14 +20077,6 @@ statsig-js@4.45.1:
|
||||||
js-sha256 "^0.10.1"
|
js-sha256 "^0.10.1"
|
||||||
uuid "^8.3.2"
|
uuid "^8.3.2"
|
||||||
|
|
||||||
statsig-js@4.49.0:
|
|
||||||
version "4.49.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/statsig-js/-/statsig-js-4.49.0.tgz#8470a9ac218a93d36f4b7b306ff9377e48064740"
|
|
||||||
integrity sha512-N4drx6fzI168Q4NndFY3IJbSDqpWSBWvS290H/RnT/g3Et58SvtXzG5qqgzmqy4CwcmwH+IL8K15pL7hPnfvUQ==
|
|
||||||
dependencies:
|
|
||||||
js-sha256 "^0.11.0"
|
|
||||||
uuid "^8.3.2"
|
|
||||||
|
|
||||||
statsig-react-native-expo@^4.6.1:
|
statsig-react-native-expo@^4.6.1:
|
||||||
version "4.6.1"
|
version "4.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/statsig-react-native-expo/-/statsig-react-native-expo-4.6.1.tgz#0bdf49fee7112f7f28bff2405f4ba0c1727bb3d6"
|
resolved "https://registry.yarnpkg.com/statsig-react-native-expo/-/statsig-react-native-expo-4.6.1.tgz#0bdf49fee7112f7f28bff2405f4ba0c1727bb3d6"
|
||||||
|
@ -20110,13 +20097,6 @@ statsig-react@^1.21.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
statsig-js "4.45.1"
|
statsig-js "4.45.1"
|
||||||
|
|
||||||
statsig-react@^1.36.0:
|
|
||||||
version "1.36.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/statsig-react/-/statsig-react-1.36.0.tgz#c2171268a6c76eee534849ec9556b836baba04b6"
|
|
||||||
integrity sha512-QcTHla3ypfn2RvrnHGNlqWbiC2W/ZjcMM5LT6ExNV4skH7Xhspto3dMS3JVzBhOb74OEDZK4DbxQj9Wdz6XW0w==
|
|
||||||
dependencies:
|
|
||||||
statsig-js "4.49.0"
|
|
||||||
|
|
||||||
statuses@2.0.1:
|
statuses@2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
|
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
|
||||||
|
|
Loading…
Reference in New Issue