Skip to content

Commit 0590c05

Browse files
committed
analytics: add statsig
1 parent b247ef5 commit 0590c05

File tree

4 files changed

+76
-20
lines changed

4 files changed

+76
-20
lines changed

apps/client/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "client",
3-
"version": "1.9.6-beta",
3+
"version": "1.9.7-beta",
44
"scripts": {
55
"dev": "npm-run-all --parallel dev:*",
66
"dev:run": "FORCE_COLOR=1 vite",
@@ -52,6 +52,7 @@
5252
"react-icons": "^4.4.0",
5353
"react-router-dom": "^6.20.1",
5454
"rollup-plugin-workbox": "^6.2.0",
55+
"statsig-react": "^1.33.0",
5556
"typescript": "^5.1.6",
5657
"web-vitals": "^3.0.1",
5758
"workbox-precaching": "^6.5.3",

apps/client/src/components/Nav/Nav.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
import React, { useState } from "react";
1818
import { FaGithub, FaMoon, FaSun, MdLogout, MdSettings } from "react-icons/all";
1919
import { Link as RouterLink, useLocation } from "react-router-dom";
20+
import { Statsig } from "statsig-react";
2021

2122
export const TimetablLogo = ({
2223
color,
@@ -145,6 +146,11 @@ export const SettingsBTN = ({
145146
<RouterLink
146147
to={pathname.startsWith("/app/settings") ? "/app" : "/app/settings"}
147148
unstable_viewTransition
149+
onClick={() => {
150+
if (localStorage.getItem("consentedToWelcomeMessage")) {
151+
Statsig.logEvent("settings_opened");
152+
}
153+
}}
148154
>
149155
<IconButton
150156
variant="outline"

apps/client/src/services/UserInterface/UserInterface.tsx

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
} from "@tanstack/react-query-persist-client";
1313
import { StrictMode, createContext, useContext } from "react";
1414
import ReactDOM from "react-dom/client";
15+
import { StatsigProvider } from "statsig-react";
1516

1617
const AuthActionsContext = createContext<OAuth2Actions | null>(null);
1718

@@ -32,6 +33,22 @@ const ChakraWrapper = ({ children }: { children: React.ReactNode }) => {
3233
return <ChakraProvider theme={theme}>{children}</ChakraProvider>;
3334
};
3435

36+
const StatsigWrapper = ({ children }: { children: React.ReactNode }) => {
37+
const consented = localStorage.getItem("consentedToWelcomeMessage");
38+
39+
if (!consented) return <>{children}</>;
40+
41+
return (
42+
<StatsigProvider
43+
sdkKey="client-l2xQg1ZmyZxdQROd01wYZRipYaxpHkR83Ms6gCpJaA6"
44+
waitForInitialization={true}
45+
user={{}}
46+
>
47+
{children}
48+
</StatsigProvider>
49+
);
50+
};
51+
3552
class UserInterface {
3653
constructor(
3754
private queryClient: QueryClient,
@@ -47,25 +64,29 @@ class UserInterface {
4764

4865
ReactDOM.createRoot(this.rootElement).render(
4966
<StrictMode>
50-
<PersistQueryClientProvider
51-
client={this.queryClient}
52-
persistOptions={{
53-
persister: this.persister,
54-
maxAge: Infinity,
55-
dehydrateOptions: {
56-
shouldDehydrateQuery: () => true,
57-
},
58-
}}
59-
>
60-
<ChakraWrapper>
61-
<ColorModeScript initialColorMode={themeConfig.initialColorMode} />
62-
<AuthActionsContext.Provider value={this.actions}>
63-
{this.router.getElement()}
64-
</AuthActionsContext.Provider>
65-
<NotifyContainer />
66-
<ReactQueryDevtools initialIsOpen={false} />
67-
</ChakraWrapper>
68-
</PersistQueryClientProvider>
67+
<StatsigWrapper>
68+
<PersistQueryClientProvider
69+
client={this.queryClient}
70+
persistOptions={{
71+
persister: this.persister,
72+
maxAge: Infinity,
73+
dehydrateOptions: {
74+
shouldDehydrateQuery: () => true,
75+
},
76+
}}
77+
>
78+
<ChakraWrapper>
79+
<ColorModeScript
80+
initialColorMode={themeConfig.initialColorMode}
81+
/>
82+
<AuthActionsContext.Provider value={this.actions}>
83+
{this.router.getElement()}
84+
</AuthActionsContext.Provider>
85+
<NotifyContainer />
86+
<ReactQueryDevtools initialIsOpen={false} />
87+
</ChakraWrapper>
88+
</PersistQueryClientProvider>
89+
</StatsigWrapper>
6990
</StrictMode>
7091
);
7192
};

pnpm-lock.yaml

Lines changed: 28 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)