PromucFlow_constructor/app/client/src/sagas/InitSagas.ts

68 lines
1.9 KiB
TypeScript
Raw Normal View History

import { all, put, takeLatest, take } from "redux-saga/effects";
2019-11-08 11:02:00 +00:00
import {
ReduxAction,
ReduxActionTypes,
InitializeEditorPayload,
} from "constants/ReduxActionConstants";
2019-11-25 05:07:27 +00:00
import { fetchEditorConfigs } from "actions/configsActions";
import { fetchPageList } from "actions/pageActions";
import { fetchDatasources } from "actions/datasourcesActions";
import { fetchPlugins } from "actions/pluginActions";
2020-01-24 09:54:40 +00:00
import { fetchActions } from "actions/actionActions";
2019-11-01 07:11:32 +00:00
function* initializeEditorSaga(
initializeEditorAction: ReduxAction<InitializeEditorPayload>,
) {
const { applicationId } = initializeEditorAction.payload;
// Step 1: Start getting all the data needed by the
2019-11-01 07:11:32 +00:00
yield all([
put(fetchPlugins()),
put(fetchPageList(applicationId)),
2019-11-22 12:15:33 +00:00
put(fetchEditorConfigs()),
2020-01-24 09:54:40 +00:00
put(fetchActions(applicationId)),
2019-11-07 09:32:38 +00:00
put(fetchDatasources()),
2019-11-01 07:11:32 +00:00
]);
// Step 2: Wait for all data to be in the state
yield all([
take(ReduxActionTypes.FETCH_PLUGINS_SUCCESS),
2019-11-01 07:11:32 +00:00
take(ReduxActionTypes.FETCH_PAGE_LIST_SUCCESS),
take(ReduxActionTypes.FETCH_ACTIONS_SUCCESS),
2019-11-07 09:32:38 +00:00
take(ReduxActionTypes.FETCH_DATASOURCES_SUCCESS),
2019-11-01 07:11:32 +00:00
]);
// Step 6: Notify UI that the editor is ready to go
2019-11-13 07:34:59 +00:00
yield put({
type: ReduxActionTypes.INITIALIZE_EDITOR_SUCCESS,
2019-11-13 07:34:59 +00:00
});
2019-11-01 07:11:32 +00:00
}
2019-11-08 11:02:00 +00:00
export function* initializeAppViewerSaga(
action: ReduxAction<{ pageId: string; applicationId: string }>,
2019-11-08 11:02:00 +00:00
) {
const { applicationId } = action.payload;
2020-01-24 09:54:40 +00:00
yield all([
put(fetchActions(applicationId)),
put(fetchPageList(applicationId)),
]);
2019-11-08 11:02:00 +00:00
yield all([
take(ReduxActionTypes.FETCH_ACTIONS_SUCCESS),
2020-01-24 09:54:40 +00:00
take(ReduxActionTypes.FETCH_PAGE_LIST_SUCCESS),
2019-11-08 11:02:00 +00:00
]);
2020-01-24 09:54:40 +00:00
yield put({
type: ReduxActionTypes.INITIALIZE_PAGE_VIEWER_SUCCESS,
});
2019-11-08 11:02:00 +00:00
}
2019-11-01 07:11:32 +00:00
export default function* watchInitSagas() {
2019-11-08 11:02:00 +00:00
yield all([
takeLatest(ReduxActionTypes.INITIALIZE_EDITOR, initializeEditorSaga),
2019-11-08 11:02:00 +00:00
takeLatest(
ReduxActionTypes.INITIALIZE_PAGE_VIEWER,
initializeAppViewerSaga,
),
]);
2019-11-01 07:11:32 +00:00
}