Skip to content

Commit 30e7644

Browse files
authored
perf(analytics): added usage analytics (#381)
1 parent 81a3d48 commit 30e7644

File tree

9 files changed

+22
-4
lines changed

9 files changed

+22
-4
lines changed

frontend/app/(auth)/login/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export default function Login() {
4646
};
4747

4848
if (session?.user !== undefined) {
49-
track("SIGNED_IN");
49+
void track("SIGNED_IN");
5050
redirect("/upload");
5151
}
5252

frontend/app/(auth)/logout/page.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,20 @@ import Card from "@/lib/components/ui/Card";
99
import PageHeading from "@/lib/components/ui/PageHeading";
1010
import { useSupabase } from "@/lib/context/SupabaseProvider";
1111
import { useToast } from "@/lib/hooks/useToast";
12+
import { useEventTracking } from "@/services/analytics/useEventTracking";
1213

1314
export default function Logout() {
1415
const { supabase } = useSupabase();
1516
const [isPending, setIsPending] = useState(false);
17+
const { track } = useEventTracking();
1618

1719
const { publish } = useToast();
1820
const router = useRouter();
1921

2022
const handleLogout = async () => {
2123
setIsPending(true);
2224
const { error } = await supabase.auth.signOut();
23-
25+
void track("LOGOUT")
2426
if (error) {
2527
console.error("Error logging out:", error.message);
2628
publish({

frontend/app/(auth)/signup/page.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,19 @@ import Field from "@/lib/components/ui/Field";
99
import PageHeading from "@/lib/components/ui/PageHeading";
1010
import { useSupabase } from "@/lib/context/SupabaseProvider";
1111
import { useToast } from "@/lib/hooks/useToast";
12+
import { useEventTracking } from "@/services/analytics/useEventTracking";
1213

1314
export default function SignUp() {
1415
const { supabase } = useSupabase();
1516
const [email, setEmail] = useState("");
1617
const [password, setPassword] = useState("");
1718
const [isPending, setIsPending] = useState(false);
19+
const { track } = useEventTracking();
20+
1821

1922
const { publish } = useToast();
2023
const handleSignUp = async () => {
24+
void track("SIGNUP")
2125
setIsPending(true);
2226
const { data, error } = await supabase.auth.signUp({
2327
email: email,

frontend/app/config/components/ApiKeyConfig.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@ import { useState } from "react";
55

66
import Button from "@/lib/components/ui/Button";
77
import { useAxios } from "@/lib/hooks";
8+
import { useEventTracking } from "@/services/analytics/useEventTracking";
89

910
export const ApiKeyConfig = (): JSX.Element => {
1011
const [apiKey, setApiKey] = useState("");
1112
const { axiosInstance } = useAxios();
13+
const { track} = useEventTracking();
1214

1315
const handleCreateClick = async () => {
1416
try {
17+
void track("CREATE_API_KEY")
1518
const response = await axiosInstance.post("/api-key"); // replace with your api-key endpoint URL
1619
setApiKey(response.data.api_key);
1720
} catch (error) {
@@ -21,6 +24,7 @@ export const ApiKeyConfig = (): JSX.Element => {
2124

2225
const copyToClipboard = async (text: string) => {
2326
try {
27+
void track("COPY_API_KEY")
2428
await navigator.clipboard.writeText(text);
2529
} catch (err) {
2630
console.error("Failed to copy:", err);

frontend/app/explore/DocumentItem/DocumentData.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { useEffect, useState } from "react";
33

44
import { useAxios } from "@/lib/hooks";
55

6+
import { useEventTracking } from "@/services/analytics/useEventTracking";
67
import { useSupabase } from "../../../lib/context/SupabaseProvider";
78

89
interface DocumentDataProps {
@@ -16,6 +17,8 @@ type DocumentDetails = any;
1617
const DocumentData = ({ documentName }: DocumentDataProps): JSX.Element => {
1718
const { session } = useSupabase();
1819
const { axiosInstance } = useAxios();
20+
const { track } = useEventTracking();
21+
1922

2023
const [documents, setDocuments] = useState<DocumentDetails[]>([]);
2124

@@ -25,6 +28,7 @@ const DocumentData = ({ documentName }: DocumentDataProps): JSX.Element => {
2528

2629
useEffect(() => {
2730
const fetchDocuments = async () => {
31+
void track("GET_DOCUMENT_DETAILS");
2832
const res = await axiosInstance.get<{ documents: DocumentDetails[] }>(
2933
`/explore/${documentName}`
3034
);

frontend/app/explore/DocumentItem/index.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { useSupabase } from "@/lib/context/SupabaseProvider";
1616
import { useAxios } from "@/lib/hooks";
1717
import { useToast } from "@/lib/hooks/useToast";
1818
import { Document } from "@/lib/types/Document";
19+
import { useEventTracking } from "@/services/analytics/useEventTracking";
1920

2021
import DocumentData from "./DocumentData";
2122

@@ -30,13 +31,15 @@ const DocumentItem = forwardRef(
3031
const { publish } = useToast();
3132
const { session } = useSupabase();
3233
const { axiosInstance } = useAxios();
34+
const { track } = useEventTracking();
3335

3436
if (!session) {
3537
throw new Error("User session not found");
3638
}
3739

3840
const deleteDocument = async (name: string) => {
3941
setIsDeleting(true);
42+
void track("DELETE_DOCUMENT");
4043
try {
4144
await axiosInstance.delete(`/explore/${name}`);
4245
setDocuments((docs) => docs.filter((doc) => doc.name !== name)); // Optimistic update

frontend/app/upload/components/FileUploader/hooks/useFileUploader.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export const useFileUploader = () => {
2727
formData.append("file", file);
2828
try {
2929
const response = await axiosInstance.post(`/upload`, formData);
30-
track("FILE_UPLOADED");
30+
void track("FILE_UPLOADED");
3131
publish({
3232
variant: response.data.type,
3333
text:

frontend/lib/context/BrainProvider/hooks/useBrainState.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { useAxios, useToast } from "@/lib/hooks";
77

88
import { Brain } from "../types";
99

10+
1011
const createBrainFromBackend = async (
1112
axiosInstance: AxiosInstance,
1213
name: string

frontend/services/analytics/useEventTracking.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export const useEventTracking = () => {
1111
const { session } = useSupabase();
1212

1313
const track = async (event: string): Promise<void> => {
14-
await analytics?.identify(session?.user.id);
14+
await analytics?.identify(session?.user.email);
1515
await analytics?.track(event);
1616
};
1717

0 commit comments

Comments
 (0)