import { combineEpics, Epic, ofType } from 'redux-observable'; import { map, mergeMap } from 'rxjs/operators'; import { MiddlewareDependencies, PayloadAction, StoreState } from 'app/common/store/store.types'; import { TCE_DEVELOPMENT } from './tceDevelopment.actionTypes'; import { tceDevelopmentGetData, tceDevelopmentGetDataSuccess, tceDevelopmentSetCommonData, } from './tceDevelopment.actions'; import { TceDevelopmentModalPayload } from './tceDevelopment.types'; export const openTceDevelopmentModalEpic: Epic, any, StoreState> = (action$) => { return action$.pipe( ofType(TCE_DEVELOPMENT.OPEN_TCE_DEVELOPMENT_MODAL), map((action) => [ tceDevelopmentSetCommonData({ date: action.payload.date, hasScrubber: action.payload.hasScrubber, poolPoints: action.payload.poolPoints, bunkerAdjustmentPerDay: action.payload.bunkerAdjustmentPerDay, }), tceDevelopmentGetData(action.payload), ]) ); }; export const getTceDevelopmentDataEpic: Epic, any, StoreState, MiddlewareDependencies> = (action$, _store$, { tceDevelopmentService }) => { return action$.pipe( ofType(TCE_DEVELOPMENT.FETCH_TCE_DEVELOPMENT_DATA_REQUEST), mergeMap((action) => tceDevelopmentService.getFinancialTceDevelopment( action.payload.pool, action.payload.vesselCode, action.payload.partnerAxCode, action.payload.date, )), map((data) => tceDevelopmentGetDataSuccess(data)), ); }; export const tceDevelopmentEpics = combineEpics(openTceDevelopmentModalEpic, getTceDevelopmentDataEpic);