@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
82 lines (81 loc) • 3.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MySegmentsCacheInLocal = void 0;
var tslib_1 = require("tslib");
var lang_1 = require("../../utils/lang");
var AbstractMySegmentsCacheSync_1 = require("../AbstractMySegmentsCacheSync");
var constants_1 = require("./constants");
var MySegmentsCacheInLocal = /** @class */ (function (_super) {
(0, tslib_1.__extends)(MySegmentsCacheInLocal, _super);
function MySegmentsCacheInLocal(log, keys) {
var _this = _super.call(this) || this;
_this.log = log;
_this.keys = keys;
return _this;
// There is not need to flush segments cache like splits cache, since resetSegments receives the up-to-date list of active segments
}
MySegmentsCacheInLocal.prototype.addSegment = function (name) {
var segmentKey = this.keys.buildSegmentNameKey(name);
try {
if (localStorage.getItem(segmentKey) === constants_1.DEFINED)
return false;
localStorage.setItem(segmentKey, constants_1.DEFINED);
return true;
}
catch (e) {
this.log.error(constants_1.LOG_PREFIX + e);
return false;
}
};
MySegmentsCacheInLocal.prototype.removeSegment = function (name) {
var segmentKey = this.keys.buildSegmentNameKey(name);
try {
if (localStorage.getItem(segmentKey) !== constants_1.DEFINED)
return false;
localStorage.removeItem(segmentKey);
return true;
}
catch (e) {
this.log.error(constants_1.LOG_PREFIX + e);
return false;
}
};
MySegmentsCacheInLocal.prototype.isInSegment = function (name) {
return localStorage.getItem(this.keys.buildSegmentNameKey(name)) === constants_1.DEFINED;
};
MySegmentsCacheInLocal.prototype.getRegisteredSegments = function () {
var _this = this;
// Scan current values from localStorage
return Object.keys(localStorage).reduce(function (accum, key) {
var segmentName = _this.keys.extractSegmentName(key);
if (segmentName)
accum.push(segmentName);
return accum;
}, []);
};
MySegmentsCacheInLocal.prototype.getKeysCount = function () {
return 1;
};
MySegmentsCacheInLocal.prototype.setChangeNumber = function (changeNumber) {
try {
if (changeNumber)
localStorage.setItem(this.keys.buildTillKey(), changeNumber + '');
else
localStorage.removeItem(this.keys.buildTillKey());
}
catch (e) {
this.log.error(e);
}
};
MySegmentsCacheInLocal.prototype.getChangeNumber = function () {
var n = -1;
var value = localStorage.getItem(this.keys.buildTillKey());
if (value !== null) {
value = parseInt(value, 10);
return (0, lang_1.isNaNNumber)(value) ? n : value;
}
return n;
};
return MySegmentsCacheInLocal;
}(AbstractMySegmentsCacheSync_1.AbstractMySegmentsCacheSync));
exports.MySegmentsCacheInLocal = MySegmentsCacheInLocal;