libs/sdk/src/lib/journey/config/migrations/notification-config/notification-config.ts
Properties |
|
notifications (Optional) | |
Type |
NotificationConfig[]
|
import { copyComments } from '../shared/jsonc-comments';
import { PageJsonSchema, PagesJsonSchema } from '../../../../model';
import { cloneDeepWithJsonComments } from '../shared/utils';
import { NotificationConfig } from '@allianz/taly-core/schemas';
export interface PageJsonSchemaBeforeNotificationMigration extends PageJsonSchema {
notifications?: NotificationConfig[];
}
export function migrateNotificationConfigurationPagesJson(pagesConfiguration: PagesJsonSchema) {
if (!pagesConfiguration.pages) {
return pagesConfiguration;
}
const migratedPageConfigurations = pagesConfiguration.pages.map((pageConfig) =>
migratePageNotificationConfig(pageConfig)
);
const migratedPagesConfiguration = cloneDeepWithJsonComments(pagesConfiguration);
migratedPagesConfiguration.pages = migratedPageConfigurations;
migratedPagesConfiguration.pages = copyComments(
migratedPagesConfiguration.pages,
pagesConfiguration.pages
);
return migratedPagesConfiguration as PagesJsonSchema;
}
export function migratePageNotificationConfig(
pageConfiguration: PageJsonSchemaBeforeNotificationMigration
) {
const notifications = pageConfiguration?.notifications;
if (notifications === undefined) {
return pageConfiguration as PageJsonSchema;
}
const migratedPageConfiguration = cloneDeepWithJsonComments(pageConfiguration);
migratedPageConfiguration.notificationsGroup = { items: notifications };
migratedPageConfiguration.notificationsGroup = copyComments(
migratedPageConfiguration.notificationsGroup,
pageConfiguration,
new Map([['items', 'notifications']])
);
delete migratedPageConfiguration.notifications;
return migratedPageConfiguration as PageJsonSchema;
}