"use client"; import { createClient } from "@/utils/supabase/client"; import React, { useState, useEffect } from 'react'; import Search from "@/components/neroshitron/search"; import Gallery from "@/components/neroshitron/gallery"; import Masonry from "react-masonry-css"; import SearchInput from "@/components/neroshitron/search_input"; import GalleryThumbnail from "@/components/neroshitron/gallery_thumbnail"; function PageComponent() { const [filePreviews, setFilePreviews] = useState([]); const supabase = createClient(); const user = supabase.auth.getUser(); const [gallery , setGallery] = useState(null); const [originalName, setOriginalGalleryName] = useState(''); const [galleryName, setGalleryName] = useState(''); const [nsfw, setNsfw] = useState(false); const [tags, setTags] = useState([]); const [tier, setTier] = useState('Free'); const [thumbnail, setThumbnail] = useState(); const [fileNames, setFileNames] = useState([]); const [selectedTags, setSelectedTags] = useState([]); const getData = async () => { const urlParams = new URLSearchParams(window.location.search); const id = urlParams.get('id'); const galleryResponse = await fetch(`/api/galleries/admin/${id}`, { method: 'GET', headers: { 'Content-Type': 'application/json' } }); const galleryData = await galleryResponse.json(); setGallery(galleryData.gallery); const filesResponse = await fetch(`/api/galleries/${id}/images/names`, { method: 'GET', headers: { 'Content-Type': 'application/json' } }); const filesData = await filesResponse.json(); setFileNames(filesData); setNsfw(galleryData.gallery.nsfw); setTags(galleryData.gallery.tags); setTier(galleryData.gallery.tier); setGalleryName(galleryData.gallery.name); if(originalName === ''){ setOriginalGalleryName(galleryData.gallery.name); } } useEffect(() => { getData(); }, []); useEffect(() => { }, [gallery]); useEffect(() => { }, [gallery, ]); useEffect(() => { }, [ nsfw ]); useEffect(() => { }, [tags ]); useEffect(() => { }, [galleryName]); useEffect(() => { }, [ tier]); const updateGallery = async () => { const urlParams = new URLSearchParams(window.location.search); const id = urlParams.get('id'); const formData = new FormData(); formData.append('id', gallery.id); formData.append('name', galleryName); formData.append('thumbnail', thumbnail ?? ''); formData.append('originalName', originalName); formData.append('tags', JSON.stringify(selectedTags)); formData.append('nsfw', nsfw.toString()); formData.append('tier', tier); const response = await fetch(`/api/galleries/admin/${originalName}`, { method: 'PUT', body: formData }); if (response.ok) { console.log(response) const data = await response.json(); } else { console.log(response) } if(originalName != galleryName){ window.location.href=`/gallery/admin/view?id=${galleryName}` } else{ window.location.reload(); } } const deleteGallery = async () => { const urlParams = new URLSearchParams(window.location.search); const id = urlParams.get('id'); const response = await fetch(`/api/gallery/admin/${id}`, { method: 'DELETE', headers: { 'Content-Type': 'application/json' } }); if (response.ok) { const data = await response.json(); window.location.href = "/gallery/admin"; } else { console.log(response) } } return (
{gallery != null && ( )}
setGalleryName(e.target.value)} />
{gallery &&( {}} nsfwChanged={(nsfw) => {}} tagsChanged={(tags) => { setSelectedTags(tags) }} /> )}
{gallery != null && (<> {filePreviews.map((preview, index) => ( {`Preview ))} )}
); } export default PageComponent;