fix: stabiliser validatedInvoiceIds avec useMemo pour bouton téléchargement BAP
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState, useMemo } from "react";
|
||||||
import DashboardLayout from "@/components/DashboardLayout";
|
import DashboardLayout from "@/components/DashboardLayout";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
@@ -155,7 +155,12 @@ export default function InvoicesBAP() {
|
|||||||
// Filter for BAP invoices only (Abonnement = NON, isSubscription = 0)
|
// Filter for BAP invoices only (Abonnement = NON, isSubscription = 0)
|
||||||
const invoices = allInvoices?.filter(inv => inv.isSubscription === 0);
|
const invoices = allInvoices?.filter(inv => inv.isSubscription === 0);
|
||||||
// IDs des factures déjà validées BAP (pour charger leurs pdfUrl depuis bapHistory)
|
// IDs des factures déjà validées BAP (pour charger leurs pdfUrl depuis bapHistory)
|
||||||
const validatedInvoiceIds = (invoices || []).filter(inv => inv.bapValidated === 1).map(inv => inv.id);
|
// Stabilisé avec useMemo pour éviter les re-renders infinis (anti-pattern tRPC)
|
||||||
|
const validatedInvoiceIds = useMemo(
|
||||||
|
() => (invoices || []).filter(inv => inv.bapValidated === 1).map(inv => inv.id),
|
||||||
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
[invoices?.map(i => i.id).join(',')]
|
||||||
|
);
|
||||||
const { data: persistedBapPdfUrls } = trpc.invoices.getBapPdfUrls.useQuery(
|
const { data: persistedBapPdfUrls } = trpc.invoices.getBapPdfUrls.useQuery(
|
||||||
{ invoiceIds: validatedInvoiceIds },
|
{ invoiceIds: validatedInvoiceIds },
|
||||||
{ enabled: validatedInvoiceIds.length > 0 }
|
{ enabled: validatedInvoiceIds.length > 0 }
|
||||||
|
|||||||
Reference in New Issue
Block a user