"use strict";

exports.__esModule = true;
exports.default = void 0;
var _immutable = _interopRequireDefault(require("immutable"));
var _normalizr = require("normalizr");
var _scopes = _interopRequireDefault(require("../schemas/scopes"));
var _scopes2 = require("../actions/scopes");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
(function () {
  var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
  enterModule && enterModule(module);
})();
(function () {
  var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
  enterModule && enterModule(module);
})();
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
  return a;
};
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
  return a;
};
var initialState = _immutable.default.fromJS({});
var scopeReducer = function scopeReducer(state, action) {
  if (state === void 0) {
    state = initialState;
  }
  switch (action.type) {
    case _scopes2.GET_SCOPES_SUCCESS:
      {
        var loadedScopes = state.toJS();
        var normalizedScopes = (0, _normalizr.normalize)(action.payload, _scopes.default);
        if (action.meta && action.meta.reset) {
          return _immutable.default.fromJS(normalizedScopes.entities.scopes);
        }
        if (Object.keys(loadedScopes).length > 0) {
          var addedScope = {};
          Object.values(normalizedScopes.entities.scopes).forEach(function (scope) {
            if (!loadedScopes[scope.id]) {
              loadedScopes[scope.id] = scope;
              addedScope[scope.id] = scope;
            } else if (scope.isAuthorizedScope) {
              loadedScopes[scope.id] = scope;
            }
          });
          Object.values(addedScope).forEach(function (scope) {
            var parentScope = loadedScopes[scope.parentScopeId];
            if (parentScope) {
              if (!parentScope.children.includes(scope.id)) {
                parentScope.children.push(scope.id);
              }
            } else {
              // Should not happen, but for safety
              delete loadedScopes[scope.id];
            }
          });
          return state.merge(_immutable.default.fromJS(loadedScopes));
        }
        return state.merge(_immutable.default.fromJS(normalizedScopes.entities.scopes));
      }
    default:
      return state;
  }
};
var _default = scopeReducer;
var _default2 = _default;
var _default3 = exports.default = _default2;
;
(function () {
  var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
  if (!reactHotLoader) {
    return;
  }
  reactHotLoader.register(initialState, "initialState", "/home/vsts/work/1/s/src/reducers/scopes.js");
  reactHotLoader.register(scopeReducer, "scopeReducer", "/home/vsts/work/1/s/src/reducers/scopes.js");
  reactHotLoader.register(_default, "default", "/home/vsts/work/1/s/src/reducers/scopes.js");
})();
;
(function () {
  var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
  leaveModule && leaveModule(module);
})();
;
(function () {
  var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
  if (!reactHotLoader) {
    return;
  }
  reactHotLoader.register(initialState, "initialState", "/home/vsts/work/1/s/src/reducers/scopes.js");
  reactHotLoader.register(scopeReducer, "scopeReducer", "/home/vsts/work/1/s/src/reducers/scopes.js");
  reactHotLoader.register(_default2, "default", "/home/vsts/work/1/s/src/reducers/scopes.js");
})();
;
(function () {
  var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
  leaveModule && leaveModule(module);
})();