import { aniListData } from "../lib/AniList";
import React, { useState, useEffect } from "react";
import ReactHtmlParser from "kt-react-html-parser";
import Head from "next/head";
import Link from "next/link";
import Footer from "../components/footer";
import Image from "next/image";
import Content from "../components/hero/content";
import { useRouter } from "next/router";
import { motion } from "framer-motion";
import { useSession, signIn, signOut } from "next-auth/react";
import { useAniList } from "../lib/useAnilist";
import { getServerSession } from "next-auth/next";
import { authOptions } from "./api/auth/[...nextauth]";
export function Navigasi() {
const { data: sessions, status } = useSession();
const router = useRouter();
const handleFormSubmission = (inputValue) => {
router.push(`/search/${encodeURIComponent(inputValue)}`);
};
const handleKeyDown = async (event) => {
if (event.key === "Enter") {
event.preventDefault();
const inputValue = event.target.value;
handleFormSubmission(inputValue);
}
};
return (
<>
{/* NAVBAR PC */}
moopa
-
AniList Index
-
Manga
-
Anime
{status === "loading" ? (
- Loading...
) : (
<>
{!sessions && (
-
)}
{sessions && (
-
{/* */}
My List
)}
>
)}
>
);
}
export default function Home({ detail, populars, sessions }) {
const { media } = useAniList(sessions, { stats: "CURRENT" });
const [isVisible, setIsVisible] = useState(false);
const [plan, setPlan] = useState(null);
// const [array, setArray] = useState(null);
const popular = populars?.data;
const data = detail.data[0];
const greeting = getGreeting();
const handleShowClick = () => {
setIsVisible(true);
};
const handleHideClick = () => {
setIsVisible(false);
};
useEffect(() => {
async function userData() {
if (!sessions) return;
const getMedia =
media.filter((item) => item.status === "CURRENT")[0] || null;
const plan = getMedia?.entries
.map(({ media }) => media)
.filter((media) => media);
const get = media.flatMap((item) => item.entries);
const newArray = [];
get.forEach((item) => {
if (!newArray.some((element) => element.id === item.id)) {
newArray.push(item);
}
});
// setArray(sessions.user?.recentWatch?.reverse());
const getlog = newArray
.map(({ media }) => media)
.filter((media) => media);
if (plan) {
setPlan(plan.reverse());
}
}
userData();
}, [sessions, media]);
return (
<>
Moopa
{/* NAVBAR */}
{/* Mobile Menu */}
{isVisible && sessions && (

)}
{isVisible && (
{sessions ? (
) : (
)}
)}
{/* PC / TABLET */}
{data.title.english || data.title.romaji || data.title.native}
{ReactHtmlParser(data.description)}
{sessions && (
{greeting},
{sessions?.user.name}
)}
{/* Mobile */}
{/* SECTION 1 */}
{/* {sessions && sessions?.user?.recentWatch && (
)} */}
{sessions && plan && (
)}
{/* SECTION 2 */}
{detail && (
)}
{/* SECTION 3 */}
{popular && (
)}
>
);
}
export async function getServerSideProps(context) {
const session = await getServerSession(context.req, context.res, authOptions);
const trendingDetail = await aniListData({
sort: "TRENDING_DESC",
page: 1,
});
const popularDetail = await aniListData({
sort: "POPULARITY_DESC",
page: 1,
});
const genreDetail = await aniListData({ sort: "TYPE", page: 1 });
return {
props: {
genre: genreDetail.props,
detail: trendingDetail.props,
populars: popularDetail.props,
sessions: session,
},
};
}
function getGreeting() {
const time = new Date().getHours();
let greeting = "";
if (time >= 5 && time < 12) {
greeting = "Good morning";
} else if (time >= 12 && time < 18) {
greeting = "Good afternoon";
} else if (time >= 18 && time < 22) {
greeting = "Good evening";
} else if (time >= 22 || time < 5) {
greeting = "Good night";
}
return greeting;
}