@atlaskit/util-service-support
Version:
A library of support classes for integrating React components with REST HTTP services
65 lines (64 loc) • 1.97 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.AbstractResource = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var AbstractResource = exports.AbstractResource = /*#__PURE__*/function () {
function AbstractResource() {
(0, _classCallCheck2.default)(this, AbstractResource);
(0, _defineProperty2.default)(this, "listeners", new Set());
}
return (0, _createClass2.default)(AbstractResource, [{
key: "subscribe",
value: function subscribe(onChange) {
this.listeners.add(onChange);
if (this.lastResult) {
// Notify subscribe of last result (i.e. initial state)
onChange.result(this.lastResult);
}
}
}, {
key: "unsubscribe",
value: function unsubscribe(onChange) {
this.listeners.delete(onChange);
}
}, {
key: "notifyResult",
value: function notifyResult(result) {
this.listeners.forEach(function (onChange) {
onChange.result(result);
});
}
}, {
key: "notifyError",
value: function notifyError(error) {
this.listeners.forEach(function (onChange) {
if (onChange.error) {
onChange.error(error);
}
});
}
}, {
key: "notifyInfo",
value: function notifyInfo(info) {
this.listeners.forEach(function (onChange) {
if (onChange.info) {
onChange.info(info);
}
});
}
}, {
key: "notifyNotReady",
value: function notifyNotReady() {
this.listeners.forEach(function (onChange) {
if (onChange.notReady) {
onChange.notReady();
}
});
}
}]);
}();