diff --git a/nuxt.config.ts b/nuxt.config.ts
index bd2ffe2..ff77811 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -2,18 +2,14 @@ import tailwindcss from "@tailwindcss/vite";
import { execSync } from "node:child_process";
// get drop version
-const dropVersion =
- process.env.BUILD_DROP_VERSION === undefined
- ? "v0.3.0-alpha.1"
- : process.env.BUILD_DROP_VERSION;
+const dropVersion = process.env.BUILD_DROP_VERSION ?? "v0.3.0-alpha.1";
// example nightly: "v0.3.0-nightly.2025.05.28"
// get git ref or supply during build
const commitHash =
- process.env.BUILD_GIT_REF === undefined
- ? execSync("git rev-parse --short HEAD").toString().trim()
- : process.env.BUILD_GIT_REF;
-
+ process.env.BUILD_GIT_REF ??
+ execSync("git rev-parse --short HEAD").toString().trim();
+
console.log(`Building Drop ${dropVersion} #${commitHash}`);
// https://nuxt.com/docs/api/configuration/nuxt-config
diff --git a/pages/admin/metadata/games/[id]/index.vue b/pages/admin/metadata/games/[id]/index.vue
index 2512ff7..f773a3c 100644
--- a/pages/admin/metadata/games/[id]/index.vue
+++ b/pages/admin/metadata/games/[id]/index.vue
@@ -10,7 +10,7 @@
class="flex flex-col lg:flex-row lg:justify-between items-start lg:items-center gap-2"
>
-
+
diff --git a/server/api/v1/admin/game/metadata.post.ts b/server/api/v1/admin/game/metadata.post.ts
index e46dedc..df64c04 100644
--- a/server/api/v1/admin/game/metadata.post.ts
+++ b/server/api/v1/admin/game/metadata.post.ts
@@ -28,24 +28,32 @@ export default defineEventHandler(async (h3) => {
const description = options.description;
const gameId = options.id;
- const changes: Prisma.GameUpdateInput = {
+ const updateModel: Prisma.GameUpdateInput = {
mName: name,
mShortDescription: description,
};
// handle if user uploaded new icon
if (id) {
- changes.mIconObjectId = id;
+ updateModel.mIconObjectId = id;
await pull();
} else {
dump();
}
+ // If the API call doesn't provide values, don't set them
+ for (const [key, value] of Object.entries(updateModel)) {
+ if (value === undefined) {
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
+ delete updateModel[key as keyof typeof updateModel];
+ }
+ }
+
const newObject = await prisma.game.update({
where: {
id: gameId,
},
- data: changes,
+ data: updateModel,
});
return newObject;
diff --git a/server/api/v1/screenshots/[id]/index.delete.ts b/server/api/v1/screenshots/[id]/index.delete.ts
index b4c5e7c..801b19d 100644
--- a/server/api/v1/screenshots/[id]/index.delete.ts
+++ b/server/api/v1/screenshots/[id]/index.delete.ts
@@ -18,7 +18,7 @@ export default defineEventHandler(async (h3) => {
throw createError({
statusCode: 404,
});
- else if (result.userId !== userId)
+ if (result.userId !== userId)
throw createError({
statusCode: 404,
});
diff --git a/server/api/v1/screenshots/[id]/index.get.ts b/server/api/v1/screenshots/[id]/index.get.ts
index 5944103..c43b272 100644
--- a/server/api/v1/screenshots/[id]/index.get.ts
+++ b/server/api/v1/screenshots/[id]/index.get.ts
@@ -18,7 +18,7 @@ export default defineEventHandler(async (h3) => {
throw createError({
statusCode: 404,
});
- else if (result.userId !== userId)
+ if (result.userId !== userId)
throw createError({
statusCode: 404,
});
diff --git a/server/internal/metadata/index.ts b/server/internal/metadata/index.ts
index ad23e94..cd3bd6a 100644
--- a/server/internal/metadata/index.ts
+++ b/server/internal/metadata/index.ts
@@ -234,7 +234,6 @@ export class MetadataHandler {
libraryBasePath,
},
});
- // relate companies to game
await pullObjects();
diff --git a/server/internal/screenshots/index.ts b/server/internal/screenshots/index.ts
index 4179ebc..b41ac03 100644
--- a/server/internal/screenshots/index.ts
+++ b/server/internal/screenshots/index.ts
@@ -53,11 +53,12 @@ class ScreenshotManager {
* @param id
*/
async delete(id: string) {
- await prisma.screenshot.delete({
+ const deletedScreenshot = await prisma.screenshot.delete({
where: {
id,
},
});
+ await objectHandler.deleteAsSystem(deletedScreenshot.objectId);
}
/**
@@ -74,7 +75,7 @@ class ScreenshotManager {
// TODO: set createAt to the time screenshot was taken
createdAt: new Date().toISOString(),
},
- [`${userId}:read`, `${userId}:delete`],
+ [`${userId}:read`], // This is a system tracked object, so we don't want users to have direct write access to it
);
if (!saveStream)
throw createError({