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 = []; 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 ( const refreshToken = async (
accountId: string, accountId: string,
refreshToken: string, refreshToken: string,
): Promise<{ access: string; refresh: string }> => { ): Promise<{ access: string; refresh: string }> => {
const db = useDbStore.getState().db; const db = useDbStore.getState().db;
const loadAccounts = useAuth.getState().loadAccounts; const loadAccounts = useAuth.getState().loadAccounts;
const requireSignIn = useAuth.getState().requireSignIn;
if (!db) { if (!db) {
console.log("No database connection available."); console.log("No database connection available.");
@ -52,8 +61,7 @@ const refreshToken = async (
return { access: response.access, refresh: response.refresh }; return { access: response.access, refresh: response.refresh };
} catch (err) { } catch (err) {
console.error("Token refresh failed:", err); console.error("Token refresh failed:", err);
await deleteAccount(db, accountId); await logout(accountId);
requireSignIn?.();
processRefreshQueue(null); processRefreshQueue(null);
throw err; throw err;
} finally { } finally {
@ -93,6 +101,7 @@ axios.interceptors.request.use(
} }
if (!token) { if (!token) {
await logout(account!.accountId);
throw new Error("No token available"); throw new Error("No token available");
} }