@atlaskit/profilecard
Version:
A React component to display a card with user information.
67 lines (65 loc) • 3.01 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _lru_map = require("lru_map");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var CachingClient = exports.default = /*#__PURE__*/function () {
function CachingClient(config) {
(0, _classCallCheck2.default)(this, CachingClient);
var defaults = {
cacheSize: 10,
cacheMaxAge: 0
};
this.config = _objectSpread(_objectSpread({}, defaults), config);
// never set cacheSize or cacheMaxAge to negative numbers
this.config.cacheSize = Math.max(this.config.cacheSize || 0, 0);
this.config.cacheMaxAge = Math.max(this.config.cacheMaxAge || 0, 0);
// DIR-474: cap cache at 30 days.
if (this.config.cacheMaxAge) {
this.config.cacheMaxAge = Math.min(this.config.cacheMaxAge, 30 * 24 * 60 * 60 * 1000);
}
// Only set cache if maxCacheAge and cacheSize are set
this.cache = !this.config.cacheMaxAge || !this.config.cacheSize ? null : new _lru_map.LRUMap(this.config.cacheSize);
}
return (0, _createClass2.default)(CachingClient, [{
key: "setCachedProfile",
value: function setCachedProfile(cacheIdentifier, profile) {
this.cache && this.cache.set(cacheIdentifier, {
expire: Date.now() + this.config.cacheMaxAge,
profile: profile
});
}
}, {
key: "getCachedProfile",
value: function getCachedProfile(cacheIdentifier) {
if (!this.cache) {
return null;
}
var cached = this.cache.get(cacheIdentifier);
if (!cached) {
return null;
}
if (cached.expire < Date.now()) {
this.cache.delete(cacheIdentifier);
return null;
}
// Extend expiry "date"
this.setCachedProfile(cacheIdentifier, cached.profile);
return cached.profile;
}
}, {
key: "flushCache",
value: function flushCache() {
if (this.cache) {
this.cache.clear();
}
}
}]);
}();