File

src/lib/fs/cms/page/processing/merge/cms-structure-model-merger-factory.ts

Description

This factory creates a CmsStructureModelMerger for the given page template.

Index

Methods

Constructor

constructor(fsSpartacusBridgeConfig: FsSpartacusBridgeConfig, baseSiteService: BaseSiteService, injector: Injector)
Parameters :
Name Type Optional
fsSpartacusBridgeConfig FsSpartacusBridgeConfig No
baseSiteService BaseSiteService No
injector Injector No

Methods

createFsCmsPageMerger
createFsCmsPageMerger(pageTemplate: string)

This method creates a CmsStructureModelMerger for a given page template. If the given ID of the page template cannot be resolved it returns "undefined".

Parameters :
Name Type Optional Description
pageTemplate string No

The ID of the page template to create a CmsStructureModelMerger for.

The created instance or undefined if no corresponding page can be found.

import { Injectable, Injector } from '@angular/core';
import { CmsStructureModelMerger } from './cms-structure-model-merger';
import { getFsManagedPageConfigByTemplateId } from '../../../../util/helper';
import { FsSpartacusBridgeConfig } from 'fs-spartacus-common';
import { BaseSiteService } from '@spartacus/core';
import { first } from 'rxjs/operators';

/**
 * This factory creates a {@link CmsStructureModelMerger} for the given page template.
 *
 * @export
 * @class CmsStructureModelMergerFactory
 */
@Injectable({
  providedIn: 'root',
})
export class CmsStructureModelMergerFactory {
  constructor(
    private fsSpartacusBridgeConfig: FsSpartacusBridgeConfig,
    private baseSiteService: BaseSiteService,
    private injector: Injector
  ) {}

  /**
   * This method creates a CmsStructureModelMerger for a given page template.
   * If the given ID of the page template cannot be resolved it returns "undefined".
   *
   * @param {string} pageTemplate The ID of the page template to create a CmsStructureModelMerger for.
   * @return {(CmsStructureModelMerger | undefined)} The created instance or undefined if no corresponding page can be found.
   * @memberof CmsStructureModelMergerFactory
   */
  createFsCmsPageMerger(pageTemplate: string): CmsStructureModelMerger | undefined {
    let baseSite;
    this.baseSiteService
      .getActive()
      .pipe(first())
      .subscribe((activeBaseSite) => (baseSite = activeBaseSite));
    const firstSpiritManagedPage = getFsManagedPageConfigByTemplateId(
      this.fsSpartacusBridgeConfig.bridge[baseSite].firstSpiritManagedPages,
      pageTemplate
    );
    return firstSpiritManagedPage ? new CmsStructureModelMerger(firstSpiritManagedPage, this.injector) : undefined;
  }
}

results matching ""

    No results matching ""