fix: use logout in both waiting and actual refreshing for/of the token
This commit is contained in:
@ -25,13 +25,22 @@ const processRefreshQueue = async (token: string | null) => {
|
||||
refreshQueue = [];
|
||||
};
|
||||
|
||||
const logout = async (accountId: string) => {
|
||||
const db = useDbStore.getState().db;
|
||||
const requireSignIn = useAuth.getState().requireSignIn;
|
||||
|
||||
if (db) {
|
||||
await deleteAccount(db, accountId);
|
||||
}
|
||||
requireSignIn?.();
|
||||
};
|
||||
|
||||
const refreshToken = async (
|
||||
accountId: string,
|
||||
refreshToken: string,
|
||||
): Promise<{ access: string; refresh: string }> => {
|
||||
const db = useDbStore.getState().db;
|
||||
const loadAccounts = useAuth.getState().loadAccounts;
|
||||
const requireSignIn = useAuth.getState().requireSignIn;
|
||||
|
||||
if (!db) {
|
||||
console.log("No database connection available.");
|
||||
@ -52,8 +61,7 @@ const refreshToken = async (
|
||||
return { access: response.access, refresh: response.refresh };
|
||||
} catch (err) {
|
||||
console.error("Token refresh failed:", err);
|
||||
await deleteAccount(db, accountId);
|
||||
requireSignIn?.();
|
||||
await logout(accountId);
|
||||
processRefreshQueue(null);
|
||||
throw err;
|
||||
} finally {
|
||||
@ -93,6 +101,7 @@ axios.interceptors.request.use(
|
||||
}
|
||||
|
||||
if (!token) {
|
||||
await logout(account!.accountId);
|
||||
throw new Error("No token available");
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user