From 75dad17afe272296f2dc43bf7a7e8db42fd50abd Mon Sep 17 00:00:00 2001 From: Damien Ostler Date: Sun, 2 Jun 2024 22:23:43 -0400 Subject: [PATCH] fix --- app/api/galleries/[id]/thumbnail/route.ts | 8 +-- app/api/galleries/admin/[id]/route.ts | 68 +++++++++++++++++++++++ app/api/galleries/admin/route.ts | 26 +++++++++ app/api/galleries/tags/route.ts | 1 - app/gallery/admin/create/page.tsx | 2 +- app/gallery/admin/page.tsx | 8 +-- app/gallery/admin/view/page.tsx | 57 ++++++++++++++++--- components/neroshitron/navigation_bar.tsx | 1 - components/neroshitron/search_input.tsx | 2 - 9 files changed, 150 insertions(+), 23 deletions(-) create mode 100644 app/api/galleries/admin/[id]/route.ts create mode 100644 app/api/galleries/admin/route.ts diff --git a/app/api/galleries/[id]/thumbnail/route.ts b/app/api/galleries/[id]/thumbnail/route.ts index ffc181c..b466a96 100644 --- a/app/api/galleries/[id]/thumbnail/route.ts +++ b/app/api/galleries/[id]/thumbnail/route.ts @@ -17,7 +17,6 @@ export async function GET( request: Request, { params }: { params: { id: string } } ) { - const galleryId = params.id.toLowerCase().replace(/\s+/g, '_'); const supabase = createClient(); const user = await supabase.auth.getUser(); const url = new URL(request.url); @@ -29,16 +28,13 @@ export async function GET( .select('*') .eq('name', params.id) .single(); - - let { data: files, error } = await supabase.storage.from('galleries').list(galleryId); + let { data: files, error } = await supabase.storage.from('galleries').list(params.id); if (files == null || files?.length == 0) { - return NextResponse.error(); } // Loop through each file, download it, convert it to base64, and add the data URL to the array - let { data: blobdata, error: fileError } = await supabase.storage.from('galleries').download(galleryId + "/" + files[0].name); - + let { data: blobdata, error: fileError } = await supabase.storage.from('galleries').download(params.id + "/" + files[0].name); if (fileError || blobdata == null) { //console.error('Error downloading file:', error); return NextResponse.error(); diff --git a/app/api/galleries/admin/[id]/route.ts b/app/api/galleries/admin/[id]/route.ts new file mode 100644 index 0000000..351fc05 --- /dev/null +++ b/app/api/galleries/admin/[id]/route.ts @@ -0,0 +1,68 @@ +import { NextResponse } from "next/server"; +import { createClient } from "@/utils/supabase/server"; +import path from 'path'; + +export async function GET( + request: Request, + { params }: { params: { id: string } } + ) { + const id = params.id; + const supabase = createClient(); + const { data: gallery, error } = await supabase.from('galleries').select("*").eq('name', id).single(); + return NextResponse.json({ gallery }); +} + + +export async function PUT( + request: Request, + { params }: { params: { id: string } } + ) { + const id = params.id; + const supabase = createClient(); + const { files, tags, name, nsfw, tier}: { files: File[], tags: string[], name: string, nsfw:boolean, tier:string } = await request.json(); + const { data: gallery, error } = await supabase.from('galleries').update({ name, tags, nsfw, tier }).eq('name', id).single(); + let { data: galleries, error:galleriesError } = await supabase + .from('galleries') + .select('*'); + return NextResponse.json({ success: true, galleries }); +} + +export async function DELETE( + request: Request, + { params }: { params: { id: string } } + ) { + const id =params.id; + const supabase = createClient(); + const { data: gallery, error } = await supabase.from('galleries').delete().eq('name', id).single(); + let { data: galleries, error:galleriesError } = await supabase + .from('galleries') + .select('*'); + return NextResponse.json({ success: true, galleries }); +} + +// const tagsResponse = await fetch(`/api/galleries/tags?search=${search}`); +// const tagsData = await tagsResponse.json(); +// const galleriesWithTagData = galleriesData.map((gallery: any) => { +// const tags = tagsData.filter((tag: any) => gallery.tags.includes(tag.name)); +// return { ...gallery, tags }; +// }); + + + // const formData = new FormData(); + // formData.append('name', name); + // formData.append('tags', JSON.stringify(tags)); + // files.forEach((file: File) => { + // formData.append('files', file); + // }); + + // const response = await fetch('/api/galleries', { + // method: 'POST', + // body: formData, + // }); + + // if (response.ok) { + // const data = await response.json(); + // // Handle success + // } else { + // // Handle error + // } \ No newline at end of file diff --git a/app/api/galleries/admin/route.ts b/app/api/galleries/admin/route.ts new file mode 100644 index 0000000..9048310 --- /dev/null +++ b/app/api/galleries/admin/route.ts @@ -0,0 +1,26 @@ +import { NextResponse } from "next/server"; +import { createClient } from "@/utils/supabase/server"; +import path from 'path'; + + +export async function GET(request: Request) { + const supabase = createClient(); + let { data: galleries, error } = await supabase + .from('galleries') + .select('*'); + return NextResponse.json(galleries); +} + +export async function POST(request: Request) { + const supabase = createClient(); + const { files, tags, name, nsfw, tier }: { files: File[], tags: string[], name: string, nsfw:boolean, tier:string } = await request.json(); + for (let i = 0; i < files.length; i++) { + const file = files[i]; + supabase.storage.from('galleries').upload(`${name}/${file.name}`, file); + } + const { data: gallery, error } = await supabase.from('galleries').insert({ name, tags, nsfw, tier, column_number:3 }).single(); + let { data: galleries, error:galleriesError } = await supabase + .from('galleries') + .select('*'); + return NextResponse.json({ success: true, galleries }); +} diff --git a/app/api/galleries/tags/route.ts b/app/api/galleries/tags/route.ts index f9db89e..033a29b 100644 --- a/app/api/galleries/tags/route.ts +++ b/app/api/galleries/tags/route.ts @@ -15,7 +15,6 @@ export async function POST(request: Request) { const supabase = createClient(); const data = await request.json(); const { data: tag, error } = await supabase.from('tags').insert({ name: data.tag }).single(); - console.log(error) if (error) { return NextResponse.error(); } diff --git a/app/gallery/admin/create/page.tsx b/app/gallery/admin/create/page.tsx index d981235..8205fd5 100644 --- a/app/gallery/admin/create/page.tsx +++ b/app/gallery/admin/create/page.tsx @@ -68,7 +68,7 @@ function PageComponent() { placeholderTags={[ { value: "tags", label: "❗️ click here to add tags" }, ]} - nsfwButtonEnabled={false} + nsfwButtonEnabled={true} searchChanged={(search) => {}} nsfwChanged={(nsfw) => {}} tagsChanged={(tags) => {}} diff --git a/app/gallery/admin/page.tsx b/app/gallery/admin/page.tsx index fddd9d0..2f074a7 100644 --- a/app/gallery/admin/page.tsx +++ b/app/gallery/admin/page.tsx @@ -68,7 +68,7 @@ function PageComponent() { return (
-
+
{setNewTagName(e.target.value)}} className="hover:scale-105 focus:scale-95 mb-8 mr-2 rounded-md bg-info-bright p-2 w-1/2 text-white shadow-lg" placeholder="Tag Name" />
-
+
-
+
{/* Replace this with your data mapping logic */} @@ -120,7 +120,7 @@ function PageComponent() {
{item.imageCount} {item.tier} -
-
@@ -47,7 +88,7 @@ function PageComponent() { placeholderTags={[ { value: "tags", label: "❗️ click here to add tags" }, ]} - nsfwButtonEnabled={false} + nsfwButtonEnabled={true} searchChanged={(search) => {}} nsfwChanged={(nsfw) => {}} tagsChanged={(tags) => {}} @@ -55,7 +96,7 @@ function PageComponent() {