Files
Calbook/lib/public-booking-config.ts

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}}"
};
}