From 9a9e892a1f43a61188cfd08ef1faaf5100d0a41a Mon Sep 17 00:00:00 2001 From: Factiven Date: Mon, 17 Apr 2023 16:17:45 +0700 Subject: 4th fixes --- pages/anime/[...id].js | 129 ++++++++++++++++++++++------------------- pages/anime/watch/[...info].js | 70 ++++++++++++++++++++-- pages/api/get-media.js | 76 ------------------------ pages/api/get-user.js | 31 ---------- pages/api/update-user.js | 31 ---------- pages/api/watched-episode.js | 43 -------------- pages/index.js | 18 ++---- pages/testing.js | 92 ----------------------------- 8 files changed, 141 insertions(+), 349 deletions(-) delete mode 100644 pages/api/get-media.js delete mode 100644 pages/api/get-user.js delete mode 100644 pages/api/update-user.js delete mode 100644 pages/api/watched-episode.js delete mode 100644 pages/testing.js (limited to 'pages') diff --git a/pages/anime/[...id].js b/pages/anime/[...id].js index 1df8ea4..8fba4fb 100644 --- a/pages/anime/[...id].js +++ b/pages/anime/[...id].js @@ -73,25 +73,6 @@ export default function Himitsu({ episodeIndo = episode; } - async function handleUpdate(data) { - if (!sessions) return; - const res = await fetch("/api/update-user", { - method: "POST", - body: JSON.stringify({ - name: sessions?.user.name, - newData: { - recentWatch: data, - }, - }), - headers: { - "Content-Type": "application/json", - }, - }); - console.log(res.status); - } - - // console.log(lastPlayed); - return ( <> @@ -158,24 +139,7 @@ export default function Himitsu({
{epi1 && epi1[0] ? ( - - handleUpdate({ - title: { - romaji: - info.title.romaji || - info.title.english || - info.title.native, - }, - description: info.description, - coverImage: { - extraLarge: info.image, - }, - id: parseInt(info.id), - }) - } - > +

- handleUpdate({ - title: { - romaji: - info.title.romaji || - info.title.english || - info.title.native, - }, - description: info.description, - coverImage: { - extraLarge: info.image, - }, - id: parseInt(info.id), - }) - } href={`/anime/watch/${episode.id}/${info.id}/${ item ? `${item.time}` : "" }`} @@ -615,18 +564,80 @@ export async function getServerSideProps(context) { let lastPlayed = null; if (session) { - const res = await fetch( - `https://moopa-anilist.vercel.app/api/get-media?username=${query.user}` - ); + const response = await fetch("https://graphql.anilist.co/", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + query: ` + query ($username: String, $status: MediaListStatus) { + MediaListCollection(userName: $username, type: ANIME, status: $status, sort: SCORE_DESC) { + user { + id + name + about (asHtml: true) + createdAt + avatar { + large + } + statistics { + anime { + count + episodesWatched + meanScore + minutesWatched + } + } + bannerImage + mediaListOptions { + animeList { + sectionOrder + } + } + } + lists { + status + name + entries { + id + mediaId + status + progress + score + media { + id + status + title { + english + romaji + } + episodes + coverImage { + large + } + } + } + } + } + } + `, + variables: { + username: session?.user.name, + }, + }), + }); + + const dat = await response.json(); - const resp = await fetch(`/api/get-user?userName=${session?.user.name}`); - const data = await resp.json(); + // const resp = await fetch(`/api/get-user?userName=${session?.user.name}`); + // const data = await resp.json(); - lastPlayed = data?.recentWatch.filter( + lastPlayed = session?.user?.recentWatch?.filter( (item) => item.title.romaji === info.title.romaji )[0]?.episode; - const prog = await res.json(); + const prog = dat.data.MediaListCollection; const gat = prog.lists.map((item) => item.entries); const git = gat.map((item) => diff --git a/pages/anime/watch/[...info].js b/pages/anime/watch/[...info].js index e7195d6..ba3a078 100644 --- a/pages/anime/watch/[...info].js +++ b/pages/anime/watch/[...info].js @@ -423,11 +423,73 @@ export async function getServerSideProps(context) { .filter((item) => item.id == id) .map((item) => item.number); - const resp = await fetch( - `https://moopa-anilist.vercel.app/api/get-media?username=${query.user}` - ); + const response = await fetch("https://graphql.anilist.co/", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + query: ` + query ($username: String, $status: MediaListStatus) { + MediaListCollection(userName: $username, type: ANIME, status: $status, sort: SCORE_DESC) { + user { + id + name + about (asHtml: true) + createdAt + avatar { + large + } + statistics { + anime { + count + episodesWatched + meanScore + minutesWatched + } + } + bannerImage + mediaListOptions { + animeList { + sectionOrder + } + } + } + lists { + status + name + entries { + id + mediaId + status + progress + score + media { + id + status + title { + english + romaji + } + episodes + coverImage { + large + } + } + } + } + } + } + `, + variables: { + username: session?.user.name, + }, + }), + }); + + const dat = await response.json(); - const prog = await resp.json(); + const prog = dat.data.MediaListCollection; const gat = prog?.lists.map((item) => item.entries); const git = gat?.map((item) => diff --git a/pages/api/get-media.js b/pages/api/get-media.js deleted file mode 100644 index 8558f63..0000000 --- a/pages/api/get-media.js +++ /dev/null @@ -1,76 +0,0 @@ -export default async function handler(req, res) { - const { username, status } = req.query; - - try { - const response = await fetch("https://graphql.anilist.co/", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - query: ` - query ($username: String, $status: MediaListStatus) { - MediaListCollection(userName: $username, type: ANIME, status: $status, sort: SCORE_DESC) { - user { - id - name - about (asHtml: true) - createdAt - avatar { - large - } - statistics { - anime { - count - episodesWatched - meanScore - minutesWatched - } - } - bannerImage - mediaListOptions { - animeList { - sectionOrder - } - } - } - lists { - status - name - entries { - id - mediaId - status - progress - score - media { - id - status - title { - english - romaji - } - episodes - coverImage { - large - } - } - } - } - } - } - `, - variables: { - username, - status, - }, - }), - }); - - const data = await response.json(); - res.status(200).json(data.data.MediaListCollection); - } catch (error) { - console.error(error); - res.status(500).json({ message: "Internal server error" }); - } -} diff --git a/pages/api/get-user.js b/pages/api/get-user.js deleted file mode 100644 index 94ec845..0000000 --- a/pages/api/get-user.js +++ /dev/null @@ -1,31 +0,0 @@ -import clientPromise from "../../lib/mongodb"; - -export async function getUser(userId) { - const client = await clientPromise; - const db = client.db("authbase"); - - const collection = db.collection("users"); - const user = await collection.findOne({ id: userId }); - - if (user && user._id) { - user._id = String(user._id); - } - - return user; -} - -export default async function handler(req, res) { - const { userId } = req.query; - - if (!userId) { - return res.status(400).json({ message: "User ID is required" }); - } - - const user = await getUser(userId); - - if (!user) { - return res.status(404).json({ message: "User not found" }); - } - - res.status(200).json(user); -} diff --git a/pages/api/update-user.js b/pages/api/update-user.js deleted file mode 100644 index 67c80d0..0000000 --- a/pages/api/update-user.js +++ /dev/null @@ -1,31 +0,0 @@ -// pages/api/update-user.js -import clientPromise from "../../lib/mongodb"; - -export default async function handler(req, res) { - const client = await clientPromise; - const db = client.db("authbase"); - const collection = db.collection("users"); - - const { name, newData } = req.body; // id is the user ID and newData is the new data you want to set - - try { - const existingData = await collection.findOne({ - name: name, - "recentWatch.id": newData.recentWatch.id, - }); - - if (existingData) { - res.status(200).json({ message: "Data already exists" }); - return; - } - - const result = await collection.updateOne( - { name: name }, - { $addToSet: newData } - ); - - res.status(200).json(result); - } catch (error) { - res.status(500).json({ error: "Unable to update user data" }); - } -} diff --git a/pages/api/watched-episode.js b/pages/api/watched-episode.js deleted file mode 100644 index 271348d..0000000 --- a/pages/api/watched-episode.js +++ /dev/null @@ -1,43 +0,0 @@ -// pages/api/update-user.js -import clientPromise from "../../lib/mongodb"; - -export default async function handler(req, res) { - const client = await clientPromise; - const db = client.db("authbase"); - const collection = db.collection("users"); - - const { username, id, newData } = req.body; // id is the user ID and newData is the new data you want to set - - try { - const result = await collection.updateOne( - { - name: username, - "recentWatch.id": id, - "recentWatch.episode.id": { $ne: newData.id }, - }, - { $addToSet: { "recentWatch.$.episode": newData } } - ); - - if (result.modifiedCount === 0) { - const updateResult = await collection.updateOne( - { - name: username, - "recentWatch.id": id, - "recentWatch.episode.id": newData.id, - "recentWatch.episode.time": { $ne: newData.time }, - }, - { $set: { "recentWatch.$.episode.$[elem].time": newData.time } }, - { arrayFilters: [{ "elem.id": newData.id }] } - ); - if (updateResult.modifiedCount === 0) { - console.log("The episode already exists with the same time."); - } - } - - console.log("Successfully updated the recentWatch collection."); - - res.status(200).json(result); - } catch (error) { - res.status(500).json({ error: "Unable to update user data", dat: newData }); - } -} diff --git a/pages/index.js b/pages/index.js index 79e99ed..5fe7e37 100644 --- a/pages/index.js +++ b/pages/index.js @@ -102,9 +102,7 @@ export default function Home({ detail, populars, sessions }) { const [isVisible, setIsVisible] = useState(false); const [plan, setPlan] = useState(null); - const [user, setUser] = useState(null); - const [array, setArray] = useState([]); - const [fade, setFade] = useState(false); + // const [array, setArray] = useState(null); const popular = populars?.data; const data = detail.data[0]; @@ -112,20 +110,15 @@ export default function Home({ detail, populars, sessions }) { const handleShowClick = () => { setIsVisible(true); - setFade(true); }; const handleHideClick = () => { setIsVisible(false); - setFade(false); }; useEffect(() => { async function userData() { if (!sessions) return; - const res = await fetch(`/api/get-user?id=${sessions?.user.id}`); - const data = await res.json(); - const getMedia = media.filter((item) => item.status === "CURRENT")[0] || null; const plan = getMedia?.entries @@ -141,6 +134,8 @@ export default function Home({ detail, populars, sessions }) { } }); + // setArray(sessions.user?.recentWatch?.reverse()); + const getlog = newArray .map(({ media }) => media) .filter((media) => media); @@ -148,9 +143,6 @@ export default function Home({ detail, populars, sessions }) { if (plan) { setPlan(plan.reverse()); } - - setArray(data?.recentWatch?.reverse()); - setUser(data); } userData(); }, [sessions, media]); @@ -427,7 +419,7 @@ export default function Home({ detail, populars, sessions }) { transition={{ duration: 0.5, staggerChildren: 0.2 }} // Add staggerChildren prop > {/* SECTION 1 */} - {sessions && user?.recentWatch && ( + {/* {sessions && sessions?.user?.recentWatch && ( - )} + )} */} {sessions && plan && ( - - {!session && ( - - )} - {session && } -

- ); -} - -export async function getServerSideProps(context) { - const session = await getServerSession(context.req, context.res, authOptions); - - const res = await fetch(`${baseUrl}/api/get-media`, { - method: "POST", - body: JSON.stringify({ - username: session?.user.name, - }), - headers: { - "Content-Type": "application/json", - }, - }); - - const prog = await res.json(); - - const gat = prog.lists.map((item) => item.entries); - const git = gat.map((item) => item.find((item) => item.media.id === 130003)); - const gut = git.find((item) => item?.media.id === 130003); - - let progress = null; - let statusWatch = "CURRENT"; - - if (gut?.status === "COMPLETED") { - statusWatch = "REPEATING"; - } - - if (gut) { - progress = gut?.progress; - } - - return { - props: { - sesi: session, - data: gut || null, - progress: progress, - statusWatch: statusWatch, - }, - }; -} -- cgit v1.2.3