diff --git a/src/features/grid/components/grid-client.tsx b/src/features/grid/components/grid-client.tsx index 246bdb4..4397f56 100644 --- a/src/features/grid/components/grid-client.tsx +++ b/src/features/grid/components/grid-client.tsx @@ -9,10 +9,10 @@ import { ExportDropdown } from "@/features/grid/components/export-dropdown"; import { useGridStore } from "@/features/grid/store/use-grid-store"; import { useSaveDrafts } from "@/features/grid/hooks/use-save-drafts"; import type { ProductRow } from "@/types/grid"; -import { CheckCircle, AlertCircle, Loader2 } from "lucide-react"; +import { CheckCircle, AlertCircle, Loader2, RefreshCw } from "lucide-react"; import { useSession } from "next-auth/react"; -import { useSearchParams } from "next/navigation"; +import { useSearchParams, useRouter, usePathname } from "next/navigation"; import type { GridFilters } from "@/types/grid"; interface GridClientProps { @@ -60,6 +60,8 @@ export function GridClient({ codeFournisseur, nomFournisseur, fournisseurs, maga const setFilter = useGridStore((s) => s.setFilter); const setActiveMagasin = useGridStore((s) => s.setActiveMagasin); const searchParams = useSearchParams(); + const router = useRouter(); + const pathname = usePathname(); const [selectedCodeins, setSelectedCodeins] = useState([]); const [isPending, startTransition] = useTransition(); @@ -187,6 +189,16 @@ export function GridClient({ codeFournisseur, nomFournisseur, fournisseurs, maga }); }; + // Force le rechargement des données depuis le serveur en ignorant le cache + // 10 min : on change le paramètre URL `_refresh`, ce qui relance le fetch + // avec `refresh=1` (→ forceRefresh) et remonte l'état serveur à jour (INIT). + const handleForceRefresh = () => { + if (isLoadingRows) return; + const params = new URLSearchParams(searchParams.toString()); + params.set("_refresh", String(Date.now())); + router.replace(`${pathname}?${params.toString()}`); + }; + if (!isMounted) { return
Initialisation de la grille...
; } @@ -233,6 +245,16 @@ export function GridClient({ codeFournisseur, nomFournisseur, fournisseurs, maga : "Chargement…"} )} +
{isAdmin && } {isAdmin && hasDrafts && (