UNPKG

backendless-rt-client

Version:

Backendless RT Client for connect to Backendless RT Server

236 lines (235 loc) 9.8 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = 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 _constants = require("./constants"); var _utils = _interopRequireDefault(require("./utils")); var subscription = function subscription(type) { return function (options, callbacks) { return this.subscribe(type, options, callbacks); }; }; var RTSubscriptions = exports["default"] = /*#__PURE__*/function () { function RTSubscriptions(_ref) { var onMessage = _ref.onMessage, emitMessage = _ref.emitMessage; (0, _classCallCheck2["default"])(this, RTSubscriptions); /******************************************************************************* **/ /******************************************************************************* **/ /** COMMON SUBSCRIPTIONS ******************************************************** **/ /***************************************** **/ /***** DATA SUBSCRIPTIONS **************** **/ /** */ (0, _defineProperty2["default"])(this, "onObjectsChanges", subscription(_constants.RTSubscriptionTypes.OBJECTS_CHANGES).bind(this)); /** */ (0, _defineProperty2["default"])(this, "onRelationsChanges", subscription(_constants.RTSubscriptionTypes.RELATIONS_CHANGES).bind(this)); /***** DATA SUBSCRIPTIONS **************** **/ /***************************************** **/ /***************************************** **/ /***** PUB_SUB SUBSCRIPTIONS ************* **/ /** */ (0, _defineProperty2["default"])(this, "connectToPubSub", subscription(_constants.RTSubscriptionTypes.PUB_SUB_CONNECT).bind(this)); /** */ (0, _defineProperty2["default"])(this, "onPubSubMessage", subscription(_constants.RTSubscriptionTypes.PUB_SUB_MESSAGES).bind(this)); /** */ (0, _defineProperty2["default"])(this, "onPubSubCommand", subscription(_constants.RTSubscriptionTypes.PUB_SUB_COMMANDS).bind(this)); /** */ (0, _defineProperty2["default"])(this, "onPubSubUserStatus", subscription(_constants.RTSubscriptionTypes.PUB_SUB_USERS).bind(this)); /***** PUB_SUB SUBSCRIPTIONS ************* **/ /***************************************** **/ /***************************************** **/ /***** RSO SUBSCRIPTIONS ***************** **/ /** */ (0, _defineProperty2["default"])(this, "connectToRSO", subscription(_constants.RTSubscriptionTypes.RSO_CONNECT).bind(this)); /** */ (0, _defineProperty2["default"])(this, "onRSOChanges", subscription(_constants.RTSubscriptionTypes.RSO_CHANGES).bind(this)); /** */ (0, _defineProperty2["default"])(this, "onRSOClear", subscription(_constants.RTSubscriptionTypes.RSO_CLEARED).bind(this)); /** */ (0, _defineProperty2["default"])(this, "onRSOCommand", subscription(_constants.RTSubscriptionTypes.RSO_COMMANDS).bind(this)); /** */ (0, _defineProperty2["default"])(this, "onRSOInvoke", subscription(_constants.RTSubscriptionTypes.RSO_INVOKE).bind(this)); /** */ (0, _defineProperty2["default"])(this, "onRSOUserStatus", subscription(_constants.RTSubscriptionTypes.RSO_USERS).bind(this)); /***** RSO SUBSCRIPTIONS ***************** **/ /***************************************** **/ /** COMMON SUBSCRIPTIONS ******************************************************** **/ /******************************************************************************* **/ /******************************************************************************* **/ /******************************************************************************* **/ /******************************************************************************* **/ /** CONSOLE's SUBSCRIPTIONS **************************************************** **/ /***************************************** **/ /***** LOGGING SUBSCRIPTIONS ****** **/ /** */ (0, _defineProperty2["default"])(this, "onLoggingMessages", subscription(_constants.RTSubscriptionTypes.LOGGING_MESSAGES).bind(this)); /***** LOGGING SUBSCRIPTIONS ****** **/ /***************************************** **/ /***************************************** **/ /***** CONSOLE SUBSCRIPTIONS ****** **/ /** */ (0, _defineProperty2["default"])(this, "onConsoleMessages", subscription(_constants.RTSubscriptionTypes.CONSOLE_MESSAGES).bind(this)); /** */ (0, _defineProperty2["default"])(this, "onDeveloperMessage", subscription(_constants.RTSubscriptionTypes.DEVELOPER_MESSAGES).bind(this)); /** */ (0, _defineProperty2["default"])(this, "onAutomationLoggingMessages", subscription(_constants.RTSubscriptionTypes.AUTOMATION_MESSAGES).bind(this)); this.onMessage = onMessage; this.emitMessage = emitMessage; this.subscriptions = {}; } return (0, _createClass2["default"])(RTSubscriptions, [{ key: "initialize", value: function initialize() { var _this = this; this.onMessage(_constants.RTSocketEvents.SUB_READY, function (data) { return _this.onSubscriptionReady(data); }); this.onMessage(_constants.RTSocketEvents.SUB_RES, function (data) { return _this.onSubscriptionResponse(data); }); } }, { key: "stop", value: function stop() { var _this2 = this; Object.keys(this.subscriptions).forEach(function (subscriptionId) { _this2.subscriptions[subscriptionId].ready = false; }); } }, { key: "reset", value: function reset() { var _this3 = this; Object.keys(this.subscriptions).forEach(function (subscriptionId) { return _this3.stopSubscription(subscriptionId); }); } }, { key: "restore", value: function restore() { var _this4 = this; Object.keys(this.subscriptions).forEach(function (subscriptionId) { _this4.startSubscription(subscriptionId); }); } }, { key: "hasActivity", value: function hasActivity() { return !!Object.keys(this.subscriptions).length; } }, { key: "subscribe", value: function subscribe(name, options, _ref2) { var _this5 = this; var parser = _ref2.parser, onData = _ref2.onData, onError = _ref2.onError, onStop = _ref2.onStop, onReady = _ref2.onReady; var subscriptionId = _utils["default"].generateUID(); this.subscriptions[subscriptionId] = { data: { id: subscriptionId, name: name, options: options }, ready: false, parser: parser, onData: onData, onError: onError, onStop: onStop, onReady: onReady }; this.startSubscription(subscriptionId); return { isReady: function isReady() { return !!_this5.subscriptions[subscriptionId] && _this5.subscriptions[subscriptionId].ready; }, stop: function stop() { if (_this5.subscriptions[subscriptionId]) { _this5.offSubscription(subscriptionId); } } }; } }, { key: "startSubscription", value: function startSubscription(subscriptionId) { var subscription = this.subscriptions[subscriptionId]; this.emitMessage(_constants.RTSocketEvents.SUB_ON, subscription.data); } }, { key: "stopSubscription", value: function stopSubscription(subscriptionId) { var subscription = this.subscriptions[subscriptionId]; if (subscription) { if (subscription.onStop) { subscription.onStop(); } delete this.subscriptions[subscriptionId]; } } }, { key: "offSubscription", value: function offSubscription(subscriptionId) { var subscription = this.subscriptions[subscriptionId]; if (subscription) { this.emitMessage(_constants.RTSocketEvents.SUB_OFF, { id: subscriptionId }); this.stopSubscription(subscriptionId); } } }, { key: "onSubscriptionReady", value: function onSubscriptionReady(_ref3) { var id = _ref3.id; var subscription = this.subscriptions[id]; if (subscription && !subscription.ready) { subscription.ready = true; if (subscription.onReady) { subscription.onReady(); } } } }, { key: "onSubscriptionResponse", value: function onSubscriptionResponse(_ref4) { var id = _ref4.id, data = _ref4.data, error = _ref4.error; var subscription = this.subscriptions[id]; if (subscription) { if (error) { if (subscription.onError) { subscription.onError(error); } this.stopSubscription(id); } else { if (!subscription.ready) { subscription.ready = true; if (subscription.onReady) { subscription.onReady(); } } if (subscription.onData) { if (typeof subscription.parser === 'function') { data = subscription.parser(data); } subscription.onData(data); } } } } /***** CONSOLE SUBSCRIPTIONS ****** **/ /***************************************** **/ /** CONSOLE's SUBSCRIPTIONS **************************************************** **/ /******************************************************************************* **/ /******************************************************************************* **/ }]); }();