'use client' import { useTranslation } from '../i18n/useTranslation'; import { useState, useEffect } from 'react' import useAuthStore from '../store/authStore' // Helper to decode JWT and get expiry function getTokenExpiry(token: string | null): Date | null { if (!token) return null; try { const [, payload] = token.split("."); const { exp } = JSON.parse(atob(payload)); return exp ? new Date(exp * 1000) : null; } catch { return null; } } export default function TestRefreshPage() { const { t } = useTranslation(); const { accessToken, refreshAuthToken, user } = useAuthStore() const [tokenInfo, setTokenInfo] = useState({}) const [refreshStatus, setRefreshStatus] = useState('') // Update token info every second useEffect(() => { const interval = setInterval(() => { if (accessToken) { const expiry = getTokenExpiry(accessToken) const now = Date.now() const timeLeft = expiry ? expiry.getTime() - now : 0 setTokenInfo({ hasToken: !!accessToken, tokenPrefix: accessToken ? `${accessToken.substring(0, 20)}...` : null, expiresAt: expiry ? expiry.toLocaleTimeString() : 'Unknown', timeLeftMs: timeLeft, timeLeftMin: Math.round(timeLeft / 60000), timeLeftSec: Math.round(timeLeft / 1000), isExpired: timeLeft <= 0 }) } else { setTokenInfo({ hasToken: false }) } }, 1000) return () => clearInterval(interval) }, [accessToken]) const handleManualRefresh = async () => { setRefreshStatus('Refreshing...') try { const success = await refreshAuthToken() setRefreshStatus(success ? '✅ Success' : '❌ Failed') } catch (error) { setRefreshStatus(`❌ Error: ${error}`) } setTimeout(() => setRefreshStatus(''), 3000) } return (

{t('autofix.k00016501')}

{/* Token Status */}

{t('autofix.kee28b8c6')}

{t('autofix.k47b952de')}{tokenInfo.hasToken ? t('autofix.k8e3ac56f') : t('autofix.k69519588')}
{tokenInfo.hasToken && ( <>
{t('autofix.k61f6cd4e')}{tokenInfo.tokenPrefix}
{t('autofix.k3d5fe74a')}{tokenInfo.expiresAt}
{t('autofix.k4ed7f4d1')} {tokenInfo.timeLeftMin}m {tokenInfo.timeLeftSec % 60}s
{t('autofix.k81c0b74b')}{tokenInfo.isExpired ? t('autofix.kb2f958ef') : t('autofix.k0831f6d6')}
)}
{/* User Info */}

{t('autofix.k0d6626e3')}

              {JSON.stringify(user, null, 2)}
            
{/* Manual Controls */}

{t('autofix.kb74d7c51')}

{refreshStatus && (
{refreshStatus}
)}
{/* Instructions */}

{t('autofix.k9213db6e')}

  1. {t('autofix.k0778fa87')}
  2. {t('autofix.k1405afab')}
  3. {t('autofix.kb6b367b7')}
  4. {t('autofix.kf0d33884')}
  5. {t('autofix.k73d4a156')}
  6. {t('autofix.kb01addda')}
) }