Fix marquee behavior and unify marquee settings
This commit is contained in:
+6
-2
@@ -39,6 +39,7 @@ export {
|
||||
buildDefaultMarqueeSettings,
|
||||
parseMarqueeSettingsValue,
|
||||
splitMarqueeRowItems,
|
||||
syncMarqueeSettingsToGermanSource,
|
||||
type MarqueeLocaleSettings,
|
||||
type MarqueeSettings,
|
||||
} from "./marquee-settings";
|
||||
@@ -80,6 +81,7 @@ import {
|
||||
MARQUEE_SETTINGS_KEY,
|
||||
buildDefaultMarqueeSettings,
|
||||
parseMarqueeSettingsValue,
|
||||
syncMarqueeSettingsToGermanSource,
|
||||
type MarqueeSettings,
|
||||
} from "./marquee-settings";
|
||||
|
||||
@@ -231,14 +233,16 @@ export async function getMarqueeSettings(): Promise<MarqueeSettings> {
|
||||
}
|
||||
|
||||
export async function updateMarqueeSettings(settings: MarqueeSettings): Promise<void> {
|
||||
const normalizedSettings = syncMarqueeSettingsToGermanSource(settings);
|
||||
|
||||
await prisma.appConfig.upsert({
|
||||
where: { key: MARQUEE_SETTINGS_KEY },
|
||||
update: {
|
||||
value: JSON.stringify(settings),
|
||||
value: JSON.stringify(normalizedSettings),
|
||||
},
|
||||
create: {
|
||||
key: MARQUEE_SETTINGS_KEY,
|
||||
value: JSON.stringify(settings),
|
||||
value: JSON.stringify(normalizedSettings),
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
+16
-4
@@ -97,26 +97,38 @@ function normalizeLocaleSettings(value: unknown, defaults: MarqueeLocaleSettings
|
||||
};
|
||||
}
|
||||
|
||||
export function syncMarqueeSettingsToGermanSource(settings: MarqueeSettings): MarqueeSettings {
|
||||
const source = settings.locales.de;
|
||||
|
||||
return {
|
||||
locales: {
|
||||
de: { ...source },
|
||||
en: { ...source },
|
||||
ar: { ...source },
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export function parseMarqueeSettingsValue(rawValue?: string | null): MarqueeSettings {
|
||||
const defaults = buildDefaultMarqueeSettings();
|
||||
|
||||
if (!rawValue) {
|
||||
return defaults;
|
||||
return syncMarqueeSettingsToGermanSource(defaults);
|
||||
}
|
||||
|
||||
try {
|
||||
const parsed = JSON.parse(rawValue) as { locales?: Record<string, unknown> };
|
||||
const locales = parsed && typeof parsed === "object" ? parsed.locales : undefined;
|
||||
|
||||
return {
|
||||
return syncMarqueeSettingsToGermanSource({
|
||||
locales: {
|
||||
ar: normalizeLocaleSettings(locales?.ar, defaults.locales.ar),
|
||||
en: normalizeLocaleSettings(locales?.en, defaults.locales.en),
|
||||
de: normalizeLocaleSettings(locales?.de, defaults.locales.de),
|
||||
},
|
||||
};
|
||||
});
|
||||
} catch {
|
||||
return defaults;
|
||||
return syncMarqueeSettingsToGermanSource(defaults);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user