40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
|
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 { MetaCrawlerInputItemService } from '../../../service/meta-crawler-input-item.service';
|
||
|
|
||
|
import {
|
||
|
ReadAllByMetaCrawler,
|
||
|
ReadAllByMetaCrawlerSuccess,
|
||
|
ReadAllByMetaCrawlerFailure,
|
||
|
ActionType,
|
||
|
} from './meta-crawler-input-item.action';
|
||
|
import { MetaCrawler, MetaCrawlerInputItem } from '@overflow/commons-typescript/model/meta';
|
||
|
|
||
|
@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)))
|
||
|
)
|
||
|
)
|
||
|
);
|
||
|
}
|