@equinor/fusion-react-power-bi
Version:
React component for displaying an person information
27 lines • 3.29 kB
JavaScript
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