diff --git a/web/src/app/providers.tsx b/web/src/app/providers.tsx
index e99b21e..67576f1 100644
--- a/web/src/app/providers.tsx
+++ b/web/src/app/providers.tsx
@@ -1,14 +1,23 @@
'use client';
import { useEffect } from 'react';
+import { usePathname } from 'next/navigation';
import { AuthProvider } from '@/lib/auth-context';
-import { initTelemetry } from '@/lib/telemetry';
+import { initTelemetry, trackPageView } from '@/lib/telemetry';
import type { ReactNode } from 'react';
export function Providers({ children }: { children: ReactNode }) {
+ const pathname = usePathname();
+
useEffect(() => {
initTelemetry();
}, []);
+ useEffect(() => {
+ if (pathname) {
+ trackPageView(pathname);
+ }
+ }, [pathname]);
+
return
- All data is stored locally in your browser. No data is sent to any server. + Timer data is stored locally in your browser. Anonymous usage analytics are sent to improve the app. See our Privacy Policy.
diff --git a/web/src/lib/auth-context.tsx b/web/src/lib/auth-context.tsx index 3f6edb2..21331c2 100644 --- a/web/src/lib/auth-context.tsx +++ b/web/src/lib/auth-context.tsx @@ -10,6 +10,7 @@ import { registerUser, getMe, setAuthToken, + setSyncEnabled, isAuthenticated as checkAuth, type AuthUser, } from './platform-sync'; @@ -56,6 +57,7 @@ export function AuthProvider({ children }: { children: ReactNode }) { try { const result = await loginUser(email, password); setAuthToken(result.accessToken); + setSyncEnabled(true); setUser(result.user); return true; } catch (err) { @@ -70,6 +72,7 @@ export function AuthProvider({ children }: { children: ReactNode }) { try { const result = await registerUser(email, password, displayName); setAuthToken(result.accessToken); + setSyncEnabled(true); setUser(result.user); return true; } catch (err) { @@ -82,6 +85,7 @@ export function AuthProvider({ children }: { children: ReactNode }) { const logout = useCallback(() => { setAuthToken(null); + setSyncEnabled(false); setUser(null); }, []);