File

feature-libs/order/components/order-details/order-details.service.ts

Index

Properties
Methods

Constructor

constructor(userOrderService: OrderFacade, routingService: RoutingService)
Parameters :
Name Type Optional
userOrderService OrderFacade No
routingService RoutingService No

Methods

getOrderDetails
getOrderDetails()
Returns : Observable<Order>

Properties

orderCode$
Type : Observable<string>
orderLoad$
Type : Observable<literal type>
import { Injectable } from '@angular/core';
import { Order, RoutingService } from '@spartacus/core';
import { OrderFacade } from '@spartacus/order/root';
import { Observable } from 'rxjs';
import {
  distinctUntilChanged,
  map,
  shareReplay,
  switchMap,
  tap,
} from 'rxjs/operators';

@Injectable({
  providedIn: 'root',
})
export class OrderDetailsService {
  orderCode$: Observable<string>;
  orderLoad$: Observable<{}>;

  constructor(
    private userOrderService: OrderFacade,
    private routingService: RoutingService
  ) {
    this.orderCode$ = this.routingService.getRouterState().pipe(
      map((routingData) => routingData.state.params.orderCode),
      distinctUntilChanged()
    );

    this.orderLoad$ = this.orderCode$.pipe(
      tap((orderCode) => {
        if (orderCode) {
          this.userOrderService.loadOrderDetails(orderCode);
        } else {
          this.userOrderService.clearOrderDetails();
        }
      }),
      shareReplay({ bufferSize: 1, refCount: true })
    );
  }

  getOrderDetails(): Observable<Order> {
    return this.orderLoad$.pipe(
      switchMap(() => this.userOrderService.getOrderDetails())
    );
  }
}

result-matching ""

    No results matching ""