Skip to content

Commit

Permalink
feat(project): add serialize deprecated config
Browse files Browse the repository at this point in the history
  • Loading branch information
RCVZ committed May 5, 2021
1 parent 90f1cfa commit 13d81f0
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 5 deletions.
37 changes: 33 additions & 4 deletions src/services/config.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const configSchema: SchemaOf<Config> = 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(),
Expand Down Expand Up @@ -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<Config> => {
return configSchema.validate(config, { strict: true }) as Promise<Config>;
// /**
// * 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<Config> => {
return configSchema.validate(config, {
strict: true,
}) as Promise<Config>;
};

export default loadConfig;
2 changes: 1 addition & 1 deletion types/Config.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export type Config = {
id: string;
siteName: string;
description: string;
footerText: string;
footerText?: string | null;
player: string;
recommendationsPlaylist?: string;
searchPlaylist?: string;
Expand Down

0 comments on commit 13d81f0

Please sign in to comment.