From 07195f3762b6a8a7dfb44c2231db58c5be13c43f Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Wed, 16 Aug 2017 22:55:16 +0300 Subject: Rename project to sim and enable sim-adding --- src/api/sagas/objects.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/api/sagas/objects.js (limited to 'src/api/sagas/objects.js') diff --git a/src/api/sagas/objects.js b/src/api/sagas/objects.js new file mode 100644 index 00000000..9bc98e6f --- /dev/null +++ b/src/api/sagas/objects.js @@ -0,0 +1,24 @@ +import {call, put, select} from "redux-saga/effects"; +import {addToSimulationStore, addToUserStore} from "../../actions/objects"; +import {getSimulation} from "../routes/simulations"; +import {getUser} from "../routes/users"; + +const selectors = { + simulation: state => state.objects.simulations, + user: state => state.objects.users, + authorization: state => state.objects.authorizations, +}; + +function* fetchAndStoreObject(objectType, id, apiCall, addToStore) { + const objectStore = yield select(selectors[objectType]); + if (!objectStore[id]) { + const object = yield apiCall; + yield put(addToStore(object)); + } +} + +export const fetchAndStoreSimulation = (id) => + fetchAndStoreObject("simulation", id, call(getSimulation, id), addToSimulationStore); + +export const fetchAndStoreUser = (id) => + fetchAndStoreObject("user", id, call(getUser, id), addToUserStore); -- cgit v1.2.3