// Login
async function login(email: string, password: string) {
const response = await fetch('/auth/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email, password })
})
const data = await response.json()
// Store token
localStorage.setItem('access_token', data.access_token)
return data.user
}
// Auto-refresh before expiration
useEffect(() => {
const refreshInterval = setInterval(async () => {
const newToken = await refreshToken()
localStorage.setItem('access_token', newToken)
}, 23 * 60 * 60 * 1000) // 23 hours
return () => clearInterval(refreshInterval)
}, [])