From 545d8a3473823f0a86cad3c177dbbb4ebb794a75 Mon Sep 17 00:00:00 2001 From: Factiven Date: Mon, 17 Apr 2023 13:33:37 +0700 Subject: Snapshot Moopa v3.2 --- pages/anime/watch/[...info].js | 76 ++++++++++++++++++++++++++++++++---------- 1 file changed, 59 insertions(+), 17 deletions(-) (limited to 'pages/anime/watch') diff --git a/pages/anime/watch/[...info].js b/pages/anime/watch/[...info].js index 552102c..756e0c1 100644 --- a/pages/anime/watch/[...info].js +++ b/pages/anime/watch/[...info].js @@ -1,3 +1,5 @@ +const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || "http://localhost:3000"; + import Layout from "../../../components/layout"; // import { data } from "../../../lib/testData"; // import { aniData } from "../../../lib/infoData"; @@ -11,26 +13,30 @@ import Modal from "../../../components/modal"; import { useNotification } from "../../../lib/useNotify"; -import { useSession, signIn, signOut } from "next-auth/react"; +import { signIn, signOut } from "next-auth/react"; +import { getServerSession } from "next-auth/next"; +import { authOptions } from "../../api/auth/[...nextauth]"; + import AniList from "../../../components/media/aniList"; -import { AnimatePresence, motion as m } from "framer-motion"; -import Navbar from "../../../components/navbar"; import { Navigasi } from "../.."; -export default function Info({ info }) { - const { data: session, status } = useSession(); +export default function Info({ info, sessions, statusWatch }) { const title = info.aniData.title.romaji || info.aniData.title.english; const data = info.aniData; const fallback = info.epiFallback; const { Notification: NotificationComponent, show } = useNotification(); - // console.log(session); - - const playingEpisode = data.episodes + let playingEpisode = data.episodes .filter((item) => item.id == info.id) .map((item) => item.number); + if (playingEpisode == 0) { + playingEpisode = fallback + .filter((item) => item.id == info.id) + .map((item) => item.number); + } + const [open, setOpen] = useState(false); const [aniStatus, setAniStatus] = useState(""); const [aniProgress, setAniProgress] = useState(parseInt(playingEpisode)); @@ -56,12 +62,6 @@ export default function Info({ info }) { .filter((item) => item.id == info.id) .map((item) => item.title); - if (status === "loading") { - return

Loading...

; - } - - console.log(); - return ( <> @@ -78,7 +78,7 @@ export default function Info({ info }) {

Save this Anime to Your List

- {!session && ( + {!sessions && ( )} - {session && ( + {sessions && ( <>
@@ -378,6 +379,8 @@ export default function Info({ info }) { } export async function getServerSideProps(context) { + const session = await getServerSession(context.req, context.res, authOptions); + const { info } = context.query; if (!info) { return { @@ -418,6 +421,43 @@ export async function getServerSideProps(context) { } } + const playingEpisode = aniData.episodes + .filter((item) => item.id == id) + .map((item) => item.number); + + const resp = await fetch(`${baseUrl}/api/get-media`, { + method: "POST", + body: JSON.stringify({ + username: session?.user.name, + }), + headers: { + "Content-Type": "application/json", + }, + }); + + const prog = await resp.json(); + + const gat = prog?.lists.map((item) => item.entries); + const git = gat?.map((item) => + item.find((item) => item.media.id === parseInt(aniId)) + ); + const gut = git?.find((item) => item?.media.id === parseInt(aniId)); + + let statusWatch = "CURRENT"; + + if (gut?.status === "COMPLETED") { + statusWatch = "REPEATING"; + } else if ( + gut?.status === "REPEATING" && + gut?.media?.episodes === parseInt(playingEpisode) + ) { + statusWatch = "COMPLETED"; + } else if (gut?.status === "REPEATING") { + statusWatch = "REPEATING"; + } else if (aniData.totalEpisodes === parseInt(playingEpisode)) { + statusWatch = "COMPLETED"; + } + return { props: { info: { @@ -427,6 +467,8 @@ export async function getServerSideProps(context) { aniData, epiFallback, }, + sessions: session, + statusWatch: statusWatch, }, }; } -- cgit v1.2.3