"use client"; import { createClient } from "@/utils/supabase/client"; import React, { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import Masonry from "react-masonry-css"; import SearchInput from "@/components/neroshitron/search_input"; function PageComponent() { const router = useRouter(); const [selectedGallery, setSelectedGallery] = useState(null); const [filePreviews, setFilePreviews] = useState([]); const [name, setName] = useState(''); const [nsfw, setNsfw] = useState(false); const [tags, setTags] = useState([]); const [tier, setTier] = useState('Free'); const [thumbnail, setThumbnail] = useState(""); const [files, setFiles] = useState(); const [tiers, setTiers] = useState([]); const supabase = createClient(); const user = supabase.auth.getUser(); const getData = async () => { try { const response = await fetch('/api/tiers'); if (response.ok) { const data = await response.json(); setTiers(data); } else { console.error('failed to fetch tiers'); } } catch (error) { console.error('Error fetching users:', error); } } useEffect(() => { getData(); }, [selectedGallery]); const closeGallery = () => { setSelectedGallery(null); } const createGallery = async () => { const formData = new FormData(); formData.append('name', name); if (files) { Array.from(files).forEach((file: File) => { formData.append('files', file); }); } formData.append('tags', JSON.stringify(tags)); formData.append('nsfw', nsfw.toString()); formData.append('thumbnail', thumbnail); formData.append('tier', tier); const response = await fetch('/api/galleries/admin', { method: 'POST', body: formData, }); if (response.ok) { const data = await response.json(); window.location.href = "/gallery/admin/view?id="+name; } else { console.log(response) } } const handleFileChange = (event: React.ChangeEvent) => { const files = event.target.files; if (files) { const previews: string[] = []; for (let i = 0; i < files.length; i++) { const file = files[i]; const reader = new FileReader(); reader.onload = (e) => { if (e.target && e.target.result) { previews.push(e.target.result.toString()); if (previews.length === files.length) { setFiles(files); setFilePreviews(previews); } } }; reader.readAsDataURL(file); } } }; return (
Creating New Gallery
setName(e.target.value)} className="mb-8 mr-2 rounded-md bg-secondary p-2 w-1/2 text-white shadow-lg" placeholder="Gallery Name" />
{ }} nsfwChanged={(nsfw) => { }} tagsChanged={(tags) => { setTags(tags) }} />
{filePreviews.map((preview, index) => ( {`Preview ))}
); } export default PageComponent;