All files / src/app/extensions/store-locator/facades store-locator.facade.ts

35.71% Statements 5/14
75% Branches 6/8
0% Functions 0/8
38.46% Lines 5/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 402x 2x     2x 2x     2x                                                              
import { Injectable } from '@angular/core';
import { Store, select } from '@ngrx/store';
 
import { StoreLocation as StoreModel } from '../models/store-location/store-location.model';
import { StoresMapService } from '../services/stores-map/stores-map.service';
import { getError, getHighlightedStore, getLoading, getStores, highlightStore, loadStores } from '../store/stores';
 
@Injectable({ providedIn: 'root' })
export class StoreLocatorFacade {
  constructor(private mapService: StoresMapService, private store: Store) {}
 
  loadStores(countryCode: string, postalCode: string, city: string) {
    this.store.dispatch(loadStores({ countryCode, postalCode, city }));
  }
 
  getLoading$() {
    return this.store.pipe(select(getLoading));
  }
 
  getError$() {
    return this.store.pipe(select(getError));
  }
 
  getStores$() {
    return this.store.pipe(select(getStores));
  }
 
  getHighlighted$() {
    return this.store.pipe(select(getHighlightedStore));
  }
 
  setHighlighted(store: StoreModel) {
    this.store.dispatch(highlightStore({ storeId: store.id }));
  }
 
  loadMap(container: HTMLElement) {
    this.mapService.initialize(container);
  }
}