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 @@
+