diff --git a/src/components/admin/AbandonedCartDashboard.tsx b/src/components/admin/AbandonedCartDashboard.tsx index ef07496..83251dd 100644 --- a/src/components/admin/AbandonedCartDashboard.tsx +++ b/src/components/admin/AbandonedCartDashboard.tsx @@ -1,6 +1,6 @@ "use client"; -import { useState, useCallback, useEffect, useRef } from "react"; +import { useState, useCallback, useEffect, useRef, useEffectEvent } from "react"; import { getAbandonedCarts, manuallyCloseAbandonedCart, resendAbandonedCartEmail, type AbandonedCart } from "@/actions/email-automation/abandoned-cart"; type Props = { brandId: string }; @@ -197,6 +197,10 @@ export default function AbandonedCartDashboard({ brandId }: Props) { function CartDetailModal({ cart, onClose }: { cart: AbandonedCart | null; onClose: () => void }) { const dialogRef = useRef(null); + const onCloseEvent = useEffectEvent(() => { + onClose(); + }); + useEffect(() => { const dialog = dialogRef.current; if (!dialog) return; @@ -204,13 +208,13 @@ function CartDetailModal({ cart, onClose }: { cart: AbandonedCart | null; onClos if (!cart && dialog.open) dialog.close(); const onCancel = (e: Event) => { e.preventDefault(); - onClose(); + onCloseEvent(); }; dialog.addEventListener("cancel", onCancel); return () => { dialog.removeEventListener("cancel", onCancel); }; - }, [cart, onClose]); + }, [cart]); if (!cart) return null; diff --git a/src/components/admin/BrandSelector.tsx b/src/components/admin/BrandSelector.tsx index 660f472..93c82cd 100644 --- a/src/components/admin/BrandSelector.tsx +++ b/src/components/admin/BrandSelector.tsx @@ -152,7 +152,7 @@ export default function BrandSelector({