diff --git a/prisma/migrations/20240706040428_defaults/migration.sql b/prisma/migrations/20240706040428_defaults/migration.sql new file mode 100644 index 0000000..0a7692f --- /dev/null +++ b/prisma/migrations/20240706040428_defaults/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE `UserSettings` MODIFY `embedColor` INTEGER NOT NULL DEFAULT 3159110; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 9f4097c..090c4f3 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -43,7 +43,7 @@ model UserSettings { embedTitle String @default("{{file}}") embedDescription String @default("Uploaded by {{username}} at {{time}}") - embedColor Int @default(0) + embedColor Int @default(3159110) } model Upload { diff --git a/src/lib/server/database.ts b/src/lib/server/database.ts index de5644b..dcb1c88 100644 --- a/src/lib/server/database.ts +++ b/src/lib/server/database.ts @@ -119,3 +119,13 @@ export async function getUpload(id: string) { } }); } + +export async function getSettings(id: number) { + if (!id) return false; + + return await prisma.userSettings.findFirst({ + where: { + userId: id + } + }); +} diff --git a/src/routes/file/[id]/+page.server.ts b/src/routes/file/[id]/+page.server.ts index 33c81ba..d098a52 100644 --- a/src/routes/file/[id]/+page.server.ts +++ b/src/routes/file/[id]/+page.server.ts @@ -1,4 +1,4 @@ -import { getUpload } from '$lib/server/database'; +import { getSettings, getUpload } from '$lib/server/database'; import minio, { BUCKET } from '$lib/server/minio'; import { error } from '@sveltejs/kit'; @@ -6,8 +6,19 @@ export async function load({ params }) { const file = await getUpload(params.id); if (!file) throw error(404, { status: 404, message: 'File Not Found' }); + const settings = await getSettings(file.uploader.id); + if (!settings) throw error(500, { status: 500, message: 'Internal Server Error' }); + const metadata = await minio.statObject(BUCKET, `${file.uploader.id}/${file.fileName}`); + function formatString(input: string) { + if (file && metadata) + return input + .replaceAll('{{file}}', file.fileName) + .replaceAll('{{username}}', file.uploader.username) + .replaceAll('{{time}}', file.uploaded.toUTCString()); + } + return { file: { id: file.id, @@ -18,6 +29,12 @@ export async function load({ params }) { }, uploader: { username: file.uploader.username + }, + settings: { + title: formatString(settings.embedTitle), + description: formatString(settings.embedDescription), + color: '#' + settings.embedColor.toString(16), + large: true } }; } diff --git a/src/routes/file/[id]/+page.svelte b/src/routes/file/[id]/+page.svelte index c1a2782..96505e1 100644 --- a/src/routes/file/[id]/+page.svelte +++ b/src/routes/file/[id]/+page.svelte @@ -1,10 +1,25 @@ + + {data.file.fileName} + + + + + + {#if data.file.type.includes('video')} + + {:else if data.file.type.includes('image')} + + {/if} + +