--- 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