diff --git a/src/providers/cart.tsx b/src/providers/cart.tsx index c73dc00..bb19f64 100644 --- a/src/providers/cart.tsx +++ b/src/providers/cart.tsx @@ -36,16 +36,27 @@ export const CartContext = createContext({ }); const CartProvider = ({ children }: { children: ReactNode }) => { - const [products, setProducts] = useState([]); - - useEffect(() => { - setProducts( - JSON.parse(localStorage.getItem("@fsw-store/cart-products") || "[]"), - ); - }, []); + const LOCAL_STORAGE_KEY = "@fsw-store/cart-products"; + + const [products, setProducts] = useState(() => { + if (typeof window !== "undefined") { + const recoveryProducts = localStorage.getItem( + LOCAL_STORAGE_KEY, + ) as string; + return JSON.parse(recoveryProducts) ?? []; + } else { + return []; + } + }); useEffect(() => { - localStorage.setItem("@fsw-store/cart-products", JSON.stringify(products)); + if (typeof window !== "undefined") { + if (products.length === 0) { + localStorage.removeItem(LOCAL_STORAGE_KEY); + } else { + localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(products)); + } + } }, [products]); // Total sem descontos