feat(auth): tell the user when the session expired

Every 401 from Auth or Core now goes through useSessionExpired: the login page
says the session expired and returns to the last page after login. App no
longer removes a token that only the browser clock calls expired, so a backend
401 is the one signal. A 403 on the profile now shows an error instead.
This commit is contained in:
lobo committed 2026-09-24 13:29:09 +02:00
1 parent 03259d0515
commit d4c0f8d8f3
19 files changed
+351 -35

No files matched your search

+6
View File
@@ -2,6 +2,7 @@ import {useState} from 'react';
import {useNavigate} from 'react-router-dom';
import {useTranslation} from 'react-i18next';
import {toast} from 'sonner';
import useSessionExpired from './useSessionExpired.js';
const RELOAD_DELAY_MS = 4000;
@@ -12,6 +13,7 @@ const RELOAD_DELAY_MS = 4000;
export default function useForceSync(onStarted) {
const {t} = useTranslation();
const navigate = useNavigate();
const expireSession = useSessionExpired();
const [busy, setBusy] = useState(false);
const trigger = async () => {
@@ -26,6 +28,10 @@ export default function useForceSync(onStarted) {
method: 'POST',
headers: {'Authorization': `Bearer ${token}`},
});
if (response.status === 401) {
expireSession();
return;
}
if (response.status === 429) {
const json = await response.json().catch(() => ({}));
toast.warning(t('LIBRARY.SYNC_COOLDOWN', {seconds: json.retryAfterSeconds ?? 60}));