File

feature-libs/checkout/core/services/checkout-page-meta.resolver.ts

Description

Resolves the page data for all Content Pages based on the PageType.CONTENT_PAGE and the MultiStepCheckoutSummaryPageTemplate. If the checkout page matches this template, the more generic ContentPageMetaResolver is overridden by this resolver.

The page title and robots are resolved in this implementation only.

Extends

PageMetaResolver

Index

Properties
Methods

Constructor

constructor(translation: TranslationService, activeCartService: ActiveCartService, basePageMetaResolver: BasePageMetaResolver)
Parameters :
Name Type Optional
translation TranslationService No
activeCartService ActiveCartService No
basePageMetaResolver BasePageMetaResolver No

Methods

resolveDescription
resolveDescription()
resolveRobots
resolveRobots()
resolveTitle
resolveTitle()

Resolves the page title from the translation pageMetaResolver.checkout.title. The cart total item count is passed to the translation, so it can be used in the title.

The title from the page data is ignored for this page title.

Returns : Observable<string>
getPriority
getPriority(page: Page)
Inherited from PageMetaResolver
Parameters :
Name Type Optional
page Page No
Returns : number
getScore
getScore(page: Page)
Inherited from PageMetaResolver

Returns the matching score for a resolver class, based on the page type and page template.

Parameters :
Name Type Optional
page Page No
Returns : number
hasMatch
hasMatch(page: Page)
Inherited from PageMetaResolver
Parameters :
Name Type Optional
page Page No
Returns : boolean

Properties

Protected cart$
Type : Observable<Cart>
Default value : this.activeCartService.getActive()
pageTemplate
Type : string
Inherited from PageMetaResolver

The page template is used to score the (non)matching page template

pageType
Type : PageType
Inherited from PageMetaResolver

The PageType is used to score the (non)matching page

import { Injectable } from '@angular/core';
import {
  ActiveCartService,
  BasePageMetaResolver,
  Cart,
  PageDescriptionResolver,
  PageMetaResolver,
  PageRobotsMeta,
  PageRobotsResolver,
  PageTitleResolver,
  PageType,
  TranslationService,
} from '@spartacus/core';
import { Observable } from 'rxjs';
import { switchMap } from 'rxjs/operators';

/**
 * Resolves the page data for all Content Pages based on the `PageType.CONTENT_PAGE`
 * and the `MultiStepCheckoutSummaryPageTemplate`. If the checkout page matches this template,
 * the more generic `ContentPageMetaResolver` is overridden by this resolver.
 *
 * The page title and robots are resolved in this implementation only.
 */
@Injectable({
  providedIn: 'root',
})
export class CheckoutPageMetaResolver
  extends PageMetaResolver
  implements PageTitleResolver, PageDescriptionResolver, PageRobotsResolver
{
  protected cart$: Observable<Cart> = this.activeCartService.getActive();

  constructor(
    protected translation: TranslationService,
    protected activeCartService: ActiveCartService,
    protected basePageMetaResolver: BasePageMetaResolver
  ) {
    super();
    this.pageType = PageType.CONTENT_PAGE;
    this.pageTemplate = 'MultiStepCheckoutSummaryPageTemplate';
  }

  /**
   * @override
   * Resolves the page title from the translation `pageMetaResolver.checkout.title`. The
   * cart total item `count` is passed to the translation, so it can be used in the title.
   *
   * The title from the page data is ignored for this page title.
   */
  resolveTitle(): Observable<string> {
    return this.cart$.pipe(
      switchMap((c) =>
        this.translation.translate('pageMetaResolver.checkout.title', {
          count: c.totalItems,
        })
      )
    );
  }

  resolveDescription(): Observable<string | undefined> {
    return this.basePageMetaResolver.resolveDescription();
  }

  resolveRobots(): Observable<PageRobotsMeta[]> {
    return this.basePageMetaResolver.resolveRobots();
  }
}

result-matching ""

    No results matching ""