import type { ServiceAuthTokenResponse } from '@/client'; import { toast } from 'sonner'; import { postAuthRefresh } from '@/client'; import { router } from './router'; const ACCESS_TOKEN_LOCALSTORAGE_KEY = 'token'; const REFRESH_TOKEN_LOCALSTORAGE_KEY = 'refreshToken'; export function setAccessToken(token: string) { localStorage.setItem(ACCESS_TOKEN_LOCALSTORAGE_KEY, token); } export function getAccessToken() { return localStorage.getItem(ACCESS_TOKEN_LOCALSTORAGE_KEY); } export function removeAccessToken() { localStorage.removeItem(ACCESS_TOKEN_LOCALSTORAGE_KEY); } export function setRefreshToken(refreshToken: string) { localStorage.setItem(REFRESH_TOKEN_LOCALSTORAGE_KEY, refreshToken); } export function getRefreshToken() { return localStorage.getItem(REFRESH_TOKEN_LOCALSTORAGE_KEY); } export function removeRefreshToken() { localStorage.removeItem(REFRESH_TOKEN_LOCALSTORAGE_KEY); } export function clearTokens() { removeAccessToken(); removeRefreshToken(); } export async function doRefreshToken(refreshToken: string): Promise { const { data } = await postAuthRefresh({ body: { refresh_token: refreshToken, }, }); return data?.data; } export function logout(message: string = '已登出') { clearTokens(); void router.navigate({ to: '/authorize' }).then(() => { toast.info(message); }); }