redux-online-status
Version:
Online status enhancer for Redux.
54 lines (44 loc) • 1.52 kB
JavaScript
import getOnLine from './utils/getOnLine';
export var CHANGE = '@@online-status/CHANGE';
export var change = function change(online) {
return { type: CHANGE, payload: online };
};
export var reducer = function reducer() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getOnLine();
var _ref = arguments[1];
var type = _ref.type,
payload = _ref.payload;
if (type === CHANGE) {
return payload;
}
return state;
};
export var defaultCreateEventListener = function defaultCreateEventListener(_ref2) {
var dispatch = _ref2.dispatch,
getState = _ref2.getState;
return function () {
var onLine = getOnLine();
var _getState = getState(),
current = _getState.online;
if (current !== onLine) {
dispatch(change(onLine));
}
};
};
var createEnhancer = function createEnhancer() {
var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref3$createEventList = _ref3.createEventListener,
createEventListener = _ref3$createEventList === undefined ? defaultCreateEventListener : _ref3$createEventList;
return function (createStore) {
return function () {
var store = createStore.apply(undefined, arguments);
if (window) {
var listener = createEventListener(store);['online', 'offline'].forEach(function (event) {
return window.addEventListener(event, listener);
});
}
return store;
};
};
};
export default createEnhancer;