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 (
{item.imageCount} | {item.tier} | - |