diff options
Diffstat (limited to 'sdc-workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewSagas.js')
-rw-r--r-- | sdc-workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewSagas.js | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/sdc-workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewSagas.js b/sdc-workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewSagas.js new file mode 100644 index 00000000..792d4c0c --- /dev/null +++ b/sdc-workflow-designer-ui/src/main/frontend/src/features/workflow/overview/overviewSagas.js @@ -0,0 +1,104 @@ +/* +* Copyright © 2018 European Support Limited +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +import { call, takeEvery, put, select } from 'redux-saga/effects'; + +import { genericNetworkErrorAction } from 'wfapp/appConstants'; +import overviewApi from 'features/workflow/overview/overviewApi'; +import { + versionListFetchAction, + getVersionsAction, + GET_OVERVIEW, + UPDATE_WORKFLOW, + ARCHIVE_WORKFLOW, + RESTORE_WORKFLOW +} from 'features/workflow/overview/overviewConstansts'; +import { setWorkflowAction } from 'features/workflow/workflowConstants'; +import { notificationActions } from 'shared/notifications/notificationsActions'; +import { fetchWorkflow } from 'features/catalog/catalogActions'; +import { I18n } from 'react-redux-i18n'; + +export function* getOverview({ payload }) { + try { + const versions = yield call(overviewApi.getVersions, payload); + yield put(versionListFetchAction(versions)); + const workflow = yield call(overviewApi.getWorkflow, payload); + yield put(setWorkflowAction(workflow)); + } catch (error) { + yield put(genericNetworkErrorAction(error)); + } +} + +export function* updateWorkflow(action) { + try { + yield call(overviewApi.updateWorkflow, action.payload); + yield put( + notificationActions.showSuccess({ + title: I18n.t('workflow.overview.updateTitle'), + message: I18n.t('workflow.overview.updateNotification') + }) + ); + } catch (e) { + yield put(genericNetworkErrorAction(e)); + } +} + +export function* archiveRestoreWorkflow(action) { + try { + const { ...data } = action.payload; + yield call(overviewApi.archiveRestoreWorkflow, data); + const { + catalog: { sort, status }, + searchNameFilter = '' + } = yield select(); + + yield put( + fetchWorkflow({ + sort, + searchNameFilter, + status: status + }) + ); + } catch (e) { + yield put(genericNetworkErrorAction(e)); + } +} + +export function* restoreWorkflow(action) { + const { id } = action.payload; + yield archiveRestoreWorkflow(action); + yield put(getVersionsAction(id)); +} + +export function* archiveWorkflow(action) { + const { history } = action.payload; + yield archiveRestoreWorkflow(action); + yield put( + notificationActions.showSuccess({ + title: I18n.t('workflow.overview.archiveTitle'), + message: I18n.t('workflow.overview.archiveNotification', { + name: action.payload.name + }) + }) + ); + history.push('/workflows/'); +} + +export function* watchOverview() { + yield takeEvery(GET_OVERVIEW, getOverview); + yield takeEvery(UPDATE_WORKFLOW, updateWorkflow); + yield takeEvery(ARCHIVE_WORKFLOW, archiveWorkflow); + yield takeEvery(RESTORE_WORKFLOW, restoreWorkflow); +} |