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:
Manus
2026-06-10 12:57:48 +00:00
parent 020156d62c
commit e7f5092263
2 changed files with 8 additions and 0 deletions

View File

@@ -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({

View File

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