import { useState, useEffect, createContext, useContext, ReactNode, } from "react"; import { ContentItem } from "../lib/types"; interface MyListContextType { myList: ContentItem[]; addToMyList: (item: ContentItem) => void; removeFromMyList: (id: string) => void; isInMyList: (id: string) => boolean; } const MyListContext = createContext(undefined); export const MyListProvider: React.FC<{ children: ReactNode }> = ({ children, }) => { const [myList, setMyList] = useState([]); // Load saved items from local storage useEffect(() => { const savedList = localStorage.getItem("myList"); if (savedList) { try { setMyList(JSON.parse(savedList)); } catch (error) { console.error("Failed to parse saved list:", error); } } }, []); // Save items to local storage when list changes useEffect(() => { localStorage.setItem("myList", JSON.stringify(myList)); }, [myList]); const addToMyList = (item: ContentItem) => { setMyList((prev) => { // Only add if not already in list if (!prev.some((listItem) => listItem.id === item.id)) { return [...prev, item]; } return prev; }); }; const removeFromMyList = (id: string) => { setMyList((prev) => prev.filter((item) => item.id !== id)); }; const isInMyList = (id: string) => { return myList.some((item) => item.id === id); }; return ( {children} ); }; export const useMyList = () => { const context = useContext(MyListContext); if (context === undefined) { throw new Error("useMyList must be used within a MyListProvider"); } return context; };