From 97d2c9de109c16a906203f72f2bd845a35dee87e Mon Sep 17 00:00:00 2001 From: Mamadou DICKO <63923024+mamadoudicko@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:36:15 +0200 Subject: [PATCH] [Analytics]: Add tracking (#375) * feat: add june tracking config * feat(tracking): add page view tracking * feat(tracking): add event tracking --- .frontend_env.example | 1 + frontend/app/(auth)/login/page.tsx | 4 +- frontend/app/layout.tsx | 25 +- frontend/lib/components/TrackingWrapper.tsx | 8 + frontend/package.json | 1 + .../services/analytics/useEventTracking.ts | 22 + frontend/services/analytics/useJune.ts | 25 + .../services/analytics/usePageTracking.ts | 25 + frontend/yarn.lock | 981 +++++++++++++++++- 9 files changed, 1075 insertions(+), 17 deletions(-) create mode 100644 frontend/lib/components/TrackingWrapper.tsx create mode 100644 frontend/services/analytics/useEventTracking.ts create mode 100644 frontend/services/analytics/useJune.ts create mode 100644 frontend/services/analytics/usePageTracking.ts diff --git a/.frontend_env.example b/.frontend_env.example index 607c6b591..7d0484cfb 100644 --- a/.frontend_env.example +++ b/.frontend_env.example @@ -4,3 +4,4 @@ NEXT_PUBLIC_SUPABASE_URL=XXXX NEXT_PUBLIC_SUPABASE_ANON_KEY=XXX NEXT_PUBLIC_GROWTHBOOK_URL=https://cdn.growthbook.io/api/features/sdk-AjVqDdrxa4ETFCoD NEXT_PUBLIC_GROWTHBOOK_API_KEY = "sdk-AjVqDdrxa4ETFCoD" +NEXT_PUBLIC_JUNE_API_KEY= \ No newline at end of file diff --git a/frontend/app/(auth)/login/page.tsx b/frontend/app/(auth)/login/page.tsx index e50ffe168..55988981e 100644 --- a/frontend/app/(auth)/login/page.tsx +++ b/frontend/app/(auth)/login/page.tsx @@ -12,6 +12,7 @@ import PageHeading from "@/lib/components/ui/PageHeading"; import { useSupabase } from "@/lib/context/SupabaseProvider"; import { useToast } from "@/lib/hooks/useToast"; +import { useEventTracking } from "@/services/analytics/useEventTracking"; import { GoogleLoginButton } from "./components/GoogleLogin"; import { MagicLinkLogin } from "./components/MagicLinkLogin"; @@ -20,8 +21,8 @@ export default function Login() { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [isPending, setIsPending] = useState(false); - const { publish } = useToast(); + const { track } = useEventTracking(); const handleLogin = async () => { setIsPending(true); @@ -45,6 +46,7 @@ export default function Login() { }; if (session?.user !== undefined) { + track("SIGNED_IN"); redirect("/upload"); } diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx index a88bfed14..bc7990c39 100644 --- a/frontend/app/layout.tsx +++ b/frontend/app/layout.tsx @@ -5,11 +5,11 @@ import { cookies, headers } from "next/headers"; import Footer from "@/lib/components/Footer"; import { NavBar } from "@/lib/components/NavBar"; +import { TrackingWrapper } from "@/lib/components/TrackingWrapper"; import { ToastProvider } from "@/lib/components/ui/Toast"; import { BrainProvider, FeatureFlagsProvider } from "@/lib/context"; import { BrainConfigProvider } from "@/lib/context/BrainConfigProvider/brain-config-provider"; import { SupabaseProvider } from "@/lib/context/SupabaseProvider"; - import "./globals.css"; const inter = Inter({ subsets: ["latin"] }); @@ -40,17 +40,18 @@ const RootLayout = async ({ className={`bg-white text-black min-h-screen flex flex-col dark:bg-black dark:text-white w-full ${inter.className}`} > - - - - - -
{children}
-