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 = [];
|
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");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user