diff --git a/app/dashboard/page.tsx b/app/dashboard/page.tsx index 5ddc73f..b5ee8b6 100644 --- a/app/dashboard/page.tsx +++ b/app/dashboard/page.tsx @@ -73,11 +73,11 @@ interface HabitResponse { export default function Dashboard() { const router = useRouter(); const queryClient = useQueryClient(); - const [userToken, setUserToken] = useState(null); const [showNewHabitDialog, setShowNewHabitDialog] = useState(false); const [newHabitName, setNewHabitName] = useState(''); const [newHabitType, setNewHabitType] = useState<'positive' | 'neutral' | 'negative'>('neutral'); const [copiedToken, setCopiedToken] = useState(false); + const [currentTime, setCurrentTime] = useState(() => Date.now()); // Check authentication const { data: authData, isLoading: authLoading } = useQuery({ @@ -92,11 +92,15 @@ export default function Dashboard() { }, }); + // Update current time periodically to avoid impure Date.now() calls during render useEffect(() => { - if (authData?.token) { - setUserToken(authData.token); - } - }, [authData]); + const interval = setInterval(() => { + setCurrentTime(Date.now()); + }, 60000); // Update every minute + return () => { + clearInterval(interval); + }; + }, []); // Fetch habits const { data: habitsData, isLoading: habitsLoading } = useQuery({ @@ -154,8 +158,8 @@ export default function Dashboard() { }; const copyToken = () => { - if (userToken) { - void navigator.clipboard.writeText(userToken); + if (authData?.token) { + void navigator.clipboard.writeText(authData.token); setCopiedToken(true); setTimeout(() => { setCopiedToken(false); @@ -199,7 +203,7 @@ export default function Dashboard() { const getAverageFrequency = (habit: Habit) => { const daysSinceCreation = Math.max( 1, - Math.floor((Date.now() - new Date(habit.createdAt).getTime()) / (1000 * 60 * 60 * 24)), + Math.floor((currentTime - new Date(habit.createdAt).getTime()) / (1000 * 60 * 60 * 24)), ); if (daysSinceCreation <= 7) { @@ -320,13 +324,13 @@ export default function Dashboard() { {/* Token Alert */} - {userToken && ( + {authData?.token && (

Your access token:

- {userToken} + {authData.token}
diff --git a/app/providers.tsx b/app/providers.tsx index ed884eb..7fa23a7 100644 --- a/app/providers.tsx +++ b/app/providers.tsx @@ -1,7 +1,8 @@ 'use client'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; -import { ReactNode, useState } from 'react'; +import { useState } from 'react'; +import type { ReactNode } from 'react'; export function Providers({ children }: { children: ReactNode }) { const [queryClient] = useState(