Config Vars - Get config vars from API
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
import { ConfigVar } from "@/model/ConfigVar";
|
||||
import { fetcher, fetcherUnwraper } from "./backend";
|
||||
import useSWR from "swr";
|
||||
|
||||
export function useAPIConfigVarList() {
|
||||
const { data, error, isLoading } = useSWR<ConfigVar[]>(
|
||||
"/api/config",
|
||||
fetcherUnwraper,
|
||||
);
|
||||
|
||||
return {
|
||||
configVarList: data,
|
||||
isLoading,
|
||||
isError: error,
|
||||
};
|
||||
}
|
||||
|
||||
export function useAPIConfigVar(key: string) {
|
||||
const url = `/api/config/var/${key}`;
|
||||
|
||||
const { data, error, isLoading } = useSWR<ConfigVar>(url, fetcher);
|
||||
|
||||
return {
|
||||
configVar: data,
|
||||
isLoading,
|
||||
isError: error,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
export type ConfigVar = {
|
||||
key: string;
|
||||
value: string;
|
||||
};
|
||||
|
||||
export enum eConfigVarKeys {
|
||||
varCompanyName = "CompanyName",
|
||||
varCompanyWebsite = "CompanyWebsite",
|
||||
varCompanyLogo = "CompanyLogo",
|
||||
varCompanyLogoSize = "CompanyLogoSize",
|
||||
varCompanyEmail = "CompanyEmail",
|
||||
varCompanyPhone = "CompanyPhone",
|
||||
varCompanyAddress = "CompanyAddress",
|
||||
varNightAmountForContactDialog = "NightAmountForContactDialog",
|
||||
varGuestNumberForContactDialog = "GuestNumberForContactDialog",
|
||||
varContactDialogShowBehaviour = "ContactDialogShowBehaviour",
|
||||
varShowNonAvailableRooms = "ShowNonAvailableRooms",
|
||||
varSomniaAttributionNotice = "SomniaAttributionNotice",
|
||||
varPhotoAspectRatio = "PhotoAspectRatio",
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import { useAPIConfigVarList } from "@/api/api-configVars";
|
||||
import { getConfigVarFromList } from "./utils";
|
||||
import { eConfigVarKeys } from "@/model/ConfigVar";
|
||||
|
||||
export function useConfigVariable(key: eConfigVarKeys, defaultValue: string) {
|
||||
const { configVarList, isLoading } = useAPIConfigVarList();
|
||||
|
||||
if (isLoading) {
|
||||
return {
|
||||
value: defaultValue,
|
||||
isLoading: true,
|
||||
};
|
||||
}
|
||||
const configVar = getConfigVarFromList(configVarList, key);
|
||||
|
||||
return { value: configVar?.value ?? defaultValue, isLoading: isLoading };
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import { AvailabilityFilter, FareFilter } from "@/model/RoomSearch";
|
||||
import { SearchFilter } from "@/model/InternalTypes";
|
||||
import { ConfigVar } from "@/model/ConfigVar";
|
||||
|
||||
export function makeDayUTCDate(date: Date | undefined): Date {
|
||||
if (!date) {
|
||||
@@ -50,3 +51,14 @@ export function makeFareFilterFromSearchFilter(
|
||||
roomCategory: roomCategoryId,
|
||||
};
|
||||
}
|
||||
|
||||
export function getConfigVarFromList(
|
||||
varList: ConfigVar[] | undefined,
|
||||
key: string,
|
||||
): ConfigVar | undefined {
|
||||
if (!varList) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return varList.find((v) => v.key === key);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user