lml-main
Version:
This is now a mono repository published into many standalone packages.
42 lines • 2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const redux_observable_1 = require("redux-observable");
const selectors_1 = require("../../couriers/selectors");
const actions_1 = require("../../couriers/actions");
const actions_2 = require("../../mapping/actions");
const cosmo_redux_api_1 = require("@lml/cosmo-redux-api");
exports.updateCourierMarker = (action$, store) => action$.ofType(cosmo_redux_api_1.SET_LOCATION_BY_OBJECT_ID)
.map((action) => {
const state = store.getState();
const activeCourierId = selectors_1.getActiveCourierId(state);
let markerType = 'courier';
if (activeCourierId === action.location.objectId) {
markerType = 'activeCourier';
}
const marker = selectors_1.getCourierMarker(state, action.location.objectId);
if (!marker) {
return actions_1.courierHasNoLocation(action.location.objectId);
}
return actions_2.updateMarkers(markerType, [marker]);
});
exports.updateCourierMarkersBatch = (action$, store) => action$.ofType(cosmo_redux_api_1.SET_LOCATION_BY_OBJECT_ID_BATCH)
.mergeMap((action) => {
// console.log('HANDLE ACTIVE COURIER', action)
const state = store.getState();
const activeCourierId = selectors_1.getActiveCourierId(state);
let activeCourierMarker = null;
if (activeCourierId) {
activeCourierMarker = selectors_1.getCourierMarker(state, activeCourierId);
}
const ids = action.locations
.map(l => l.objectId !== activeCourierId ? l.objectId : null)
.filter(Boolean);
const markers = selectors_1.getCourierMarkers(state, ids);
const res = [actions_2.updateMarkers('courier', markers)];
if (activeCourierMarker) {
res.push(actions_2.updateMarkers('activeCourier', [activeCourierMarker]));
}
return res;
});
exports.updateCourierMarkersEpics = redux_observable_1.combineEpics(exports.updateCourierMarker, exports.updateCourierMarkersBatch);
//# sourceMappingURL=update-courier-markers.js.map