fix: show existing screenshots in edit mode, fix drag reorder jank, bump version to 2026.1.102

This commit is contained in:
2026-05-16 18:33:56 +08:00
parent 0ff27b613d
commit f4eab9c8e0
5 changed files with 34 additions and 8 deletions
+29 -3
View File
@@ -1,8 +1,9 @@
import { notFound } from "next/navigation"
import { db } from "@/lib/db/index"
import { games, gameVersions, performanceEntries, gamePlatformSupport } from "@/lib/db/schema"
import { games, gameVersions, performanceEntries, gamePlatformSupport, entryScreenshots } from "@/lib/db/schema"
import { eq, sql } from "drizzle-orm"
import { GameEntryWizard, type GameVersionInfo } from "@/components/wizard/game-entry-wizard"
import { getR2PublicUrl } from "@/lib/storage/r2-client"
// This page needs live data — skip static generation at build time
export const dynamic = "force-dynamic"
@@ -77,14 +78,39 @@ export default async function SubmitBenchmarkPage({
}
// If editing, fetch the existing performance entry
let editEntry = null
let editEntry: any = null
if (edit) {
const [entry] = await db
.select()
.from(performanceEntries)
.where(eq(performanceEntries.id, edit))
.limit(1)
editEntry = entry ?? null
if (entry) {
const publicUrl = getR2PublicUrl()
const screenshots = await db
.select({
id: entryScreenshots.id,
storageKey: entryScreenshots.storageKey,
orderIndex: entryScreenshots.orderIndex,
width: entryScreenshots.width,
height: entryScreenshots.height,
})
.from(entryScreenshots)
.where(eq(entryScreenshots.entryId, entry.id))
.orderBy(entryScreenshots.orderIndex)
editEntry = {
...entry,
screenshots: screenshots.map((ss) => ({
id: ss.id,
url: `${publicUrl}/${ss.storageKey}`,
width: ss.width,
height: ss.height,
orderIndex: ss.orderIndex,
})),
}
}
}
// Determine default version: when editing, use the entry's version;
+1 -1
View File
@@ -138,7 +138,7 @@ function SettingRow({
data-setting-row
data-category={category}
data-title={setting.title}
className="group grid grid-cols-[28px_36px_1fr_1fr_56px] gap-2 items-center rounded-lg border border-border bg-text/3 px-2 py-2 shadow-sm hover:shadow-md hover:bg-text/5 transition-all"
className="group grid grid-cols-[28px_36px_1fr_1fr_56px] gap-2 items-center rounded-lg border border-border bg-text/3 px-2 py-2 shadow-sm hover:shadow-md hover:bg-text/5 transition-shadow transition-colors"
initial={{ opacity: 0, x: -8 }}
animate={{ opacity: 1, x: 0 }}
exit={{ opacity: 0, x: -8 }}
+1 -1
View File
@@ -124,7 +124,7 @@ function ScreenshotCard({
dragListener={false}
dragControls={dragControls}
as='div'
className='group relative rounded-xl border border-border bg-text/3 overflow-hidden shadow-sm hover:shadow-md hover:border-primary/30 transition-all'
className='group relative rounded-xl border border-border bg-text/3 overflow-hidden shadow-sm hover:shadow-md hover:border-primary/30 transition-shadow transition-colors transition-[border-color]'
whileDrag={{
scale: 1.02,
boxShadow: "0 12px 40px rgba(0,0,0,0.3)",
+2 -2
View File
@@ -73,7 +73,7 @@ export const app = new Elysia({ prefix: "/api" })
documentation: {
info: {
title: "DeckyVault API",
version: "2026.1.0",
version: "2026.1.102",
description:
"API for DeckyVault — Steam Deck game compatibility, performance reports, and community features.",
},
@@ -214,7 +214,7 @@ export const app = new Elysia({ prefix: "/api" })
.use(rateLimit("default"))
.get("/", () => ({
name: "DeckyVault API",
version: "2026.1.0",
version: "2026.1.102",
}))
export type App = typeof app
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "deckyvault",
"version": "2026.1.0",
"version": "2026.1.102",
"private": true,
"scripts": {
"dev": "next dev --experimental-https --webpack",