From ea124f5d5c99bb33e79a7db3b349a4bff7a51985 Mon Sep 17 00:00:00 2001 From: cirroskais Date: Sat, 6 Jul 2024 00:04:38 -0400 Subject: [PATCH] opengraph woo --- .../20240706040428_defaults/migration.sql | 2 ++ prisma/schema.prisma | 2 +- src/lib/server/database.ts | 10 ++++++++++ src/routes/file/[id]/+page.server.ts | 19 ++++++++++++++++++- src/routes/file/[id]/+page.svelte | 15 +++++++++++++++ 5 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 prisma/migrations/20240706040428_defaults/migration.sql 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} + +