refactor(client): improve token handler stability

Signed-off-by: Noa Virellia <noa@requiem.garden>
This commit is contained in:
2026-01-21 15:36:59 +08:00
parent 8e41514d05
commit a060901cc3
2 changed files with 21 additions and 9 deletions

View File

@@ -30,9 +30,16 @@ export function clearTokens() {
}
export async function doSetTokenByCode(code: string) {
const { data } = await axiosClient.post<{ access_token: string; refresh_token: string }>('/auth/token', { code }, { headers: HEADER_API_VERSION });
return new Promise<void>((resolve, reject) => {
axiosClient.post<{ access_token: string; refresh_token: string }>('/auth/token', { code }, { headers: HEADER_API_VERSION }).then(({ data }) => {
console.log(data);
setToken(data.access_token);
setRefreshToken(data.refresh_token);
resolve();
}).catch((error) => {
reject(error);
});
});
}
export async function doRefreshToken() {

View File

@@ -1,5 +1,5 @@
import { createFileRoute, useNavigate } from '@tanstack/react-router';
import { useState } from 'react';
import { useEffect, useState } from 'react';
import z from 'zod';
import { doSetTokenByCode } from '@/lib/token';
@@ -16,10 +16,15 @@ function RouteComponent() {
const { code } = Route.useSearch();
const [status, setStatus] = useState('Loading...');
const navigate = useNavigate();
useEffect(() => {
doSetTokenByCode(code).then(() => {
void navigate({ to: '/' });
}).catch((_) => {
setStatus('Error getting token');
});
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return <div>{status}</div>;
}