client/src/sagas/networkSaga.js
changeset 129 d48946d164c6
parent 97 69eaef18b01b
child 130 78246db1cbac
--- a/client/src/sagas/networkSaga.js	Tue Jul 25 19:11:26 2017 +0200
+++ b/client/src/sagas/networkSaga.js	Fri Jul 28 19:40:35 2017 +0200
@@ -4,14 +4,11 @@
 import * as persistConstants  from 'redux-persist/constants';
 import jwt_decode from 'jwt-decode';
 import moment from 'moment';
+import { delay } from './utils';
+import { setOnlineStatus } from '../actions/networkActions';
+import { getToken } from './selectors';
 
-// Utility function to delay effects
-function delay(millis) {
-    const promise = new Promise(resolve => {
-        setTimeout(() => resolve(true), millis)
-    });
-    return promise;
-}
+
 
 function pingServer(client, token) {
   const decodedToken = jwt_decode(token);
@@ -32,14 +29,14 @@
 }
 
 function* pollData(context) {
-  const token = yield select(state => state.token);
+  const token = yield select(getToken);
   // No token : we wait for a login
   if(!token) {
     yield take(types.AUTH_LOGIN_SUCCESS);
   }
   try {
     const res = yield pingServer(context.client, token);
-    yield call(context.callback, true);
+    yield put(setOnlineStatus(true));
     if(res.token) {
       yield put({
         type: types.AUTH_STORE_TOKEN_ASYNC,
@@ -47,7 +44,7 @@
       });
     }
   } catch (error) {
-    yield call(context.callback, false);
+    yield put(setOnlineStatus(false));
     //TODO: This is ugly...
     if ((error.non_field_errors &&
       error.non_field_errors &&
@@ -69,8 +66,8 @@
       // pollDate cancelled
       // if there is a token : this was a LOGIN, set status to ok
       // if there is no token : this was a LOGOUT, set status to ko and wait for login
-      const token = yield select(state => state.token);
-      yield call(context.callback, Boolean(token));
+      const token = yield select(getToken);
+      yield put(setOnlineStatus(Boolean(token)));
     }
   }
 }
@@ -83,8 +80,8 @@
       // pollDate cancelled
       // if there is a token : this was a LOGIN, set status to ok
       // if there is no token : this was a LOGOUT, set status to ko and wait for login
-      const token = yield select(state => state.token);
-      yield call(context.callback, Boolean(token));
+      const token = yield select(getToken);
+      yield put(setOnlineStatus(Boolean(token)));
     }
   }
 }
@@ -106,9 +103,7 @@
 }
 
 // Daemonize tasks in parallel
-export default function* root(baseContext) {
-  const actionRes = yield take(types.OFFLINE_CONFIG_INITIALIZED);
-  const context = {...baseContext, ...actionRes.additionalContext};
+export default function* root(context) {
   yield all([
     fork(watchPollData, context)
     // other watchers here