Checkpoint: Correction du clignotement sur la page /login : (1) redirectToLoginIfUnauthorized dans main.tsx ne redirige plus si déjà sur /login, (2) ParametresContext désactive la requête parametres.get sur /login (enabled: !isLoginPage via useLocation). 0 erreur TypeScript.
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
// Lit depuis la BDD via tRPC, avec fallback sur les valeurs par défaut
|
// Lit depuis la BDD via tRPC, avec fallback sur les valeurs par défaut
|
||||||
|
|
||||||
import { createContext, useContext, useCallback, type ReactNode } from 'react';
|
import { createContext, useContext, useCallback, type ReactNode } from 'react';
|
||||||
|
import { useLocation } from 'wouter';
|
||||||
import { trpc } from '@/lib/trpc';
|
import { trpc } from '@/lib/trpc';
|
||||||
|
|
||||||
export interface Parametres {
|
export interface Parametres {
|
||||||
@@ -37,10 +38,14 @@ function parseNum(val: string | null | undefined, fallback: number): number {
|
|||||||
|
|
||||||
export function ParametresProvider({ children }: { children: ReactNode }) {
|
export function ParametresProvider({ children }: { children: ReactNode }) {
|
||||||
const utils = trpc.useUtils();
|
const utils = trpc.useUtils();
|
||||||
|
const [pathname] = useLocation();
|
||||||
|
// Ne pas faire la requête sur /login pour éviter les erreurs 401 qui causent des clignotements
|
||||||
|
const isLoginPage = pathname === '/login';
|
||||||
|
|
||||||
const { data: rawParams, isLoading } = trpc.parametres.get.useQuery(undefined, {
|
const { data: rawParams, isLoading } = trpc.parametres.get.useQuery(undefined, {
|
||||||
retry: false,
|
retry: false,
|
||||||
refetchOnWindowFocus: false,
|
refetchOnWindowFocus: false,
|
||||||
|
enabled: !isLoginPage,
|
||||||
});
|
});
|
||||||
|
|
||||||
const setBulkMutation = trpc.parametres.setBulk.useMutation({
|
const setBulkMutation = trpc.parametres.setBulk.useMutation({
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ const redirectToLoginIfUnauthorized = (error: unknown) => {
|
|||||||
|
|
||||||
if (!isUnauthorized) return;
|
if (!isUnauthorized) return;
|
||||||
|
|
||||||
|
// Ne pas rediriger si on est déjà sur la page de login (évite la boucle)
|
||||||
|
if (window.location.pathname === '/login') return;
|
||||||
|
|
||||||
window.location.href = getLoginUrl();
|
window.location.href = getLoginUrl();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user