import { updateEmulatorSetting, updateEmulatorText } from "@/actions/admin-emulator"; import { StatusCard } from "@/components/admin/dashboard"; import { prisma } from "@/lib/prisma"; export const dynamic = "force-dynamic"; const TEXTS_LIMIT = 300; export default async function AdminEmulator() { let settings: { key: string; value: string }[] = []; try { settings = await prisma.emulatorSettings.findMany({ orderBy: { key: "asc" } }); } catch { settings = []; } let texts: { key: string; value: string }[] = []; let textsCount = 0; try { textsCount = await prisma.emulatorTexts.count(); } catch { textsCount = 0; } try { texts = await prisma.emulatorTexts.findMany({ orderBy: { key: "asc" }, take: TEXTS_LIMIT, }); } catch { texts = []; } const textsTruncated = textsCount > texts.length; return (

Emulator Config

Live key/value config read by the Arcturus emulator from emulator_settings and emulator_texts. Changes take effect on the next emulator read (some keys require an emulator reload).

Settings

{settings.length} keys.

Add / overwrite setting

{settings.map((s) => ( ))}
Key Value
{s.key}
{settings.length === 0 ? (

No emulator settings found.

) : null}

Texts

{textsCount} keys{textsTruncated ? ` (showing first ${texts.length})` : ""}.

Add / overwrite text

{texts.map((t) => ( ))}
Key Value
{t.key}
{texts.length === 0 ? (

No emulator texts found.

) : null} {textsTruncated ? (

Only the first {texts.length} of {textsCount} text keys are shown. Use the add/overwrite form above to edit a key beyond this list.

) : null}
); }