diff --git a/src/services/config.service.ts b/src/services/config.service.ts index e18abd48a..1e64479be 100644 --- a/src/services/config.service.ts +++ b/src/services/config.service.ts @@ -31,7 +31,7 @@ const configSchema: SchemaOf = object({ id: string().defined(), siteName: string().defined(), description: string().defined(), - footerText: string().defined(), + footerText: string().nullable(), player: string().defined(), recommendationsPlaylist: string().notRequired(), searchPlaylist: string().notRequired(), @@ -59,14 +59,43 @@ const loadConfig = async (configLocation: string) => { method: 'GET', }); - return await response.json(); + const data = await response.json(); + + if (data.version) { + return serializeDeprecatedConfig(data); + } + return data; } catch (error: unknown) { return error; } }; -export const validateConfig = (config: unknown): Promise => { - return configSchema.validate(config, { strict: true }) as Promise; +// /** +// * Serialize deprecated config to v3 config +// * @param {Object} config +// * @returns {jwOTTwebApp.config} +// */ +const serializeDeprecatedConfig = (config: Config) => { + const description = JSON.parse(config.description); + config.description = ''; + + const newConfig = { + ...config, + id: 'ID_PLACE_HOLDER', + menu: description.menu, + analyticsToken: description.analyticsToken, + options: { + dynamicBlur: description.dynamicBlur, + }, + }; + console.info(newConfig); + return newConfig; +}; + +export const validateConfig = (config: Config): Promise => { + return configSchema.validate(config, { + strict: true, + }) as Promise; }; export default loadConfig; diff --git a/types/Config.d.ts b/types/Config.d.ts index 35594b12d..4accf1133 100644 --- a/types/Config.d.ts +++ b/types/Config.d.ts @@ -6,7 +6,7 @@ export type Config = { id: string; siteName: string; description: string; - footerText: string; + footerText?: string | null; player: string; recommendationsPlaylist?: string; searchPlaylist?: string;