"code": " const refreshTokens = useCallback(async () => {\n setError(null);\n try {\n const stored = tokens?.refreshToken ?? (await loadRefreshToken());\n if (!stored) {\n setError(\"No refresh token available. Sign in first.\");\n return;\n }\n const result: RefreshResult = await refresh(authConfig, {\n refreshToken: stored,\n });\n const next: Tokens = {\n accessToken: result.accessToken,\n accessTokenExpirationDate: result.accessTokenExpirationDate,\n refreshToken: result.refreshToken ?? stored,\n // Refresh responses don't always include a new id_token — keep the\n // previous one so the welcome message stays populated.\n idToken: result.idToken ?? tokens?.idToken ?? null,\n };\n setTokens(next);\n if (next.refreshToken && next.refreshToken !== stored) {\n await persistRefreshToken(next.refreshToken);\n }\n } catch (e) {\n // Refresh tokens can be revoked or expire — clear local state and surface the error.\n await clearRefreshToken();\n setTokens(null);\n setError(\n e instanceof Error\n ? `Refresh failed (${e.message}). Sign in again.`\n : `Refresh failed. Sign in again.`,\n );\n }\n }, [tokens]);",
0 commit comments