ParseLiveQuery.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  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 _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
  8. var _EventEmitter = _interopRequireDefault(require("./EventEmitter"));
  9. var _LiveQueryClient = _interopRequireDefault(require("./LiveQueryClient"));
  10. var _CoreManager = _interopRequireDefault(require("./CoreManager"));
  11. function getLiveQueryClient() {
  12. return _CoreManager.default.getLiveQueryController().getDefaultLiveQueryClient();
  13. }
  14. var LiveQuery = new _EventEmitter.default();
  15. LiveQuery.open = function () {
  16. var liveQueryClient;
  17. return _regenerator.default.async(function (_context) {
  18. while (1) {
  19. switch (_context.prev = _context.next) {
  20. case 0:
  21. _context.next = 2;
  22. return _regenerator.default.awrap(getLiveQueryClient());
  23. case 2:
  24. liveQueryClient = _context.sent;
  25. liveQueryClient.open();
  26. case 4:
  27. case "end":
  28. return _context.stop();
  29. }
  30. }
  31. }, null, null, null, Promise);
  32. };
  33. LiveQuery.close = function () {
  34. var liveQueryClient;
  35. return _regenerator.default.async(function (_context2) {
  36. while (1) {
  37. switch (_context2.prev = _context2.next) {
  38. case 0:
  39. _context2.next = 2;
  40. return _regenerator.default.awrap(getLiveQueryClient());
  41. case 2:
  42. liveQueryClient = _context2.sent;
  43. liveQueryClient.close();
  44. case 4:
  45. case "end":
  46. return _context2.stop();
  47. }
  48. }
  49. }, null, null, null, Promise);
  50. };
  51. LiveQuery.on('error', function () {});
  52. var _default = LiveQuery;
  53. exports.default = _default;
  54. var defaultLiveQueryClient;
  55. var DefaultLiveQueryController = {
  56. setDefaultLiveQueryClient: function (liveQueryClient) {
  57. defaultLiveQueryClient = liveQueryClient;
  58. },
  59. getDefaultLiveQueryClient: function () {
  60. return function () {
  61. var _await$Promise$all, _await$Promise$all2, currentUser, installationId, sessionToken, liveQueryServerURL, serverURL, protocol, host, applicationId, javascriptKey, masterKey;
  62. return _regenerator.default.async(function (_context3) {
  63. while (1) {
  64. switch (_context3.prev = _context3.next) {
  65. case 0:
  66. if (!defaultLiveQueryClient) {
  67. _context3.next = 2;
  68. break;
  69. }
  70. return _context3.abrupt("return", defaultLiveQueryClient);
  71. case 2:
  72. _context3.next = 4;
  73. return _regenerator.default.awrap(Promise.all([_CoreManager.default.getUserController().currentUserAsync(), _CoreManager.default.getInstallationController().currentInstallationId()]));
  74. case 4:
  75. _await$Promise$all = _context3.sent;
  76. _await$Promise$all2 = (0, _slicedToArray2.default)(_await$Promise$all, 2);
  77. currentUser = _await$Promise$all2[0];
  78. installationId = _await$Promise$all2[1];
  79. sessionToken = currentUser ? currentUser.getSessionToken() : undefined;
  80. liveQueryServerURL = _CoreManager.default.get('LIVEQUERY_SERVER_URL');
  81. if (!(liveQueryServerURL && liveQueryServerURL.indexOf('ws') !== 0)) {
  82. _context3.next = 12;
  83. break;
  84. }
  85. throw new Error('You need to set a proper Parse LiveQuery server url before using LiveQueryClient');
  86. case 12:
  87. if (!liveQueryServerURL) {
  88. serverURL = _CoreManager.default.get('SERVER_URL');
  89. protocol = serverURL.indexOf('https') === 0 ? 'wss://' : 'ws://';
  90. host = serverURL.replace(/^https?:\/\//, '');
  91. liveQueryServerURL = protocol + host;
  92. _CoreManager.default.set('LIVEQUERY_SERVER_URL', liveQueryServerURL);
  93. }
  94. applicationId = _CoreManager.default.get('APPLICATION_ID');
  95. javascriptKey = _CoreManager.default.get('JAVASCRIPT_KEY');
  96. masterKey = _CoreManager.default.get('MASTER_KEY');
  97. defaultLiveQueryClient = new _LiveQueryClient.default({
  98. applicationId: applicationId,
  99. serverURL: liveQueryServerURL,
  100. javascriptKey: javascriptKey,
  101. masterKey: masterKey,
  102. sessionToken: sessionToken,
  103. installationId: installationId
  104. });
  105. defaultLiveQueryClient.on('error', function (error) {
  106. LiveQuery.emit('error', error);
  107. });
  108. defaultLiveQueryClient.on('open', function () {
  109. LiveQuery.emit('open');
  110. });
  111. defaultLiveQueryClient.on('close', function () {
  112. LiveQuery.emit('close');
  113. });
  114. return _context3.abrupt("return", defaultLiveQueryClient);
  115. case 21:
  116. case "end":
  117. return _context3.stop();
  118. }
  119. }
  120. }, null, null, null, Promise);
  121. }();
  122. },
  123. _clearCachedDefaultClient: function () {
  124. defaultLiveQueryClient = null;
  125. }
  126. };
  127. _CoreManager.default.setLiveQueryController(DefaultLiveQueryController);