member_webapp/@overflow/meta/store/entity/meta-crawler-input-item/meta-crawler-input-item.effect.ts
crusader 10e14d5edb ing
2018-05-29 19:17:16 +09:00

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)))
)
)
);
}