forest-express
Version: 
Official package for all Forest Express Lianas
108 lines (107 loc) • 4.47 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _require = require('@forestadmin/context'),
  inject = _require.inject;
var ScopeManager = /*#__PURE__*/function () {
  function ScopeManager() {
    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : inject(),
      forestAdminClient = _ref.forestAdminClient;
    (0, _classCallCheck2["default"])(this, ScopeManager);
    /** @private @readonly @type {import('@forestadmin/forestadmin-client').ForestAdminClient} */
    this.forestAdminClient = forestAdminClient;
  }
  (0, _createClass2["default"])(ScopeManager, [{
    key: "appendScopeForUser",
    value: function () {
      var _appendScopeForUser = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(existingFilter, user, collectionName) {
        var scopeFilter, filters;
        return _regenerator["default"].wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              _context.next = 2;
              return this.getScopeForUser(user, collectionName, true);
            case 2:
              scopeFilter = _context.sent;
              filters = [existingFilter, scopeFilter].filter(Boolean);
              _context.t0 = filters.length;
              _context.next = _context.t0 === 0 ? 7 : _context.t0 === 1 ? 8 : 9;
              break;
            case 7:
              return _context.abrupt("return", undefined);
            case 8:
              return _context.abrupt("return", filters[0]);
            case 9:
              return _context.abrupt("return", "{\"aggregator\":\"and\",\"conditions\":[".concat(existingFilter, ",").concat(scopeFilter, "]}"));
            case 10:
            case "end":
              return _context.stop();
          }
        }, _callee, this);
      }));
      function appendScopeForUser(_x, _x2, _x3) {
        return _appendScopeForUser.apply(this, arguments);
      }
      return appendScopeForUser;
    }()
  }, {
    key: "getScopeForUser",
    value: function () {
      var _getScopeForUser = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(user, collectionName) {
        var asString,
          scopeFilters,
          _args2 = arguments;
        return _regenerator["default"].wrap(function _callee2$(_context2) {
          while (1) switch (_context2.prev = _context2.next) {
            case 0:
              asString = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : false;
              if (user) {
                _context2.next = 3;
                break;
              }
              throw new Error('Missing required user');
            case 3:
              if (user.renderingId) {
                _context2.next = 5;
                break;
              }
              throw new Error('Missing required renderingId');
            case 5:
              if (collectionName) {
                _context2.next = 7;
                break;
              }
              throw new Error('Missing required collectionName');
            case 7:
              _context2.next = 9;
              return this.forestAdminClient.getScope({
                renderingId: user.renderingId,
                userId: user.id,
                collectionName: collectionName
              });
            case 9:
              scopeFilters = _context2.sent;
              return _context2.abrupt("return", asString && !!scopeFilters ? JSON.stringify(scopeFilters) : scopeFilters);
            case 11:
            case "end":
              return _context2.stop();
          }
        }, _callee2, this);
      }));
      function getScopeForUser(_x4, _x5) {
        return _getScopeForUser.apply(this, arguments);
      }
      return getScopeForUser;
    }()
  }, {
    key: "invalidateScopeCache",
    value: function invalidateScopeCache(renderingId) {
      this.forestAdminClient.markScopesAsUpdated(renderingId);
    }
  }]);
  return ScopeManager;
}();
module.exports = ScopeManager;