UNPKG

@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
"use strict"; 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(); } }); } }]); }();