Skip to content

Commit

Permalink
[Maps] fix bug where toggling Scaling type does not re-fetch data (#6…
Browse files Browse the repository at this point in the history
…3326) (#63414)

* [Maps] fix bug where toggling Scaling type does not re-fetch data

* reset to empty array instead of deleting

* move setting of layer type to action creator instead of side effect of UPDATE_SOURCE_PROP

* review feedback
  • Loading branch information
nreese committed Apr 13, 2020
1 parent 9987c9e commit aaf6643
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 15 deletions.
38 changes: 34 additions & 4 deletions x-pack/legacy/plugins/maps/public/actions/map_actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,9 +125,21 @@ async function syncDataForAllLayers(dispatch, getState, dataFilters) {
export function cancelAllInFlightRequests() {
return (dispatch, getState) => {
getLayerList(getState()).forEach(layer => {
layer.getInFlightRequestTokens().forEach(requestToken => {
dispatch(cancelRequest(requestToken));
});
dispatch(clearDataRequests(layer));
});
};
}

function clearDataRequests(layer) {
return dispatch => {
layer.getInFlightRequestTokens().forEach(requestToken => {
dispatch(cancelRequest(requestToken));
});
dispatch({
type: UPDATE_LAYER_PROP,
id: layer.getId(),
propName: '__dataRequests',
newValue: [],
});
};
}
Expand Down Expand Up @@ -663,13 +675,31 @@ export function updateSourceProp(layerId, propName, value, newLayerType) {
layerId,
propName,
value,
newLayerType,
});
if (newLayerType) {
dispatch(updateLayerType(layerId, newLayerType));
}
await dispatch(clearMissingStyleProperties(layerId));
dispatch(syncDataForLayer(layerId));
};
}

function updateLayerType(layerId, newLayerType) {
return (dispatch, getState) => {
const layer = getLayerById(layerId, getState());
if (!layer || layer.getType() === newLayerType) {
return;
}
dispatch(clearDataRequests(layer));
dispatch({
type: UPDATE_LAYER_PROP,
id: layerId,
propName: 'type',
newValue: newLayerType,
});
};
}

export function syncDataForLayer(layerId) {
return async (dispatch, getState) => {
const targetLayer = getLayerById(layerId, getState());
Expand Down
13 changes: 2 additions & 11 deletions x-pack/plugins/maps/public/reducers/map.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ const updateLayerInList = (state, layerId, attribute, newValue) => {
return { ...state, layerList: updatedList };
};

const updateLayerSourceDescriptorProp = (state, layerId, propName, value, newLayerType) => {
const updateLayerSourceDescriptorProp = (state, layerId, propName, value) => {
const { layerList } = state;
const layerIdx = getLayerIndex(layerList, layerId);
const updatedLayer = {
Expand All @@ -84,9 +84,6 @@ const updateLayerSourceDescriptorProp = (state, layerId, propName, value, newLay
[propName]: value,
},
};
if (newLayerType) {
updatedLayer.type = newLayerType;
}
const updatedList = [
...layerList.slice(0, layerIdx),
updatedLayer,
Expand Down Expand Up @@ -261,13 +258,7 @@ export function map(state = INITIAL_STATE, action) {
case UPDATE_LAYER_PROP:
return updateLayerInList(state, action.id, action.propName, action.newValue);
case UPDATE_SOURCE_PROP:
return updateLayerSourceDescriptorProp(
state,
action.layerId,
action.propName,
action.value,
action.newLayerType
);
return updateLayerSourceDescriptorProp(state, action.layerId, action.propName, action.value);
case SET_JOINS:
const layerDescriptor = state.layerList.find(
descriptor => descriptor.id === action.layer.getId()
Expand Down

0 comments on commit aaf6643

Please sign in to comment.