import { createContext, useContext, useState } from "react";

// Define a default context value
const InfluencerContext:any = createContext({
    influencers: [],
    setInfluencers: () => {},
    updateFavoriteStatus: () => {},
});

export const InfluencerProvider = ({ children }) => {
    const [influencers, setInfluencers] = useState([]);

    const updateFavoriteStatus = (userId, isFavorite) => {
        setInfluencers((prevInfluencers:any) =>
            prevInfluencers.map((category) => ({
                ...category,
                influencerCategories: category.influencerCategories.map((influencer) => ({
                    ...influencer,
                    users: influencer.users.map((user) =>
                        user.id === userId ? { ...user, favoritesCount: isFavorite ? 1 : 0 } : user
                    ),
                })),
            }))
        );
    };

    return (
        <InfluencerContext.Provider value={{ influencers, setInfluencers, updateFavoriteStatus }}>
            {children}
        </InfluencerContext.Provider>
    );
};

// Custom hook for easy access
export const useInfluencer = () => useContext(InfluencerContext);
