File

libs/sdk/src/lib/journey/config/migrations/notification-config/notification-config.ts

Extends

PageJsonSchema

Index

Properties

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

results matching ""

    No results matching ""