Add editable localized marquee settings

This commit is contained in:
MOH
2026-03-08 22:40:01 +01:00
parent 8740a94611
commit 1d4c2f8e72
9 changed files with 608 additions and 5 deletions
+40
View File
@@ -34,6 +34,14 @@ export {
type ContactProtectionFormValues,
type PublicContactProtectionSettings,
} from "./contact-protection";
export {
MARQUEE_SETTINGS_KEY,
buildDefaultMarqueeSettings,
parseMarqueeSettingsValue,
splitMarqueeRowItems,
type MarqueeLocaleSettings,
type MarqueeSettings,
} from "./marquee-settings";
import {
DEFAULT_SITE_NAME,
SITE_NAME_KEY,
@@ -68,6 +76,12 @@ import {
type ContactProtectionFormValues,
type PublicContactProtectionSettings,
} from "./contact-protection";
import {
MARQUEE_SETTINGS_KEY,
buildDefaultMarqueeSettings,
parseMarqueeSettingsValue,
type MarqueeSettings,
} from "./marquee-settings";
export async function getMaintenanceMode(): Promise<boolean> {
try {
@@ -203,6 +217,32 @@ export async function updateContactProtectionSettings(
});
}
export async function getMarqueeSettings(): Promise<MarqueeSettings> {
try {
const config = await prisma.appConfig.findUnique({
where: { key: MARQUEE_SETTINGS_KEY },
select: { value: true },
});
return parseMarqueeSettingsValue(config?.value);
} catch {
return buildDefaultMarqueeSettings();
}
}
export async function updateMarqueeSettings(settings: MarqueeSettings): Promise<void> {
await prisma.appConfig.upsert({
where: { key: MARQUEE_SETTINGS_KEY },
update: {
value: JSON.stringify(settings),
},
create: {
key: MARQUEE_SETTINGS_KEY,
value: JSON.stringify(settings),
},
});
}
export async function getSiteSettingsMediaBindings(): Promise<SiteSettingsMediaBindings> {
try {
const usages = await prisma.mediaUsage.findMany({