style: format code with prettier
Local Build and Deploy / deploy (push) Successful in 49s

This commit is contained in:
openhands committed 2026-07-12 21:07:34 +02:00
1 parent e85e4d74ea
commit 2e4ed76121
378 files changed
+22404 -20686

No files matched your search

+24 -24
View File
@@ -1,22 +1,22 @@
import { redirect } from 'next/navigation'
import { canAccess, getAdminContext, PERMS } from '@/lib/permissions'
import { prisma } from '@/lib/prisma'
import { siteSettings } from '@/lib/services/site-settings'
import { DEFAULT_SOUNDTRACK_BASE_URL, parseTrackSamples } from '@/lib/services/soundtracks'
import { SoundsClient } from './sounds-client'
import { redirect } from "next/navigation";
import { canAccess, getAdminContext, PERMS } from "@/lib/permissions";
import { prisma } from "@/lib/prisma";
import { siteSettings } from "@/lib/services/site-settings";
import { DEFAULT_SOUNDTRACK_BASE_URL, parseTrackSamples } from "@/lib/services/soundtracks";
import { SoundsClient } from "./sounds-client";
export default async function SoundsPage() {
const { session, permissions } = await getAdminContext()
const { session, permissions } = await getAdminContext();
if (!canAccess(permissions, PERMS.CATALOG_VIEW, session.user.rank)) {
redirect('/admin')
redirect("/admin");
}
const canEdit = canAccess(permissions, PERMS.CATALOG_EDIT, session.user.rank)
const canEdit = canAccess(permissions, PERMS.CATALOG_EDIT, session.user.rank);
const [rows, usage, baseUrlSetting] = await Promise.all([
prisma.soundtracks.findMany({
orderBy: { id: 'asc' },
orderBy: { id: "asc" },
select: {
id: true,
code: true,
@@ -27,20 +27,20 @@ export default async function SoundsPage() {
},
}),
prisma.catalogItems.groupBy({
by: ['songId'],
by: ["songId"],
where: { songId: { gt: 0 } },
_count: { _all: true },
}),
siteSettings.get('soundtrack_base_url', DEFAULT_SOUNDTRACK_BASE_URL),
])
siteSettings.get("soundtrack_base_url", DEFAULT_SOUNDTRACK_BASE_URL),
]);
const usageMap: Record<number, number> = {}
const usageMap: Record<number, number> = {};
for (const row of usage) {
if (row.songId != null) usageMap[row.songId] = row._count._all
if (row.songId != null) usageMap[row.songId] = row._count._all;
}
const soundtracks = rows.map((r) => {
const samples = parseTrackSamples(r.track)
const samples = parseTrackSamples(r.track);
return {
id: r.id,
code: r.code,
@@ -49,22 +49,22 @@ export default async function SoundsPage() {
length: r.length,
track: r.track,
samples,
kind: (samples.length > 0 ? 'composition' : 'single') as 'composition' | 'single',
kind: (samples.length > 0 ? "composition" : "single") as "composition" | "single",
usedBy: usageMap[r.id] ?? 0,
}
})
};
});
// Normalize: ensure trailing slash so ${base}${code}.mp3 yields a valid URL.
const configuredBaseUrl = baseUrlSetting ?? '/sounds/'
const baseUrl = configuredBaseUrl.endsWith('/') ? configuredBaseUrl : `${configuredBaseUrl}/`
const configuredBaseUrl = baseUrlSetting ?? "/sounds/";
const baseUrl = configuredBaseUrl.endsWith("/") ? configuredBaseUrl : `${configuredBaseUrl}/`;
return (
<div className="space-y-6">
<div>
<h1 className="text-3xl font-bold tracking-tight">Song Disks</h1>
<p className="text-muted-foreground">
Carica e gestisci i file MP3 dei song disk riprodotti dai jukebox in-game. I file sono
serviti da <code>{baseUrl}</code> (configurabile in{' '}
Carica e gestisci i file MP3 dei song disk riprodotti dai jukebox in-game. I file sono serviti da{" "}
<code>{baseUrl}</code> (configurabile in{" "}
<a href="/admin/settings/cms" className="underline">
Impostazioni &gt; CMS
</a>
@@ -73,5 +73,5 @@ export default async function SoundsPage() {
</div>
<SoundsClient soundtracks={soundtracks} canEdit={canEdit} baseUrl={baseUrl} />
</div>
)
);
}