import { useEffect, useState } from "react"; import { ChevronDownIcon } from "@heroicons/react/20/solid"; import { ForwardIcon } from "@heroicons/react/24/solid"; import { useRouter } from "next/router"; import { signIn } from "next-auth/react"; import Details from "./primary/details"; import VideoPlayer from "../../videoPlayer"; import Link from "next/link"; import Skeleton from "react-loading-skeleton"; import Modal from "../../modal"; import AniList from "../../media/aniList"; export default function PrimarySide({ info, session, epiNumber, navigation, providerId, watchId, onList, proxy, disqus, setOnList, episodeList, timeWatched, dub, }) { const [episodeData, setEpisodeData] = useState(); const [open, setOpen] = useState(false); const [skip, setSkip] = useState(); const [loading, setLoading] = useState(true); const router = useRouter(); useEffect(() => { setLoading(true); async function fetchData() { if (info) { const anify = await fetch("/api/v2/source", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ source: providerId === "gogoanime" && !watchId.startsWith("/") ? "consumet" : "anify", providerId: providerId, watchId: watchId, episode: epiNumber, id: info.id, sub: dub ? "dub" : "sub", }), }).then((res) => res.json()); const skip = await fetch( `https://api.aniskip.com/v2/skip-times/${info.idMal}/${parseInt( epiNumber )}?types[]=ed&types[]=mixed-ed&types[]=mixed-op&types[]=op&types[]=recap&episodeLength=` ).then((res) => { if (!res.ok) { switch (res.status) { case 404: { return null; } } } return res.json(); }); const op = skip?.results?.find((item) => item.skipType === "op") || null; const ed = skip?.results?.find((item) => item.skipType === "ed") || null; setSkip({ op, ed }); setEpisodeData(anify); setLoading(false); } } fetchData(); return () => { setEpisodeData(); setSkip(); }; }, [providerId, watchId, info]); useEffect(() => { const mediaSession = navigator.mediaSession; if (!mediaSession) return; const now = navigation?.playing; const poster = now?.image || info?.bannerImage; const title = now?.title || info?.title?.romaji; const artwork = poster ? [{ src: poster, sizes: "512x512", type: "image/jpeg" }] : undefined; mediaSession.metadata = new MediaMetadata({ title: title, artist: `Moopa ${ title === info?.title?.romaji ? "- Episode " + epiNumber : `- ${info?.title?.romaji || info?.title?.english}` }`, artwork, }); }, [navigation, info, epiNumber]); function handleOpen() { setOpen(true); document.body.style.overflow = "hidden"; } function handleClose() { setOpen(false); document.body.style.overflow = "auto"; } return ( <> handleClose()}> {!session && (

Edit your list

)}
{!loading ? ( navigation && episodeData?.sources?.length !== 0 ? ( ) : (

Video is not available, please try other providers

) ) : (
)}
{info && episodeList ? (

{navigation?.playing?.title || info.title?.romaji}

Episode {epiNumber}

) : (

)}
); }