fix(auth): enable sync on login/logout + fix data copy + wire page-view tracking
This commit is contained in:
parent
9d50a196bc
commit
1f18c53b76
@ -1,14 +1,23 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
|
import { usePathname } from 'next/navigation';
|
||||||
import { AuthProvider } from '@/lib/auth-context';
|
import { AuthProvider } from '@/lib/auth-context';
|
||||||
import { initTelemetry } from '@/lib/telemetry';
|
import { initTelemetry, trackPageView } from '@/lib/telemetry';
|
||||||
import type { ReactNode } from 'react';
|
import type { ReactNode } from 'react';
|
||||||
|
|
||||||
export function Providers({ children }: { children: ReactNode }) {
|
export function Providers({ children }: { children: ReactNode }) {
|
||||||
|
const pathname = usePathname();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
initTelemetry();
|
initTelemetry();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (pathname) {
|
||||||
|
trackPageView(pathname);
|
||||||
|
}
|
||||||
|
}, [pathname]);
|
||||||
|
|
||||||
return <AuthProvider>{children}</AuthProvider>;
|
return <AuthProvider>{children}</AuthProvider>;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -349,7 +349,7 @@ export default function SettingsPage() {
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<p className="text-xs mt-3" style={{ color: 'var(--cm-text-tertiary)' }}>
|
<p className="text-xs mt-3" style={{ color: 'var(--cm-text-tertiary)' }}>
|
||||||
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 <Link href="/privacy" style={{ color: 'var(--cm-accent)' }}>Privacy Policy</Link>.
|
See our <Link href="/privacy" style={{ color: 'var(--cm-accent)' }}>Privacy Policy</Link>.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import {
|
|||||||
registerUser,
|
registerUser,
|
||||||
getMe,
|
getMe,
|
||||||
setAuthToken,
|
setAuthToken,
|
||||||
|
setSyncEnabled,
|
||||||
isAuthenticated as checkAuth,
|
isAuthenticated as checkAuth,
|
||||||
type AuthUser,
|
type AuthUser,
|
||||||
} from './platform-sync';
|
} from './platform-sync';
|
||||||
@ -56,6 +57,7 @@ export function AuthProvider({ children }: { children: ReactNode }) {
|
|||||||
try {
|
try {
|
||||||
const result = await loginUser(email, password);
|
const result = await loginUser(email, password);
|
||||||
setAuthToken(result.accessToken);
|
setAuthToken(result.accessToken);
|
||||||
|
setSyncEnabled(true);
|
||||||
setUser(result.user);
|
setUser(result.user);
|
||||||
return true;
|
return true;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@ -70,6 +72,7 @@ export function AuthProvider({ children }: { children: ReactNode }) {
|
|||||||
try {
|
try {
|
||||||
const result = await registerUser(email, password, displayName);
|
const result = await registerUser(email, password, displayName);
|
||||||
setAuthToken(result.accessToken);
|
setAuthToken(result.accessToken);
|
||||||
|
setSyncEnabled(true);
|
||||||
setUser(result.user);
|
setUser(result.user);
|
||||||
return true;
|
return true;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@ -82,6 +85,7 @@ export function AuthProvider({ children }: { children: ReactNode }) {
|
|||||||
|
|
||||||
const logout = useCallback(() => {
|
const logout = useCallback(() => {
|
||||||
setAuthToken(null);
|
setAuthToken(null);
|
||||||
|
setSyncEnabled(false);
|
||||||
setUser(null);
|
setUser(null);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user