'use strict';Object.defineProperty(exports, "__esModule", { value: true });exports.default = undefined;var _createClass = function () {function defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}return function (Constructor, protoProps, staticProps) {if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;};}(); // Copyright 2015-2017 Parity Technologies (UK) Ltd.
// This file is part of Parity.

// Parity is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// Parity is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with Parity.  If not, see <http://www.gnu.org/licenses/>.

var _statusReducer = require('./statusReducer');function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}var

ChainMiddleware = function () {function ChainMiddleware() {_classCallCheck(this, ChainMiddleware);}_createClass(ChainMiddleware, [{ key: 'toMiddleware', value: function toMiddleware()
    {
      return function (store) {return function (next) {return function (action) {
            if (action.type === 'statusCollection') {var
              collection = action.collection;

              if (collection) {var _store$getState =
                store.getState(),nodeStatus = _store$getState.nodeStatus;var
                netChain = nodeStatus.netChain,nodeKind = nodeStatus.nodeKind;
                var newChain = collection.netChain;
                var newNodeKind = collection.nodeKind;
                var reloadChain = false;
                var reloadType = false;

                // force reload when chain has changed and is not initial value
                if (newChain) {
                  var hasChainChanged = newChain !== netChain;
                  var isInitialChain = netChain === _statusReducer.DEFAULT_NETCHAIN;

                  reloadChain = !isInitialChain && hasChainChanged;
                }

                // force reload when nodeKind (availability or capability) has changed
                if (newNodeKind && nodeKind) {
                  var hasAvailabilityChanged = nodeKind.availability !== newNodeKind.availability;
                  var hasCapabilityChanged = nodeKind.capability !== newNodeKind.capability;

                  reloadType = hasAvailabilityChanged || hasCapabilityChanged;
                }

                if (reloadChain || reloadType) {
                  setTimeout(function () {
                    window.location.reload();
                  }, 0);
                }
              }
            }

            next(action);
          };};};
    } }]);return ChainMiddleware;}();exports.default = ChainMiddleware;