import { ReactNode, createContext, useContext, useState } from "react"; interface PageState { theaterMode: boolean; aspectRatio: string; } interface PlayerState { currentTime: number; isPlaying: boolean; autoPlay: boolean; autoNext: boolean; } interface RatingModalState { isOpen: boolean; isFullscreen: boolean; } interface WatchPageContextProps { pageState: PageState; setPageState: React.Dispatch>; playerState: PlayerState; setPlayerState: React.Dispatch>; userData: object; setUserData: React.Dispatch>; dataMedia: object; setDataMedia: React.Dispatch>; ratingModalState: RatingModalState; setRatingModalState: React.Dispatch>; track: object; setTrack: React.Dispatch>; } interface WatchPageProviderProps { children: ReactNode; } export const WatchPageContext = createContext( {} as WatchPageContextProps ); export const WatchPageProvider = ({ children }: WatchPageProviderProps) => { const [pageState, setPageState] = useState({ theaterMode: false, aspectRatio: "16/9" }); const [playerState, setPlayerState] = useState({ currentTime: 0, isPlaying: false, autoPlay: false, autoNext: false }); const [userData, setUserData] = useState({}); const [dataMedia, setDataMedia] = useState({}); const [ratingModalState, setRatingModalState] = useState({ isOpen: false, isFullscreen: false }); const [track, setTrack] = useState({}); return ( {children} ); }; export function useWatchProvider() { return useContext(WatchPageContext); }