Update the action config with the datasource info (#1451)

This commit is contained in:
akash-codemonk 2020-10-30 11:54:15 +05:30 committed by GitHub
parent 1fd9de84ae
commit d652c1485d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 78 additions and 2 deletions

View File

@ -10,6 +10,7 @@ import _ from "lodash";
import { RapidApiAction, RestAction } from "entities/Action";
import { UpdateActionPropertyActionPayload } from "actions/actionActions";
import produce from "immer";
import { Datasource } from "api/DatasourcesApi";
export interface ActionData {
isLoading: boolean;
@ -335,6 +336,52 @@ const actionsReducer = createReducer(initialState, {
});
});
},
[ReduxActionTypes.FETCH_DATASOURCES_SUCCESS]: (
state: ActionDataState,
action: ReduxAction<Datasource[]>,
) => {
const datasources = action.payload;
return state.map(action => {
const datasourceId = action.config.datasource.id;
if (datasourceId) {
const datasource = datasources.find(
datasource => datasource.id === datasourceId,
);
return {
...action,
config: {
...action.config,
datasource: datasource,
},
};
}
return action;
});
},
[ReduxActionTypes.UPDATE_DATASOURCE_SUCCESS]: (
state: ActionDataState,
action: ReduxAction<Datasource>,
) => {
const datasource = action.payload;
return state.map(action => {
const datasourceId = action.config.datasource.id;
if (datasourceId && datasource.id === datasourceId) {
return {
...action,
config: {
...action.config,
datasource: datasource,
},
};
}
return action;
});
},
});
export default actionsReducer;

View File

@ -50,6 +50,7 @@ import { ActionData } from "reducers/entityReducers/actionsReducer";
import {
getAction,
getCurrentPageNameByActionId,
getDatasource,
getPageNameByPageId,
} from "selectors/entitiesSelector";
import { PLUGIN_TYPE_API } from "constants/ApiEditorConstants";
@ -87,7 +88,19 @@ export function* createActionSaga(actionPayload: ReduxAction<RestAction>) {
pageName: pageName,
...actionPayload.payload.eventData,
});
yield put(createActionSuccess(response.data));
let newAction = response.data;
if (newAction.datasource.id) {
const datasource = yield select(getDatasource, newAction.datasource.id);
newAction = {
...newAction,
datasource,
};
}
yield put(createActionSuccess(newAction));
}
} catch (error) {
yield put({
@ -234,10 +247,26 @@ export function* updateActionSaga(actionPayload: ReduxAction<{ id: string }>) {
pageName: pageName,
});
}
let updatedAction = response.data;
if (updatedAction.datasource.id) {
const datasource = yield select(
getDatasource,
updatedAction.datasource.id,
);
updatedAction = {
...updatedAction,
datasource,
};
}
PerformanceTracker.stopAsyncTracking(
PerformanceTransactionName.UPDATE_ACTION_API,
);
yield put(updateActionSuccess({ data: response.data }));
yield put(updateActionSuccess({ data: updatedAction }));
}
} catch (error) {
PerformanceTracker.stopAsyncTracking(