diff options
Diffstat (limited to 'opendc-web/opendc-web-ui/src/redux/sagas/projects.js')
| -rw-r--r-- | opendc-web/opendc-web-ui/src/redux/sagas/projects.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/opendc-web/opendc-web-ui/src/redux/sagas/projects.js b/opendc-web/opendc-web-ui/src/redux/sagas/projects.js new file mode 100644 index 00000000..506df6ed --- /dev/null +++ b/opendc-web/opendc-web-ui/src/redux/sagas/projects.js @@ -0,0 +1,53 @@ +import { call, put, getContext } from 'redux-saga/effects' +import { addToStore } from '../actions/objects' +import { addProjectSucceeded, deleteProjectSucceeded, fetchProjectsSucceeded } from '../actions/projects' +import { addProject, deleteProject, getProject, getProjects } from '../../api/projects' +import { fetchAndStoreAllTopologiesOfProject } from './topology' +import { fetchAndStoreAllSchedulers, fetchAndStoreAllTraces } from './objects' +import { fetchPortfoliosOfProject } from './portfolios' + +export function* onOpenProjectSucceeded(action) { + try { + const auth = yield getContext('auth') + const project = yield call(getProject, auth, action.id) + yield put(addToStore('project', project)) + + yield fetchAndStoreAllTopologiesOfProject(action.id, true) + yield fetchPortfoliosOfProject() + yield fetchAndStoreAllSchedulers() + yield fetchAndStoreAllTraces() + } catch (error) { + console.error(error) + } +} + +export function* onProjectAdd(action) { + try { + const auth = yield getContext('auth') + const project = yield call(addProject, auth, { name: action.name }) + yield put(addToStore('project', project)) + yield put(addProjectSucceeded(project)) + } catch (error) { + console.error(error) + } +} + +export function* onProjectDelete(action) { + try { + const auth = yield getContext('auth') + yield call(deleteProject, auth, action.id) + yield put(deleteProjectSucceeded(action.id)) + } catch (error) { + console.error(error) + } +} + +export function* onFetchProjects(action) { + try { + const auth = yield getContext('auth') + const projects = yield call(getProjects, auth) + yield put(fetchProjectsSucceeded(projects)) + } catch (error) { + console.error(error) + } +} |
