Refactor site header, heroes, and design system
This commit is contained in:
@@ -10,6 +10,8 @@ import {
|
||||
SITE_SETTINGS_ENTITY_ID,
|
||||
SITE_SETTINGS_ENTITY_TYPE,
|
||||
SITE_SETTINGS_FAVICON_FIELD_KEY,
|
||||
SITE_SETTINGS_LOGO_DARK_FIELD_KEY,
|
||||
SITE_SETTINGS_LOGO_LIGHT_FIELD_KEY,
|
||||
updateSiteSettings,
|
||||
} from "@/lib/app-config";
|
||||
import { PAGE_TITLE_TOKEN, type SiteSettings } from "@/lib/site-settings";
|
||||
@@ -94,6 +96,8 @@ export async function saveSiteSettingsAction(formData: FormData) {
|
||||
const uploadedPaths: string[] = [];
|
||||
|
||||
try {
|
||||
const siteLogoLightMedia = parseJsonObject(formData.get("siteLogoLightMedia"), "siteLogoLightMedia");
|
||||
const siteLogoDarkMedia = parseJsonObject(formData.get("siteLogoDarkMedia"), "siteLogoDarkMedia");
|
||||
const faviconMedia = parseJsonObject(formData.get("faviconMedia"), "faviconMedia");
|
||||
const defaultOgImageMedia = parseJsonObject(
|
||||
formData.get("defaultOgImageMedia"),
|
||||
@@ -136,6 +140,36 @@ export async function saveSiteSettingsAction(formData: FormData) {
|
||||
}
|
||||
}
|
||||
|
||||
const siteLogoLightSelection = siteLogoLightMedia
|
||||
? await resolveMediaSelection({
|
||||
media: mediaFieldInputSchema.parse(siteLogoLightMedia),
|
||||
uploadFile: formData.get("siteLogoLightFile"),
|
||||
folder: "site-settings",
|
||||
fallbackLabel: `${parsedSettings.locales.de.siteName || parsedSettings.locales.en.siteName} logo light`,
|
||||
required: false,
|
||||
})
|
||||
: {
|
||||
assetId: null,
|
||||
url: "",
|
||||
createdAssetId: null,
|
||||
uploadedUrl: null,
|
||||
};
|
||||
|
||||
const siteLogoDarkSelection = siteLogoDarkMedia
|
||||
? await resolveMediaSelection({
|
||||
media: mediaFieldInputSchema.parse(siteLogoDarkMedia),
|
||||
uploadFile: formData.get("siteLogoDarkFile"),
|
||||
folder: "site-settings",
|
||||
fallbackLabel: `${parsedSettings.locales.de.siteName || parsedSettings.locales.en.siteName} logo dark`,
|
||||
required: false,
|
||||
})
|
||||
: {
|
||||
assetId: null,
|
||||
url: "",
|
||||
createdAssetId: null,
|
||||
uploadedUrl: null,
|
||||
};
|
||||
|
||||
const faviconSelection = faviconMedia
|
||||
? await resolveMediaSelection({
|
||||
media: mediaFieldInputSchema.parse(faviconMedia),
|
||||
@@ -166,6 +200,22 @@ export async function saveSiteSettingsAction(formData: FormData) {
|
||||
uploadedUrl: null,
|
||||
};
|
||||
|
||||
if (siteLogoLightSelection.createdAssetId) {
|
||||
createdMediaAssetIds.push(siteLogoLightSelection.createdAssetId);
|
||||
}
|
||||
|
||||
if (siteLogoLightSelection.uploadedUrl) {
|
||||
uploadedPaths.push(siteLogoLightSelection.uploadedUrl);
|
||||
}
|
||||
|
||||
if (siteLogoDarkSelection.createdAssetId) {
|
||||
createdMediaAssetIds.push(siteLogoDarkSelection.createdAssetId);
|
||||
}
|
||||
|
||||
if (siteLogoDarkSelection.uploadedUrl) {
|
||||
uploadedPaths.push(siteLogoDarkSelection.uploadedUrl);
|
||||
}
|
||||
|
||||
if (faviconSelection.createdAssetId) {
|
||||
createdMediaAssetIds.push(faviconSelection.createdAssetId);
|
||||
}
|
||||
@@ -187,6 +237,24 @@ export async function saveSiteSettingsAction(formData: FormData) {
|
||||
entityType: SITE_SETTINGS_ENTITY_TYPE,
|
||||
entityId: SITE_SETTINGS_ENTITY_ID,
|
||||
usages: [
|
||||
...(siteLogoLightSelection.assetId
|
||||
? [
|
||||
{
|
||||
assetId: siteLogoLightSelection.assetId,
|
||||
usageType: MediaUsageType.GENERIC,
|
||||
fieldKey: SITE_SETTINGS_LOGO_LIGHT_FIELD_KEY,
|
||||
},
|
||||
]
|
||||
: []),
|
||||
...(siteLogoDarkSelection.assetId
|
||||
? [
|
||||
{
|
||||
assetId: siteLogoDarkSelection.assetId,
|
||||
usageType: MediaUsageType.GENERIC,
|
||||
fieldKey: SITE_SETTINGS_LOGO_DARK_FIELD_KEY,
|
||||
},
|
||||
]
|
||||
: []),
|
||||
...(faviconSelection.assetId
|
||||
? [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user