import { Injectable } from '@angular/core'; import { Effect, Actions, ofType } from '@ngrx/effects'; import { of } from 'rxjs'; import { catchError, exhaustMap, map, tap } from 'rxjs/operators'; import { MetaCrawler, MetaCrawlerInputItem } from '@overflow/commons-typescript/model/meta'; import { MetaCrawlerInputItemService } from '../../../service/meta-crawler-input-item.service'; import { ReadAllByMetaCrawler, ReadAllByMetaCrawlerSuccess, ReadAllByMetaCrawlerFailure, ActionType, } from './meta-crawler-input-item.action'; @Injectable() export class Effects { constructor( private actions$: Actions, private metaCrawlerInputItemService: MetaCrawlerInputItemService, ) { } @Effect() readAllByMetaCrawler$ = this.actions$.pipe( ofType(ActionType.ReadAllByMetaCrawler), map((action: ReadAllByMetaCrawler) => action.payload), exhaustMap((metaCrawler: MetaCrawler) => this.metaCrawlerInputItemService .readAllByMetaCrawler(metaCrawler) .pipe( map((result: MetaCrawlerInputItem[]) => { return new ReadAllByMetaCrawlerSuccess(result); }), catchError(error => of(new ReadAllByMetaCrawlerFailure(error))) ) ) ); }