56 lines
2.3 KiB
TypeScript
56 lines
2.3 KiB
TypeScript
import { SETTING_KEYS } from "@/lib/constants";
|
|
import { getSettings } from "@/lib/settings";
|
|
import { DEFAULT_TIMEZONE } from "@/lib/date";
|
|
|
|
export type PublicBookingInitialConfig = {
|
|
companyName: string;
|
|
bookingNoticeText: string;
|
|
defaultDurationMinutes: number;
|
|
defaultTimezone: string;
|
|
headerText: string;
|
|
headerLogoUrl: string;
|
|
footerPrivacyLabel: string;
|
|
footerPrivacyUrl: string;
|
|
footerImprintLabel: string;
|
|
footerImprintUrl: string;
|
|
footerCopyrightText: string;
|
|
};
|
|
|
|
export async function getPublicBookingInitialConfig(): Promise<PublicBookingInitialConfig> {
|
|
const settings = await getSettings([
|
|
SETTING_KEYS.COMPANY_NAME,
|
|
SETTING_KEYS.BOOKING_NOTICE_TEXT,
|
|
SETTING_KEYS.DEFAULT_DURATION_MINUTES,
|
|
SETTING_KEYS.FRONTEND_HEADER_TEXT,
|
|
SETTING_KEYS.FRONTEND_HEADER_LOGO_URL,
|
|
SETTING_KEYS.FOOTER_PRIVACY_LABEL,
|
|
SETTING_KEYS.FOOTER_PRIVACY_URL,
|
|
SETTING_KEYS.FOOTER_IMPRINT_LABEL,
|
|
SETTING_KEYS.FOOTER_IMPRINT_URL,
|
|
SETTING_KEYS.FOOTER_COPYRIGHT_TEXT
|
|
]).catch(() => ({} as Record<string, string>));
|
|
|
|
return {
|
|
companyName: (settings[SETTING_KEYS.COMPANY_NAME] || "CalBook").trim() || "CalBook",
|
|
bookingNoticeText:
|
|
(settings[SETTING_KEYS.BOOKING_NOTICE_TEXT] ||
|
|
"Erzähl uns kurz, worum es geht - damit wir uns optimal vorbereiten können.").trim() ||
|
|
"Erzähl uns kurz, worum es geht - damit wir uns optimal vorbereiten können.",
|
|
defaultDurationMinutes: Number(settings[SETTING_KEYS.DEFAULT_DURATION_MINUTES] || "60"),
|
|
defaultTimezone: DEFAULT_TIMEZONE,
|
|
headerText: (settings[SETTING_KEYS.FRONTEND_HEADER_TEXT] || "Gespräch").trim() || "Gespräch",
|
|
headerLogoUrl: (settings[SETTING_KEYS.FRONTEND_HEADER_LOGO_URL] || "").trim(),
|
|
footerPrivacyLabel:
|
|
(settings[SETTING_KEYS.FOOTER_PRIVACY_LABEL] || "Datenschutz").trim() || "Datenschutz",
|
|
footerPrivacyUrl:
|
|
(settings[SETTING_KEYS.FOOTER_PRIVACY_URL] || "/datenschutz").trim() || "/datenschutz",
|
|
footerImprintLabel:
|
|
(settings[SETTING_KEYS.FOOTER_IMPRINT_LABEL] || "Impressum").trim() || "Impressum",
|
|
footerImprintUrl:
|
|
(settings[SETTING_KEYS.FOOTER_IMPRINT_URL] || "/impressum").trim() || "/impressum",
|
|
footerCopyrightText:
|
|
(settings[SETTING_KEYS.FOOTER_COPYRIGHT_TEXT] || "© {{year}} {{companyName}}").trim() ||
|
|
"© {{year}} {{companyName}}"
|
|
};
|
|
}
|