UNPKG

@equinor/fusion-react-power-bi

Version:
27 lines 3.29 kB
import { from, of, merge, concat } from 'rxjs'; import { filter, switchMap, map, catchError, takeUntil } from 'rxjs/operators'; import { isActionOf } from 'typesafe-actions'; import { combineEpics } from '@equinor/fusion/lib/epic'; import { actions } from './actions'; // eslint-disable-next-line @typescript-eslint/no-explicit-any export const fetchReport = (action$, _, { clients }) => action$.pipe(filter(isActionOf(actions.fetchReport.request)), switchMap((action) => from(clients.report.getReportAsync(action.payload)).pipe(map((res) => actions.fetchReport.success(res.data)), catchError((error) => of(actions.fetchReport.failure({ action, error }))), takeUntil(action$.pipe(filter(isActionOf(actions.fetchReport.cancel))))))); // eslint-disable-next-line @typescript-eslint/no-explicit-any export const fetchReportAccessDescription = (action$, _, { clients }) => action$.pipe(filter(isActionOf(actions.fetchReportAccessDescription.request)), switchMap((action) => from(clients.report.getAccessDescription(action.payload)).pipe(map((res) => actions.fetchReportAccessDescription.success(res.data)), catchError((error) => of(actions.fetchReportAccessDescription.failure({ action, error }))), takeUntil(action$.pipe(filter(isActionOf(actions.fetchReportAccessDescription.cancel))))))); // eslint-disable-next-line @typescript-eslint/no-explicit-any export const fetchReportDescription = (action$, _, { clients }) => action$.pipe(filter(isActionOf(actions.fetchReportDescription.request)), switchMap((action) => from(clients.report.getDescription(action.payload)).pipe(map((res) => actions.fetchReportDescription.success(res.data)), catchError((error) => of(actions.fetchReportDescription.failure({ action, error }))), takeUntil(action$.pipe(filter(isActionOf(actions.fetchReportDescription.cancel))))))); // eslint-disable-next-line @typescript-eslint/no-explicit-any export const fetchReportRequirements = (action$, _state$, { clients }) => action$.pipe(filter(isActionOf(actions.fetchReportRequirements.request)), switchMap((action) => from(clients.report.getRlsRequirements(action.payload)).pipe(map((res) => actions.fetchReportRequirements.success(res.data)), catchError((error) => of(actions.fetchReportRequirements.failure({ action, error }))), takeUntil(action$.pipe(filter(isActionOf(actions.fetchReportRequirements.cancel))))))); export const initialize = (action$, state$, deps) => { const abort$ = action$.pipe(filter(isActionOf(actions.initialize.cancel))); const request$ = (id) => merge(fetchReport(of(actions.fetchReport.request(id)), state$, deps), fetchReportRequirements(of(actions.fetchReportRequirements.request(id)), state$, deps), fetchReportDescription(of(actions.fetchReportDescription.request(id)), state$, deps), fetchReportAccessDescription(of(actions.fetchReportAccessDescription.request(id)), state$, deps)); return action$.pipe(filter(isActionOf(actions.initialize.request)), switchMap((action) => concat(request$(action.payload), of(actions.initialize.success())).pipe(takeUntil(abort$)))); }; export const epics = { fetchReportAccessDescription, fetchReportDescription, fetchReportRequirements, initialize, }; export const epic = combineEpics(...Object.values(epics)); export default epic; //# sourceMappingURL=epics.js.map