fix: use logout in both waiting and actual refreshing for/of the token

This commit is contained in:
2025-06-02 23:15:21 +02:00
parent ce44ef3e62
commit 2389058ddc

View File

@ -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");
}