redux-online-status
Version:
Online status enhancer for Redux.
65 lines (51 loc) • 1.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.defaultCreateEventListener = exports.reducer = exports.change = exports.CHANGE = undefined;
var _getOnLine = require('./utils/getOnLine');
var _getOnLine2 = _interopRequireDefault(_getOnLine);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var CHANGE = exports.CHANGE = '@@online-status/CHANGE';
var change = exports.change = function change(online) {
return { type: CHANGE, payload: online };
};
var reducer = exports.reducer = function reducer() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (0, _getOnLine2.default)();
var _ref = arguments[1];
var type = _ref.type,
payload = _ref.payload;
if (type === CHANGE) {
return payload;
}
return state;
};
var defaultCreateEventListener = exports.defaultCreateEventListener = function defaultCreateEventListener(_ref2) {
var dispatch = _ref2.dispatch,
getState = _ref2.getState;
return function () {
var onLine = (0, _getOnLine2.default)();
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;
};
};
};
exports.default = createEnhancer;