import { getServerSession } from "next-auth"; import { authOptions } from "pages/api/auth/[...nextauth]"; import { useState } from "react"; import { toast } from "react-toastify"; // Define a function to convert the data function convertData(episodes) { const convertedData = episodes.map((episode) => ({ episode: episode.episode, title: episode?.title, description: episode?.description || null, img: episode?.img?.hd || episode?.img?.mobile || null, // Use hd if available, otherwise use mobile })); return convertedData; } export async function getServerSideProps(context) { const sessions = await getServerSession( context.req, context.res, authOptions ); if (!sessions) { return { redirect: { destination: "/", permanent: false, }, }; } const admin = sessions?.user?.name === process.env.ADMIN_USERNAME; const api = process.env.API_URI; if (!admin) { return { redirect: { destination: "/", permanent: false, }, }; } return { props: { session: sessions, api, }, }; } export default function Admin({ api }) { const [id, setId] = useState(); const [resultData, setResultData] = useState(null); const [query, setQuery] = useState(""); const [tmdbId, setTmdbId] = useState(); const [hasilQuery, setHasilQuery] = useState([]); const [season, setSeason] = useState(); const [override, setOverride] = useState(); const [loading, setLoading] = useState(false); const handleSearch = async () => { try { setLoading(true); setResultData(null); const res = await fetch(`${api}/meta/tmdb/${query}`); const json = await res.json(); const data = json.results; setHasilQuery(data); setLoading(false); } catch (err) { console.log(err); } }; const handleDetail = async () => { try { setLoading(true); const res = await fetch(`${api}/meta/tmdb/info/${tmdbId}?type=TV%20Series `); const json = await res.json(); const data = json.seasons; setHasilQuery(data); setLoading(false); } catch (err) { console.log(err); } }; const handleStore = async () => { try { setLoading(true); if (!resultData && !id) { console.log("No data to store"); setLoading(false); return; } const data = await fetch("/api/v2/admin/meta", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ id: id, data: resultData, }), }); if (data.status === 200) { const json = await data.json(); toast.success(json.message); setLoading(false); } } catch (err) { console.log(err); } }; const handleOverride = async () => { setResultData(JSON.parse(override)); }; return ( <>

Append Data Page

setQuery(e.target.value)} />
setTmdbId(e.target.value)} />