"use client"; import { create } from "zustand"; // Promedio/cantidad de reseñas aprobadas por producto, para las estrellas // de las tarjetas. Se pide UNA vez por sesion (/api/reviews/summary) en // vez de una llamada por tarjeta, y sin depender del cache ISR de las // paginas (una reseña recien aprobada aparece al recargar). interface ReviewSummaryState { summary: Record; status: "idle" | "loading" | "ready"; load: () => void; } export const useReviewSummaryStore = create()((set, get) => ({ summary: {}, status: "idle", load: () => { if (get().status !== "idle") return; set({ status: "loading" }); fetch("/api/reviews/summary") .then((response) => response.json()) .then((data) => set({ summary: data.summary ?? {}, status: "ready" })) .catch(() => set({ status: "ready" })); }, }));