ParseLiveQuery.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
  7. var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
  8. var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
  9. var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
  10. var _LiveQueryClient = _interopRequireDefault(require("./LiveQueryClient"));
  11. var _CoreManager = _interopRequireDefault(require("./CoreManager"));
  12. function getLiveQueryClient() {
  13. return _CoreManager.default.getLiveQueryController().getDefaultLiveQueryClient();
  14. }
  15. var LiveQuery = function () {
  16. function LiveQuery() {
  17. var _this = this;
  18. (0, _classCallCheck2.default)(this, LiveQuery);
  19. var EventEmitter = _CoreManager.default.getEventEmitter();
  20. this.emitter = new EventEmitter();
  21. this.on = function (eventName, listener) {
  22. return _this.emitter.on(eventName, listener);
  23. };
  24. this.emit = function (eventName) {
  25. var _this$emitter;
  26. for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
  27. args[_key - 1] = arguments[_key];
  28. }
  29. return (_this$emitter = _this.emitter).emit.apply(_this$emitter, [eventName].concat(args));
  30. };
  31. this.on('error', function () {});
  32. }
  33. return (0, _createClass2.default)(LiveQuery, [{
  34. key: "open",
  35. value: function () {
  36. var _open = (0, _asyncToGenerator2.default)(function* () {
  37. var liveQueryClient = yield getLiveQueryClient();
  38. liveQueryClient.open();
  39. });
  40. function open() {
  41. return _open.apply(this, arguments);
  42. }
  43. return open;
  44. }()
  45. }, {
  46. key: "close",
  47. value: function () {
  48. var _close = (0, _asyncToGenerator2.default)(function* () {
  49. var liveQueryClient = yield getLiveQueryClient();
  50. liveQueryClient.close();
  51. });
  52. function close() {
  53. return _close.apply(this, arguments);
  54. }
  55. return close;
  56. }()
  57. }]);
  58. }();
  59. var _default = exports.default = LiveQuery;
  60. var defaultLiveQueryClient;
  61. var DefaultLiveQueryController = {
  62. setDefaultLiveQueryClient: function (liveQueryClient) {
  63. defaultLiveQueryClient = liveQueryClient;
  64. },
  65. getDefaultLiveQueryClient: function () {
  66. var _getDefaultLiveQueryClient = (0, _asyncToGenerator2.default)(function* () {
  67. if (defaultLiveQueryClient) {
  68. return defaultLiveQueryClient;
  69. }
  70. var _yield$Promise$all = yield Promise.all([_CoreManager.default.getUserController().currentUserAsync(), _CoreManager.default.getInstallationController().currentInstallationId()]),
  71. _yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 2),
  72. currentUser = _yield$Promise$all2[0],
  73. installationId = _yield$Promise$all2[1];
  74. var sessionToken = currentUser ? currentUser.getSessionToken() : undefined;
  75. var liveQueryServerURL = _CoreManager.default.get('LIVEQUERY_SERVER_URL');
  76. if (liveQueryServerURL && liveQueryServerURL.indexOf('ws') !== 0) {
  77. throw new Error('You need to set a proper Parse LiveQuery server url before using LiveQueryClient');
  78. }
  79. if (!liveQueryServerURL) {
  80. var serverURL = _CoreManager.default.get('SERVER_URL');
  81. var protocol = serverURL.indexOf('https') === 0 ? 'wss://' : 'ws://';
  82. var host = serverURL.replace(/^https?:\/\//, '');
  83. liveQueryServerURL = protocol + host;
  84. _CoreManager.default.set('LIVEQUERY_SERVER_URL', liveQueryServerURL);
  85. }
  86. var applicationId = _CoreManager.default.get('APPLICATION_ID');
  87. var javascriptKey = _CoreManager.default.get('JAVASCRIPT_KEY');
  88. var masterKey = _CoreManager.default.get('MASTER_KEY');
  89. defaultLiveQueryClient = new _LiveQueryClient.default({
  90. applicationId: applicationId,
  91. serverURL: liveQueryServerURL,
  92. javascriptKey: javascriptKey,
  93. masterKey: masterKey,
  94. sessionToken: sessionToken,
  95. installationId: installationId
  96. });
  97. var LiveQuery = _CoreManager.default.getLiveQuery();
  98. defaultLiveQueryClient.on('error', function (error) {
  99. LiveQuery.emit('error', error);
  100. });
  101. defaultLiveQueryClient.on('open', function () {
  102. LiveQuery.emit('open');
  103. });
  104. defaultLiveQueryClient.on('close', function () {
  105. LiveQuery.emit('close');
  106. });
  107. return defaultLiveQueryClient;
  108. });
  109. function getDefaultLiveQueryClient() {
  110. return _getDefaultLiveQueryClient.apply(this, arguments);
  111. }
  112. return getDefaultLiveQueryClient;
  113. }(),
  114. _clearCachedDefaultClient: function () {
  115. defaultLiveQueryClient = null;
  116. }
  117. };
  118. _CoreManager.default.setLiveQueryController(DefaultLiveQueryController);