polfan-server-js-client 0.1.56 → 0.1.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/.gitmodules +3 -0
  2. package/build/index.js +295 -138
  3. package/build/index.js.map +1 -1
  4. package/build/types/AbstractChatClient.d.ts +2 -2
  5. package/build/types/index.d.ts +3 -1
  6. package/build/types/state-tracker/ChatStateTracker.d.ts +5 -5
  7. package/build/types/state-tracker/MessagesManager.d.ts +3 -3
  8. package/build/types/state-tracker/PermissionsManager.d.ts +5 -4
  9. package/build/types/state-tracker/RoomsManager.d.ts +1 -1
  10. package/build/types/state-tracker/SpacesManager.d.ts +2 -1
  11. package/build/types/state-tracker/functions.d.ts +1 -1
  12. package/build/types/types/src/index.d.ts +81 -0
  13. package/build/types/types/src/schemes/AckReport.d.ts +7 -0
  14. package/build/types/types/src/schemes/ChatLocation.d.ts +5 -0
  15. package/build/types/types/src/schemes/Envelope.d.ts +5 -0
  16. package/build/types/types/src/schemes/Message.d.ts +7 -0
  17. package/build/types/types/src/schemes/PermissionOverwritesValue.d.ts +4 -0
  18. package/build/types/types/src/schemes/Role.d.ts +6 -0
  19. package/build/types/types/src/schemes/Room.d.ts +10 -0
  20. package/build/types/types/src/schemes/RoomMember.d.ts +7 -0
  21. package/build/types/types/src/schemes/RoomSummary.d.ts +5 -0
  22. package/build/types/types/src/schemes/Space.d.ts +6 -0
  23. package/build/types/types/src/schemes/SpaceMember.d.ts +5 -0
  24. package/build/types/types/src/schemes/Topic.d.ts +5 -0
  25. package/build/types/types/src/schemes/User.d.ts +8 -0
  26. package/build/types/types/src/schemes/UserState.d.ts +6 -0
  27. package/build/types/types/src/schemes/commands/Ack.d.ts +5 -0
  28. package/build/types/types/src/schemes/commands/AssignRole.d.ts +6 -0
  29. package/build/types/types/src/schemes/commands/CreateMessage.d.ts +5 -0
  30. package/build/types/types/src/schemes/commands/CreateOwner.d.ts +5 -0
  31. package/build/types/types/src/schemes/commands/CreateRole.d.ts +5 -0
  32. package/build/types/types/src/schemes/commands/CreateRoom.d.ts +5 -0
  33. package/build/types/types/src/schemes/commands/CreateSpace.d.ts +3 -0
  34. package/build/types/types/src/schemes/commands/CreateTopic.d.ts +12 -0
  35. package/build/types/types/src/schemes/commands/DeassignRole.d.ts +6 -0
  36. package/build/types/types/src/schemes/commands/DeleteOwner.d.ts +5 -0
  37. package/build/types/types/src/schemes/commands/DeleteRole.d.ts +4 -0
  38. package/build/types/types/src/schemes/commands/DeleteRoom.d.ts +3 -0
  39. package/build/types/types/src/schemes/commands/DeleteSpace.d.ts +3 -0
  40. package/build/types/types/src/schemes/commands/DeleteTopic.d.ts +4 -0
  41. package/build/types/types/src/schemes/commands/GetAckReports.d.ts +4 -0
  42. package/build/types/types/src/schemes/commands/GetComputedPermissions.d.ts +4 -0
  43. package/build/types/types/src/schemes/commands/GetOwners.d.ts +4 -0
  44. package/build/types/types/src/schemes/commands/GetPermissionOverwriteTargets.d.ts +4 -0
  45. package/build/types/types/src/schemes/commands/GetPermissionOverwrites.d.ts +6 -0
  46. package/build/types/types/src/schemes/commands/GetRoomMembers.d.ts +3 -0
  47. package/build/types/types/src/schemes/commands/GetSession.d.ts +2 -0
  48. package/build/types/types/src/schemes/commands/GetSpaceMembers.d.ts +3 -0
  49. package/build/types/types/src/schemes/commands/GetSpaceRooms.d.ts +3 -0
  50. package/build/types/types/src/schemes/commands/JoinRoom.d.ts +3 -0
  51. package/build/types/types/src/schemes/commands/JoinSpace.d.ts +3 -0
  52. package/build/types/types/src/schemes/commands/LeaveRoom.d.ts +3 -0
  53. package/build/types/types/src/schemes/commands/LeaveSpace.d.ts +3 -0
  54. package/build/types/types/src/schemes/commands/SetPermissionOverwrites.d.ts +8 -0
  55. package/build/types/types/src/schemes/commands/UpdateRole.d.ts +7 -0
  56. package/build/types/types/src/schemes/commands/UpdateRoom.d.ts +5 -0
  57. package/build/types/types/src/schemes/commands/UpdateSpace.d.ts +4 -0
  58. package/build/types/types/src/schemes/events/AckReports.d.ts +4 -0
  59. package/build/types/types/src/schemes/events/Bye.d.ts +3 -0
  60. package/build/types/types/src/schemes/events/ComputedPermissions.d.ts +5 -0
  61. package/build/types/types/src/schemes/events/Error.d.ts +4 -0
  62. package/build/types/types/src/schemes/events/NewMessage.d.ts +6 -0
  63. package/build/types/types/src/schemes/events/NewRole.d.ts +5 -0
  64. package/build/types/types/src/schemes/events/NewRoom.d.ts +5 -0
  65. package/build/types/types/src/schemes/events/NewTopic.d.ts +5 -0
  66. package/build/types/types/src/schemes/events/Ok.d.ts +2 -0
  67. package/build/types/types/src/schemes/events/Owners.d.ts +8 -0
  68. package/build/types/types/src/schemes/events/PermissionOverwriteTargets.d.ts +10 -0
  69. package/build/types/types/src/schemes/events/PermissionOverwrites.d.ts +8 -0
  70. package/build/types/types/src/schemes/events/PermissionOverwritesUpdated.d.ts +8 -0
  71. package/build/types/types/src/schemes/events/RoleDeleted.d.ts +4 -0
  72. package/build/types/types/src/schemes/events/RoleUpdated.d.ts +5 -0
  73. package/build/types/types/src/schemes/events/RoomDeleted.d.ts +3 -0
  74. package/build/types/types/src/schemes/events/RoomJoined.d.ts +4 -0
  75. package/build/types/types/src/schemes/events/RoomLeft.d.ts +3 -0
  76. package/build/types/types/src/schemes/events/RoomMemberJoined.d.ts +5 -0
  77. package/build/types/types/src/schemes/events/RoomMemberLeft.d.ts +4 -0
  78. package/build/types/types/src/schemes/events/RoomMemberUpdated.d.ts +6 -0
  79. package/build/types/types/src/schemes/events/RoomMembers.d.ts +5 -0
  80. package/build/types/types/src/schemes/events/RoomUpdated.d.ts +4 -0
  81. package/build/types/types/src/schemes/events/Session.d.ts +7 -0
  82. package/build/types/types/src/schemes/events/SpaceDeleted.d.ts +3 -0
  83. package/build/types/types/src/schemes/events/SpaceJoined.d.ts +4 -0
  84. package/build/types/types/src/schemes/events/SpaceLeft.d.ts +3 -0
  85. package/build/types/types/src/schemes/events/SpaceMemberJoined.d.ts +5 -0
  86. package/build/types/types/src/schemes/events/SpaceMemberLeft.d.ts +4 -0
  87. package/build/types/types/src/schemes/events/SpaceMemberUpdated.d.ts +6 -0
  88. package/build/types/types/src/schemes/events/SpaceMembers.d.ts +5 -0
  89. package/build/types/types/src/schemes/events/SpaceRooms.d.ts +5 -0
  90. package/build/types/types/src/schemes/events/SpaceUpdated.d.ts +4 -0
  91. package/build/types/types/src/schemes/events/TopicDeleted.d.ts +4 -0
  92. package/build/types/types/src/schemes/events/UserUpdated.d.ts +4 -0
  93. package/package.json +3 -4
  94. package/src/AbstractChatClient.ts +3 -3
  95. package/src/WebApiChatClient.ts +1 -1
  96. package/src/WebSocketChatClient.ts +1 -1
  97. package/src/index.ts +5 -2
  98. package/src/state-tracker/ChatStateTracker.ts +5 -5
  99. package/src/state-tracker/MessagesManager.ts +11 -11
  100. package/src/state-tracker/PermissionsManager.ts +51 -53
  101. package/src/state-tracker/RoomsManager.ts +11 -6
  102. package/src/state-tracker/SpacesManager.ts +12 -4
  103. package/src/state-tracker/functions.ts +1 -1
  104. package/src/types/README.md +2 -0
  105. package/src/types/package-lock.json +31 -0
  106. package/src/types/package.json +16 -0
  107. package/src/types/src/index.ts +166 -0
  108. package/src/types/src/schemes/AckReport.ts +7 -0
  109. package/src/types/src/schemes/ChatLocation.ts +5 -0
  110. package/src/types/src/schemes/Envelope.ts +5 -0
  111. package/src/types/src/schemes/Message.ts +8 -0
  112. package/src/types/src/schemes/PermissionOverwritesValue.ts +4 -0
  113. package/src/types/src/schemes/Role.ts +6 -0
  114. package/src/types/src/schemes/Room.ts +12 -0
  115. package/src/types/src/schemes/RoomMember.ts +8 -0
  116. package/src/types/src/schemes/RoomSummary.ts +5 -0
  117. package/src/types/src/schemes/Space.ts +7 -0
  118. package/src/types/src/schemes/SpaceMember.ts +6 -0
  119. package/src/types/src/schemes/Topic.ts +5 -0
  120. package/src/types/src/schemes/User.ts +9 -0
  121. package/src/types/src/schemes/UserState.ts +7 -0
  122. package/src/types/src/schemes/commands/Ack.ts +6 -0
  123. package/src/types/src/schemes/commands/AssignRole.ts +7 -0
  124. package/src/types/src/schemes/commands/CreateMessage.ts +6 -0
  125. package/src/types/src/schemes/commands/CreateOwner.ts +6 -0
  126. package/src/types/src/schemes/commands/CreateRole.ts +5 -0
  127. package/src/types/src/schemes/commands/CreateRoom.ts +5 -0
  128. package/src/types/src/schemes/commands/CreateSpace.ts +3 -0
  129. package/src/types/src/schemes/commands/CreateTopic.ts +14 -0
  130. package/src/types/src/schemes/commands/DeassignRole.ts +7 -0
  131. package/src/types/src/schemes/commands/DeleteOwner.ts +6 -0
  132. package/src/types/src/schemes/commands/DeleteRole.ts +4 -0
  133. package/src/types/src/schemes/commands/DeleteRoom.ts +3 -0
  134. package/src/types/src/schemes/commands/DeleteSpace.ts +3 -0
  135. package/src/types/src/schemes/commands/DeleteTopic.ts +5 -0
  136. package/src/types/src/schemes/commands/GetAckReports.ts +5 -0
  137. package/src/types/src/schemes/commands/GetComputedPermissions.ts +5 -0
  138. package/src/types/src/schemes/commands/GetOwners.ts +5 -0
  139. package/src/types/src/schemes/commands/GetPermissionOverwriteTargets.ts +5 -0
  140. package/src/types/src/schemes/commands/GetPermissionOverwrites.ts +7 -0
  141. package/src/types/src/schemes/commands/GetRoomMembers.ts +3 -0
  142. package/src/types/src/schemes/commands/GetSession.ts +2 -0
  143. package/src/types/src/schemes/commands/GetSpaceMembers.ts +3 -0
  144. package/src/types/src/schemes/commands/GetSpaceRooms.ts +3 -0
  145. package/src/types/src/schemes/commands/JoinRoom.ts +3 -0
  146. package/src/types/src/schemes/commands/JoinSpace.ts +3 -0
  147. package/src/types/src/schemes/commands/LeaveRoom.ts +3 -0
  148. package/src/types/src/schemes/commands/LeaveSpace.ts +3 -0
  149. package/src/types/src/schemes/commands/SetPermissionOverwrites.ts +9 -0
  150. package/src/types/src/schemes/commands/UpdateRole.ts +7 -0
  151. package/src/types/src/schemes/commands/UpdateRoom.ts +5 -0
  152. package/src/types/src/schemes/commands/UpdateSpace.ts +4 -0
  153. package/src/types/src/schemes/events/AckReports.ts +5 -0
  154. package/src/types/src/schemes/events/Bye.ts +3 -0
  155. package/src/types/src/schemes/events/ComputedPermissions.ts +6 -0
  156. package/src/types/src/schemes/events/Error.ts +4 -0
  157. package/src/types/src/schemes/events/NewMessage.ts +7 -0
  158. package/src/types/src/schemes/events/NewRole.ts +6 -0
  159. package/src/types/src/schemes/events/NewRoom.ts +6 -0
  160. package/src/types/src/schemes/events/NewTopic.ts +6 -0
  161. package/src/types/src/schemes/events/Ok.ts +3 -0
  162. package/src/types/src/schemes/events/Owners.ts +9 -0
  163. package/src/types/src/schemes/events/PermissionOverwriteTargets.ts +11 -0
  164. package/src/types/src/schemes/events/PermissionOverwrites.ts +9 -0
  165. package/src/types/src/schemes/events/PermissionOverwritesUpdated.ts +9 -0
  166. package/src/types/src/schemes/events/RoleDeleted.ts +4 -0
  167. package/src/types/src/schemes/events/RoleUpdated.ts +6 -0
  168. package/src/types/src/schemes/events/RoomDeleted.ts +3 -0
  169. package/src/types/src/schemes/events/RoomJoined.ts +5 -0
  170. package/src/types/src/schemes/events/RoomLeft.ts +3 -0
  171. package/src/types/src/schemes/events/RoomMemberJoined.ts +6 -0
  172. package/src/types/src/schemes/events/RoomMemberLeft.ts +4 -0
  173. package/src/types/src/schemes/events/RoomMemberUpdated.ts +7 -0
  174. package/src/types/src/schemes/events/RoomMembers.ts +6 -0
  175. package/src/types/src/schemes/events/RoomUpdated.ts +5 -0
  176. package/src/types/src/schemes/events/Session.ts +8 -0
  177. package/src/types/src/schemes/events/SpaceDeleted.ts +3 -0
  178. package/src/types/src/schemes/events/SpaceJoined.ts +5 -0
  179. package/src/types/src/schemes/events/SpaceLeft.ts +3 -0
  180. package/src/types/src/schemes/events/SpaceMemberJoined.ts +6 -0
  181. package/src/types/src/schemes/events/SpaceMemberLeft.ts +4 -0
  182. package/src/types/src/schemes/events/SpaceMemberUpdated.ts +7 -0
  183. package/src/types/src/schemes/events/SpaceMembers.ts +6 -0
  184. package/src/types/src/schemes/events/SpaceRooms.ts +6 -0
  185. package/src/types/src/schemes/events/SpaceUpdated.ts +5 -0
  186. package/src/types/src/schemes/events/TopicDeleted.ts +5 -0
  187. package/src/types/src/schemes/events/UserUpdated.ts +5 -0
  188. package/src/types/tsconfig.json +75 -0
package/build/index.js CHANGED
@@ -641,11 +641,10 @@ function MessagesManager_defineProperty(obj, key, value) { key = MessagesManager
641
641
  function MessagesManager_toPropertyKey(arg) { var key = MessagesManager_toPrimitive(arg, "string"); return MessagesManager_typeof(key) === "symbol" ? key : String(key); }
642
642
  function MessagesManager_toPrimitive(input, hint) { if (MessagesManager_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (MessagesManager_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
643
643
 
644
- var getCombinedId = function getCombinedId() {
645
- for (var _len = arguments.length, ids = new Array(_len), _key = 0; _key < _len; _key++) {
646
- ids[_key] = arguments[_key];
647
- }
648
- return ids.join('_');
644
+ var getCombinedId = function getCombinedId(location) {
645
+ return Object.values(location).filter(function (v) {
646
+ return v;
647
+ }).join('_');
649
648
  };
650
649
  var MessagesManager = /*#__PURE__*/function () {
651
650
  // Temporary not lazy loaded; server must implement GetTopicMessages command.
@@ -670,12 +669,12 @@ var MessagesManager = /*#__PURE__*/function () {
670
669
  MessagesManager_createClass(MessagesManager, [{
671
670
  key: "get",
672
671
  value: function () {
673
- var _get = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(roomId, topicId) {
672
+ var _get = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(location) {
674
673
  return _regeneratorRuntime().wrap(function _callee$(_context) {
675
674
  while (1) {
676
675
  switch (_context.prev = _context.next) {
677
676
  case 0:
678
- return _context.abrupt("return", this.list.get(getCombinedId(roomId, topicId)));
677
+ return _context.abrupt("return", this.list.get(getCombinedId(location)));
679
678
  case 1:
680
679
  case "end":
681
680
  return _context.stop();
@@ -683,7 +682,7 @@ var MessagesManager = /*#__PURE__*/function () {
683
682
  }
684
683
  }, _callee, this);
685
684
  }));
686
- function get(_x, _x2) {
685
+ function get(_x) {
687
686
  return _get.apply(this, arguments);
688
687
  }
689
688
  return get;
@@ -727,7 +726,9 @@ var MessagesManager = /*#__PURE__*/function () {
727
726
  }
728
727
  _context2.next = 11;
729
728
  return this.tracker.client.send('GetAckReports', {
730
- spaceId: spaceId
729
+ location: {
730
+ spaceId: spaceId
731
+ }
731
732
  });
732
733
  case 11:
733
734
  result = _context2.sent;
@@ -750,7 +751,7 @@ var MessagesManager = /*#__PURE__*/function () {
750
751
  }
751
752
  }, _callee2, this);
752
753
  }));
753
- function cacheSpaceAckReports(_x3) {
754
+ function cacheSpaceAckReports(_x2) {
754
755
  return _cacheSpaceAckReports.apply(this, arguments);
755
756
  }
756
757
  return cacheSpaceAckReports;
@@ -784,7 +785,9 @@ var MessagesManager = /*#__PURE__*/function () {
784
785
  }
785
786
  _context3.next = 8;
786
787
  return this.tracker.client.send('GetAckReports', {
787
- roomId: roomId
788
+ location: {
789
+ roomId: roomId
790
+ }
788
791
  });
789
792
  case 8:
790
793
  result = _context3.sent;
@@ -804,7 +807,7 @@ var MessagesManager = /*#__PURE__*/function () {
804
807
  }
805
808
  }, _callee3, this);
806
809
  }));
807
- function getRoomAckReports(_x4) {
810
+ function getRoomAckReports(_x3) {
808
811
  return _getRoomAckReports.apply(this, arguments);
809
812
  }
810
813
  return getRoomAckReports;
@@ -817,11 +820,14 @@ var MessagesManager = /*#__PURE__*/function () {
817
820
  key: "_deleteByTopicIds",
818
821
  value: function _deleteByTopicIds(roomId) {
819
822
  var _this$list, _this$acks$get;
820
- for (var _len2 = arguments.length, topicIds = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
821
- topicIds[_key2 - 1] = arguments[_key2];
823
+ for (var _len = arguments.length, topicIds = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
824
+ topicIds[_key - 1] = arguments[_key];
822
825
  }
823
826
  (_this$list = this.list)["delete"].apply(_this$list, MessagesManager_toConsumableArray(topicIds.map(function (topicId) {
824
- return getCombinedId(roomId, topicId);
827
+ return getCombinedId({
828
+ roomId: roomId,
829
+ topicId: topicId
830
+ });
825
831
  })));
826
832
  (_this$acks$get = this.acks.get(roomId)) === null || _this$acks$get === void 0 ? void 0 : _this$acks$get["delete"].apply(_this$acks$get, topicIds);
827
833
  }
@@ -834,18 +840,21 @@ var MessagesManager = /*#__PURE__*/function () {
834
840
  key: "_handleNewTopics",
835
841
  value: function _handleNewTopics(roomId) {
836
842
  var _this$list2;
837
- for (var _len3 = arguments.length, topics = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
838
- topics[_key3 - 1] = arguments[_key3];
843
+ for (var _len2 = arguments.length, topics = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
844
+ topics[_key2 - 1] = arguments[_key2];
839
845
  }
840
846
  (_this$list2 = this.list).set.apply(_this$list2, MessagesManager_toConsumableArray(topics.map(function (topic) {
841
- return [getCombinedId(roomId, topic.id), new ObservableIndexedObjectCollection('id')];
847
+ return [getCombinedId({
848
+ roomId: roomId,
849
+ topicId: topic.id
850
+ }), new ObservableIndexedObjectCollection('id')];
842
851
  })));
843
852
  this.createAckReportsForNewTopics(roomId, topics);
844
853
  }
845
854
  }, {
846
855
  key: "handleNewMessage",
847
856
  value: function handleNewMessage(ev) {
848
- this.list.get(getCombinedId(ev.roomId, ev.topicId)).set(ev.message);
857
+ this.list.get(getCombinedId(ev.location)).set(ev.message);
849
858
  this.updateLocallyAckReportOnNewMessage(ev);
850
859
  }
851
860
  }, {
@@ -882,13 +891,13 @@ var MessagesManager = /*#__PURE__*/function () {
882
891
  key: "updateLocallyAckReportOnNewMessage",
883
892
  value: function updateLocallyAckReportOnNewMessage(ev) {
884
893
  var _this$tracker$me;
885
- var ackReports = this.acks.get(ev.roomId);
894
+ var ackReports = this.acks.get(ev.location.roomId);
886
895
  if (!ackReports) {
887
896
  // If we don't follow ack reports for this room, skip
888
897
  return;
889
898
  }
890
899
  var isMe = ev.message.author.id === ((_this$tracker$me = this.tracker.me) === null || _this$tracker$me === void 0 ? void 0 : _this$tracker$me.id);
891
- var currentAckReport = ackReports.get(ev.topicId);
900
+ var currentAckReport = ackReports.get(ev.location.topicId);
892
901
  var update;
893
902
  if (isMe) {
894
903
  // Reset missed messages count if new message is authored by me
@@ -1239,15 +1248,20 @@ var RoomsManager = /*#__PURE__*/function () {
1239
1248
  }, {
1240
1249
  key: "handleTopicDeleted",
1241
1250
  value: function handleTopicDeleted(ev) {
1242
- var collection = this.topics.get(ev.roomId);
1243
- collection["delete"](ev.id);
1244
- this.list.get(ev.roomId).topics = collection.items;
1251
+ var _room$defaultTopic;
1252
+ var collection = this.topics.get(ev.location.roomId);
1253
+ collection["delete"](ev.location.topicId);
1254
+ var room = this.list.get(ev.location.roomId);
1255
+ if (((_room$defaultTopic = room.defaultTopic) === null || _room$defaultTopic === void 0 ? void 0 : _room$defaultTopic.id) === ev.location.topicId) {
1256
+ this.list.set(RoomsManager_objectSpread(RoomsManager_objectSpread({}, room), {}, {
1257
+ defaultTopic: null
1258
+ }));
1259
+ }
1245
1260
  }
1246
1261
  }, {
1247
1262
  key: "handleNewTopic",
1248
1263
  value: function handleNewTopic(ev) {
1249
1264
  this.addJoinedRoomTopics(ev.roomId, ev.topic);
1250
- this.list.get(ev.roomId).topics.push(ev.topic);
1251
1265
  }
1252
1266
  }, {
1253
1267
  key: "addJoinedRoomTopics",
@@ -1291,7 +1305,9 @@ var RoomsManager = /*#__PURE__*/function () {
1291
1305
  }
1292
1306
  for (var _i2 = 0, _rooms = rooms; _i2 < _rooms.length; _i2++) {
1293
1307
  var room = _rooms[_i2];
1294
- this.addJoinedRoomTopics.apply(this, [room.id].concat(RoomsManager_toConsumableArray(room.topics)));
1308
+ if (room.defaultTopic) {
1309
+ this.addJoinedRoomTopics(room.id, room.defaultTopic);
1310
+ }
1295
1311
  }
1296
1312
  (_this$list2 = this.list).set.apply(_this$list2, rooms);
1297
1313
  }
@@ -1406,6 +1422,7 @@ var SpacesManager = /*#__PURE__*/function () {
1406
1422
  SpacesManager_defineProperty(this, "list", new ObservableIndexedObjectCollection('id'));
1407
1423
  SpacesManager_defineProperty(this, "roles", new IndexedCollection());
1408
1424
  SpacesManager_defineProperty(this, "rooms", new IndexedCollection());
1425
+ SpacesManager_defineProperty(this, "roomIdToSpaceId", new IndexedCollection());
1409
1426
  SpacesManager_defineProperty(this, "members", new IndexedCollection());
1410
1427
  SpacesManager_defineProperty(this, "deferredSession", new DeferredTask());
1411
1428
  SpacesManager_defineProperty(this, "roomsPromises", new PromiseRegistry());
@@ -1682,6 +1699,7 @@ var SpacesManager = /*#__PURE__*/function () {
1682
1699
  value: function handleNewRoom(ev) {
1683
1700
  var _this$rooms$get;
1684
1701
  (_this$rooms$get = this.rooms.get(ev.spaceId)) === null || _this$rooms$get === void 0 ? void 0 : _this$rooms$get.set(ev.summary);
1702
+ this.roomIdToSpaceId.set([ev.summary.id, ev.spaceId]);
1685
1703
  }
1686
1704
  }, {
1687
1705
  key: "handleRoomUpdated",
@@ -1696,11 +1714,29 @@ var SpacesManager = /*#__PURE__*/function () {
1696
1714
  }
1697
1715
  }, {
1698
1716
  key: "handleRoomDeleted",
1699
- value: function handleRoomDeleted(ev) {
1700
- if (ev.spaceId && this.rooms.has(ev.spaceId)) {
1701
- this.rooms.get(ev.spaceId)["delete"](ev.id);
1717
+ value: function () {
1718
+ var _handleRoomDeleted = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee8(ev) {
1719
+ var spaceId;
1720
+ return SpacesManager_regeneratorRuntime().wrap(function _callee8$(_context8) {
1721
+ while (1) {
1722
+ switch (_context8.prev = _context8.next) {
1723
+ case 0:
1724
+ spaceId = this.roomIdToSpaceId.get(ev.id);
1725
+ if (spaceId && this.rooms.has(spaceId)) {
1726
+ this.rooms.get(spaceId)["delete"](ev.id);
1727
+ }
1728
+ case 2:
1729
+ case "end":
1730
+ return _context8.stop();
1731
+ }
1732
+ }
1733
+ }, _callee8, this);
1734
+ }));
1735
+ function handleRoomDeleted(_x5) {
1736
+ return _handleRoomDeleted.apply(this, arguments);
1702
1737
  }
1703
- }
1738
+ return handleRoomDeleted;
1739
+ }()
1704
1740
  }, {
1705
1741
  key: "handleRoleDeleted",
1706
1742
  value: function handleRoleDeleted(ev) {
@@ -1718,6 +1754,11 @@ var SpacesManager = /*#__PURE__*/function () {
1718
1754
  }, {
1719
1755
  key: "handleSpaceDeleted",
1720
1756
  value: function handleSpaceDeleted(ev) {
1757
+ var _this$rooms$get$map, _this$rooms$get2, _this$roomIdToSpaceId;
1758
+ var roomIds = (_this$rooms$get$map = (_this$rooms$get2 = this.rooms.get(ev.id)) === null || _this$rooms$get2 === void 0 ? void 0 : _this$rooms$get2.map(function (item) {
1759
+ return item.id;
1760
+ })) !== null && _this$rooms$get$map !== void 0 ? _this$rooms$get$map : [];
1761
+ (_this$roomIdToSpaceId = this.roomIdToSpaceId)["delete"].apply(_this$roomIdToSpaceId, SpacesManager_toConsumableArray(roomIds));
1721
1762
  this.roles["delete"](ev.id);
1722
1763
  this.members["delete"](ev.id);
1723
1764
  this.membersPromises.forget(ev.id);
@@ -1803,6 +1844,7 @@ var SpacesManager = /*#__PURE__*/function () {
1803
1844
  this.roles.deleteAll();
1804
1845
  this.rooms.deleteAll();
1805
1846
  this.members.deleteAll();
1847
+ this.roomIdToSpaceId.deleteAll();
1806
1848
  this.addJoinedSpaces.apply(this, SpacesManager_toConsumableArray(ev.state.spaces));
1807
1849
  this.deferredSession.resolve();
1808
1850
  }
@@ -1954,11 +1996,12 @@ function PermissionsManager_toPrimitive(input, hint) { if (PermissionsManager_ty
1954
1996
 
1955
1997
 
1956
1998
 
1957
- var getOvId = function getOvId(layer, layerId, target, targetId) {
1958
- return layer + (layerId !== null && layerId !== void 0 ? layerId : '') + (target !== null && target !== void 0 ? target : '') + (targetId !== null && targetId !== void 0 ? targetId : '');
1999
+ var getOvId = function getOvId(location, target, targetId) {
2000
+ var _location$spaceId, _location$roomId, _location$topicId;
2001
+ return ((_location$spaceId = location.spaceId) !== null && _location$spaceId !== void 0 ? _location$spaceId : '') + ((_location$roomId = location.roomId) !== null && _location$roomId !== void 0 ? _location$roomId : '') + ((_location$topicId = location.topicId) !== null && _location$topicId !== void 0 ? _location$topicId : '') + (target !== null && target !== void 0 ? target : '') + (targetId !== null && targetId !== void 0 ? targetId : '');
1959
2002
  };
1960
2003
  var getOvIdByObject = function getOvIdByObject(overwrites) {
1961
- return getOvId(overwrites.layer, overwrites.layerId, overwrites.target, overwrites.targetId);
2004
+ return getOvId(overwrites.location, overwrites.target, overwrites.targetId);
1962
2005
  };
1963
2006
  var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1964
2007
  PermissionsManager_inherits(PermissionsManager, _EventTarget);
@@ -2005,14 +2048,15 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
2005
2048
  PermissionsManager_createClass(PermissionsManager, [{
2006
2049
  key: "getOverwrites",
2007
2050
  value: function () {
2008
- var _getOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee2(layer, layerId, target, targetId) {
2051
+ var _getOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee2(location, target, targetId) {
2009
2052
  var _this2 = this;
2010
2053
  var id;
2011
2054
  return PermissionsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
2012
2055
  while (1) {
2013
2056
  switch (_context2.prev = _context2.next) {
2014
2057
  case 0:
2015
- id = getOvId(layer, layerId, target, targetId);
2058
+ this.validateLocation(location);
2059
+ id = getOvId(location, target, targetId);
2016
2060
  if (this.overwritesPromises.notExist(id)) {
2017
2061
  this.overwritesPromises.registerByFunction( /*#__PURE__*/PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee() {
2018
2062
  var result;
@@ -2022,8 +2066,7 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
2022
2066
  case 0:
2023
2067
  _context.next = 2;
2024
2068
  return _this2.tracker.client.send('GetPermissionOverwrites', {
2025
- layer: layer,
2026
- layerId: layerId,
2069
+ location: location,
2027
2070
  target: target,
2028
2071
  targetId: targetId
2029
2072
  });
@@ -2044,18 +2087,18 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
2044
2087
  }, _callee);
2045
2088
  })), id);
2046
2089
  }
2047
- _context2.next = 4;
2090
+ _context2.next = 5;
2048
2091
  return this.overwritesPromises.get(id);
2049
- case 4:
2050
- return _context2.abrupt("return", this.overwrites.get(id));
2051
2092
  case 5:
2093
+ return _context2.abrupt("return", this.overwrites.get(id));
2094
+ case 6:
2052
2095
  case "end":
2053
2096
  return _context2.stop();
2054
2097
  }
2055
2098
  }
2056
2099
  }, _callee2, this);
2057
2100
  }));
2058
- function getOverwrites(_x, _x2, _x3, _x4) {
2101
+ function getOverwrites(_x, _x2, _x3) {
2059
2102
  return _getOverwrites.apply(this, arguments);
2060
2103
  }
2061
2104
  return getOverwrites;
@@ -2068,7 +2111,7 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
2068
2111
  }, {
2069
2112
  key: "check",
2070
2113
  value: function () {
2071
- var _check = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee3(permissionNames, spaceId, roomId, topicId) {
2114
+ var _check = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee3(permissionNames, location) {
2072
2115
  var ownedPermissions, missing;
2073
2116
  return PermissionsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
2074
2117
  while (1) {
@@ -2081,7 +2124,7 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
2081
2124
  throw new Error('Permission names array cannot be empty');
2082
2125
  case 2:
2083
2126
  _context3.next = 4;
2084
- return this.calculatePermissions(spaceId, roomId, topicId);
2127
+ return this.calculatePermissions(location);
2085
2128
  case 4:
2086
2129
  ownedPermissions = _context3.sent;
2087
2130
  missing = [];
@@ -2103,7 +2146,7 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
2103
2146
  }
2104
2147
  }, _callee3, this);
2105
2148
  }));
2106
- function check(_x5, _x6, _x7, _x8) {
2149
+ function check(_x4, _x5) {
2107
2150
  return _check.apply(this, arguments);
2108
2151
  }
2109
2152
  return check;
@@ -2111,80 +2154,158 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
2111
2154
  }, {
2112
2155
  key: "calculatePermissions",
2113
2156
  value: function () {
2114
- var _calculatePermissions = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee4(spaceId, roomId, topicId) {
2115
- var _spaceMember$roles, _roomMember$roles;
2116
- var userId, _yield$this$fetchMemb, _yield$this$fetchMemb2, spaceMember, roomMember, userRoles, _yield$Promise$all, _yield$Promise$all2, spaces, rooms, topics, promises;
2157
+ var _calculatePermissions = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee4(location) {
2158
+ var _spaceMember$roles, _roomMember$roles, _yield$this$tracker$s, _yield$this$tracker$r, _yield$this$tracker$r2;
2159
+ var userId, _yield$this$fetchMemb, _yield$this$fetchMemb2, spaceMember, roomMember, userRoles, promises, filterLocation, _filterLocation;
2117
2160
  return PermissionsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
2118
2161
  while (1) {
2119
2162
  switch (_context4.prev = _context4.next) {
2120
2163
  case 0:
2121
- if (!(topicId && !roomId || roomId && !spaceId)) {
2122
- _context4.next = 2;
2123
- break;
2124
- }
2125
- throw new Error('Corrupted arguments hierarchy');
2126
- case 2:
2127
- _context4.next = 4;
2164
+ this.validateLocation(location);
2165
+ _context4.next = 3;
2128
2166
  return this.tracker.getMe();
2129
- case 4:
2167
+ case 3:
2130
2168
  userId = _context4.sent.id;
2131
- _context4.next = 7;
2132
- return this.fetchMembersOrFail(spaceId, roomId);
2133
- case 7:
2169
+ _context4.next = 6;
2170
+ return this.fetchMembersOrFail(location);
2171
+ case 6:
2134
2172
  _yield$this$fetchMemb = _context4.sent;
2135
2173
  _yield$this$fetchMemb2 = _slicedToArray(_yield$this$fetchMemb, 2);
2136
2174
  spaceMember = _yield$this$fetchMemb2[0];
2137
2175
  roomMember = _yield$this$fetchMemb2[1];
2138
2176
  userRoles = [].concat(PermissionsManager_toConsumableArray((_spaceMember$roles = spaceMember === null || spaceMember === void 0 ? void 0 : spaceMember.roles) !== null && _spaceMember$roles !== void 0 ? _spaceMember$roles : []), PermissionsManager_toConsumableArray((_roomMember$roles = roomMember === null || roomMember === void 0 ? void 0 : roomMember.roles) !== null && _roomMember$roles !== void 0 ? _roomMember$roles : []));
2139
- _context4.next = 14;
2140
- return Promise.all([this.tracker.spaces.get(), this.tracker.rooms.get(), roomId ? this.tracker.rooms.getTopics(roomId) : null]);
2141
- case 14:
2142
- _yield$Promise$all = _context4.sent;
2143
- _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 3);
2144
- spaces = _yield$Promise$all2[0];
2145
- rooms = _yield$Promise$all2[1];
2146
- topics = _yield$Promise$all2[2];
2147
2177
  promises = [
2148
2178
  // Global user overwrites
2149
- this.getOverwrites('Global', null, 'User', userId).then(function (v) {
2179
+ this.getOverwrites({}, 'User', userId).then(function (v) {
2150
2180
  return v.overwrites;
2151
2181
  })];
2152
- if (spaceId && spaces.has(spaceId)) {
2153
- promises.push(this.collectRoleOverwrites(spaceId, 'Space', spaceId, userRoles));
2154
- promises.push(this.getOverwrites('Space', spaceId, 'User', userId).then(function (v) {
2155
- return v.overwrites;
2156
- }));
2182
+ _context4.t0 = location.spaceId;
2183
+ if (!_context4.t0) {
2184
+ _context4.next = 24;
2185
+ break;
2157
2186
  }
2158
- if (roomId && rooms.has(roomId)) {
2159
- if (userRoles.length) {
2160
- promises.push(this.collectRoleOverwrites(spaceId, 'Room', roomId, userRoles));
2161
- }
2162
- promises.push(this.getOverwrites('Room', roomId, 'User', userId).then(function (v) {
2163
- return v.overwrites;
2164
- }));
2187
+ _context4.next = 16;
2188
+ return this.tracker.spaces.get();
2189
+ case 16:
2190
+ _context4.t3 = _yield$this$tracker$s = _context4.sent;
2191
+ _context4.t2 = _context4.t3 !== null;
2192
+ if (!_context4.t2) {
2193
+ _context4.next = 20;
2194
+ break;
2165
2195
  }
2166
- if (topicId && topics && topics.has(topicId)) {
2167
- if (userRoles.length) {
2168
- promises.push(this.collectRoleOverwrites(spaceId, 'Topic', topicId, userRoles));
2169
- }
2170
- promises.push(this.getOverwrites('Topic', topicId, 'User', userId).then(function (v) {
2171
- return v.overwrites;
2172
- }));
2196
+ _context4.t2 = _yield$this$tracker$s !== void 0;
2197
+ case 20:
2198
+ _context4.t1 = _context4.t2;
2199
+ if (!_context4.t1) {
2200
+ _context4.next = 23;
2201
+ break;
2173
2202
  }
2174
- _context4.t0 = this;
2175
- _context4.next = 26;
2176
- return Promise.all(promises);
2177
- case 26:
2178
- _context4.t1 = _context4.sent;
2179
- return _context4.abrupt("return", _context4.t0.resolveOverwritesHierarchy.call(_context4.t0, _context4.t1));
2203
+ _context4.t1 = _yield$this$tracker$s.has(location.spaceId);
2204
+ case 23:
2205
+ _context4.t0 = _context4.t1;
2206
+ case 24:
2207
+ if (!_context4.t0) {
2208
+ _context4.next = 28;
2209
+ break;
2210
+ }
2211
+ filterLocation = {
2212
+ spaceId: location.spaceId
2213
+ };
2214
+ promises.push(this.collectRoleOverwrites(filterLocation, userRoles));
2215
+ promises.push(this.getOverwrites(filterLocation, 'User', userId).then(function (v) {
2216
+ return v.overwrites;
2217
+ }));
2180
2218
  case 28:
2219
+ _context4.t4 = location.roomId;
2220
+ if (!_context4.t4) {
2221
+ _context4.next = 40;
2222
+ break;
2223
+ }
2224
+ _context4.next = 32;
2225
+ return this.tracker.rooms.get();
2226
+ case 32:
2227
+ _context4.t7 = _yield$this$tracker$r = _context4.sent;
2228
+ _context4.t6 = _context4.t7 !== null;
2229
+ if (!_context4.t6) {
2230
+ _context4.next = 36;
2231
+ break;
2232
+ }
2233
+ _context4.t6 = _yield$this$tracker$r !== void 0;
2234
+ case 36:
2235
+ _context4.t5 = _context4.t6;
2236
+ if (!_context4.t5) {
2237
+ _context4.next = 39;
2238
+ break;
2239
+ }
2240
+ _context4.t5 = _yield$this$tracker$r.has(location.roomId);
2241
+ case 39:
2242
+ _context4.t4 = _context4.t5;
2243
+ case 40:
2244
+ if (!_context4.t4) {
2245
+ _context4.next = 44;
2246
+ break;
2247
+ }
2248
+ _filterLocation = {
2249
+ spaceId: location.spaceId,
2250
+ roomId: location.roomId
2251
+ };
2252
+ if (userRoles.length) {
2253
+ promises.push(this.collectRoleOverwrites(_filterLocation, userRoles));
2254
+ }
2255
+ promises.push(this.getOverwrites(_filterLocation, 'User', userId).then(function (v) {
2256
+ return v.overwrites;
2257
+ }));
2258
+ case 44:
2259
+ _context4.t8 = location.topicId;
2260
+ if (!_context4.t8) {
2261
+ _context4.next = 56;
2262
+ break;
2263
+ }
2264
+ _context4.next = 48;
2265
+ return this.tracker.rooms.getTopics(location.roomId);
2266
+ case 48:
2267
+ _context4.t11 = _yield$this$tracker$r2 = _context4.sent;
2268
+ _context4.t10 = _context4.t11 !== null;
2269
+ if (!_context4.t10) {
2270
+ _context4.next = 52;
2271
+ break;
2272
+ }
2273
+ _context4.t10 = _yield$this$tracker$r2 !== void 0;
2274
+ case 52:
2275
+ _context4.t9 = _context4.t10;
2276
+ if (!_context4.t9) {
2277
+ _context4.next = 55;
2278
+ break;
2279
+ }
2280
+ _context4.t9 = _yield$this$tracker$r2.has(location.topicId);
2281
+ case 55:
2282
+ _context4.t8 = _context4.t9;
2283
+ case 56:
2284
+ if (!_context4.t8) {
2285
+ _context4.next = 59;
2286
+ break;
2287
+ }
2288
+ if (userRoles.length) {
2289
+ promises.push(this.collectRoleOverwrites(location, userRoles));
2290
+ }
2291
+ promises.push(this.getOverwrites(location, 'User', userId).then(function (v) {
2292
+ return v.overwrites;
2293
+ }));
2294
+ case 59:
2295
+ _context4.t12 = this;
2296
+ _context4.next = 62;
2297
+ return Promise.all(promises);
2298
+ case 62:
2299
+ _context4.t13 = _context4.sent;
2300
+ return _context4.abrupt("return", _context4.t12.resolveOverwritesHierarchy.call(_context4.t12, _context4.t13));
2301
+ case 64:
2181
2302
  case "end":
2182
2303
  return _context4.stop();
2183
2304
  }
2184
2305
  }
2185
2306
  }, _callee4, this);
2186
2307
  }));
2187
- function calculatePermissions(_x9, _x10, _x11) {
2308
+ function calculatePermissions(_x6) {
2188
2309
  return _calculatePermissions.apply(this, arguments);
2189
2310
  }
2190
2311
  return calculatePermissions;
@@ -2199,28 +2320,57 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
2199
2320
  key: "handleSpaceDeleted",
2200
2321
  value: function handleSpaceDeleted(ev) {
2201
2322
  var _this$overwritesPromi;
2202
- var ids = this.deleteOverwritesByIdPrefix(getOvId('Space', ev.id));
2323
+ var ids = this.deleteOverwritesByIdPrefix(getOvId({
2324
+ spaceId: ev.id
2325
+ }));
2203
2326
  (_this$overwritesPromi = this.overwritesPromises).forget.apply(_this$overwritesPromi, PermissionsManager_toConsumableArray(ids));
2204
2327
  }
2205
2328
  }, {
2206
2329
  key: "handleRoomDeleted",
2207
- value: function handleRoomDeleted(ev) {
2208
- var _this$overwritesPromi2;
2209
- var ids = this.deleteOverwritesByIdPrefix(getOvId('Room', ev.id));
2210
- (_this$overwritesPromi2 = this.overwritesPromises).forget.apply(_this$overwritesPromi2, PermissionsManager_toConsumableArray(ids));
2211
- }
2330
+ value: function () {
2331
+ var _handleRoomDeleted = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee5(ev) {
2332
+ var room, _this$overwritesPromi2, ids;
2333
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
2334
+ while (1) {
2335
+ switch (_context5.prev = _context5.next) {
2336
+ case 0:
2337
+ _context5.next = 2;
2338
+ return this.tracker.rooms.get();
2339
+ case 2:
2340
+ room = _context5.sent.get(ev.id);
2341
+ if (room) {
2342
+ ids = this.deleteOverwritesByIdPrefix(getOvId({
2343
+ spaceId: room.spaceId,
2344
+ roomId: room.id
2345
+ }));
2346
+ (_this$overwritesPromi2 = this.overwritesPromises).forget.apply(_this$overwritesPromi2, PermissionsManager_toConsumableArray(ids));
2347
+ }
2348
+ case 4:
2349
+ case "end":
2350
+ return _context5.stop();
2351
+ }
2352
+ }
2353
+ }, _callee5, this);
2354
+ }));
2355
+ function handleRoomDeleted(_x7) {
2356
+ return _handleRoomDeleted.apply(this, arguments);
2357
+ }
2358
+ return handleRoomDeleted;
2359
+ }()
2212
2360
  }, {
2213
2361
  key: "handleTopicDeleted",
2214
2362
  value: function handleTopicDeleted(ev) {
2215
2363
  var _this$overwritesPromi3;
2216
- var ids = this.deleteOverwritesByIdPrefix(getOvId('Topic', ev.id));
2364
+ var ids = this.deleteOverwritesByIdPrefix(getOvId(ev.location));
2217
2365
  (_this$overwritesPromi3 = this.overwritesPromises).forget.apply(_this$overwritesPromi3, PermissionsManager_toConsumableArray(ids));
2218
2366
  }
2219
2367
  }, {
2220
2368
  key: "handleRoleDeleted",
2221
2369
  value: function handleRoleDeleted(ev) {
2222
2370
  var _this$overwritesPromi4;
2223
- var ids = this.deleteOverwritesByIdPrefix(getOvId('Space', ev.spaceId, 'Role', ev.id));
2371
+ var ids = this.deleteOverwritesByIdPrefix(getOvId({
2372
+ spaceId: ev.spaceId
2373
+ }, 'Role', ev.id));
2224
2374
  (_this$overwritesPromi4 = this.overwritesPromises).forget.apply(_this$overwritesPromi4, PermissionsManager_toConsumableArray(ids));
2225
2375
  }
2226
2376
  }, {
@@ -2262,28 +2412,28 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
2262
2412
  }, {
2263
2413
  key: "collectRoleOverwrites",
2264
2414
  value: function () {
2265
- var _collectRoleOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee5(spaceId, layer, layerId, userRoles) {
2415
+ var _collectRoleOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee6(location, userRoles) {
2266
2416
  var _this4 = this;
2267
2417
  var roleOverwrites;
2268
- return PermissionsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
2418
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee6$(_context6) {
2269
2419
  while (1) {
2270
- switch (_context5.prev = _context5.next) {
2420
+ switch (_context6.prev = _context6.next) {
2271
2421
  case 0:
2272
- _context5.next = 2;
2422
+ _context6.next = 2;
2273
2423
  return Promise.all(userRoles.map(function (roleId) {
2274
- return _this4.getOverwrites(layer, layerId, 'Role', roleId);
2424
+ return _this4.getOverwrites(location, 'Role', roleId);
2275
2425
  }));
2276
2426
  case 2:
2277
- roleOverwrites = _context5.sent;
2278
- return _context5.abrupt("return", this.resolveOverwritesFromRolesByOrder(spaceId, roleOverwrites));
2427
+ roleOverwrites = _context6.sent;
2428
+ return _context6.abrupt("return", this.resolveOverwritesFromRolesByOrder(location.spaceId, roleOverwrites));
2279
2429
  case 4:
2280
2430
  case "end":
2281
- return _context5.stop();
2431
+ return _context6.stop();
2282
2432
  }
2283
2433
  }
2284
- }, _callee5, this);
2434
+ }, _callee6, this);
2285
2435
  }));
2286
- function collectRoleOverwrites(_x12, _x13, _x14, _x15) {
2436
+ function collectRoleOverwrites(_x8, _x9) {
2287
2437
  return _collectRoleOverwrites.apply(this, arguments);
2288
2438
  }
2289
2439
  return collectRoleOverwrites;
@@ -2291,17 +2441,17 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
2291
2441
  }, {
2292
2442
  key: "resolveOverwritesFromRolesByOrder",
2293
2443
  value: function () {
2294
- var _resolveOverwritesFromRolesByOrder = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee6(spaceId, overwrites) {
2444
+ var _resolveOverwritesFromRolesByOrder = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee7(spaceId, overwrites) {
2295
2445
  var allows, denies, roles, sortedOverwrites, permissionsLength;
2296
- return PermissionsManager_regeneratorRuntime().wrap(function _callee6$(_context6) {
2446
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee7$(_context7) {
2297
2447
  while (1) {
2298
- switch (_context6.prev = _context6.next) {
2448
+ switch (_context7.prev = _context7.next) {
2299
2449
  case 0:
2300
2450
  allows = 0, denies = 0;
2301
- _context6.next = 3;
2451
+ _context7.next = 3;
2302
2452
  return this.tracker.spaces.getRoles(spaceId);
2303
2453
  case 3:
2304
- roles = _context6.sent;
2454
+ roles = _context7.sent;
2305
2455
  sortedOverwrites = overwrites.sort(function (a, b) {
2306
2456
  return roles.get(a.targetId).priority - roles.get(b.targetId).priority;
2307
2457
  }); // Max length of bit word
@@ -2326,18 +2476,18 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
2326
2476
  }
2327
2477
  }
2328
2478
  });
2329
- return _context6.abrupt("return", {
2479
+ return _context7.abrupt("return", {
2330
2480
  allow: allows,
2331
2481
  deny: denies
2332
2482
  });
2333
2483
  case 8:
2334
2484
  case "end":
2335
- return _context6.stop();
2485
+ return _context7.stop();
2336
2486
  }
2337
2487
  }
2338
- }, _callee6, this);
2488
+ }, _callee7, this);
2339
2489
  }));
2340
- function resolveOverwritesFromRolesByOrder(_x16, _x17) {
2490
+ function resolveOverwritesFromRolesByOrder(_x10, _x11) {
2341
2491
  return _resolveOverwritesFromRolesByOrder.apply(this, arguments);
2342
2492
  }
2343
2493
  return resolveOverwritesFromRolesByOrder;
@@ -2384,38 +2534,45 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
2384
2534
  }, {
2385
2535
  key: "fetchMembersOrFail",
2386
2536
  value: function () {
2387
- var _fetchMembersOrFail = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee7(spaceId, roomId) {
2537
+ var _fetchMembersOrFail = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee8(location) {
2388
2538
  var results, spaceFail, roomFail, layer;
2389
- return PermissionsManager_regeneratorRuntime().wrap(function _callee7$(_context7) {
2539
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee8$(_context8) {
2390
2540
  while (1) {
2391
- switch (_context7.prev = _context7.next) {
2541
+ switch (_context8.prev = _context8.next) {
2392
2542
  case 0:
2393
- _context7.next = 2;
2394
- return Promise.all([spaceId ? this.tracker.spaces.getMe(spaceId) : null, roomId ? this.tracker.rooms.getMe(roomId) : null]);
2543
+ _context8.next = 2;
2544
+ return Promise.all([location.spaceId ? this.tracker.spaces.getMe(location.spaceId) : null, location.roomId ? this.tracker.rooms.getMe(location.roomId) : null]);
2395
2545
  case 2:
2396
- results = _context7.sent;
2397
- spaceFail = spaceId && !results[0];
2398
- roomFail = roomId && !results[1];
2546
+ results = _context8.sent;
2547
+ spaceFail = location.spaceId && !results[0];
2548
+ roomFail = location.roomId && !results[1];
2399
2549
  if (!(spaceFail || roomFail)) {
2400
- _context7.next = 8;
2550
+ _context8.next = 8;
2401
2551
  break;
2402
2552
  }
2403
- layer = spaceFail ? "space (".concat(spaceId, ")") : "room (".concat(roomId, ")");
2553
+ layer = spaceFail ? "space (".concat(location.spaceId, ")") : "room (".concat(location.roomId, ")");
2404
2554
  throw new Error("Attempting to calculate permissions for a ".concat(layer, " that the user does not belong to"));
2405
2555
  case 8:
2406
- return _context7.abrupt("return", results);
2556
+ return _context8.abrupt("return", results);
2407
2557
  case 9:
2408
2558
  case "end":
2409
- return _context7.stop();
2559
+ return _context8.stop();
2410
2560
  }
2411
2561
  }
2412
- }, _callee7, this);
2562
+ }, _callee8, this);
2413
2563
  }));
2414
- function fetchMembersOrFail(_x18, _x19) {
2564
+ function fetchMembersOrFail(_x12) {
2415
2565
  return _fetchMembersOrFail.apply(this, arguments);
2416
2566
  }
2417
2567
  return fetchMembersOrFail;
2418
2568
  }()
2569
+ }, {
2570
+ key: "validateLocation",
2571
+ value: function validateLocation(location) {
2572
+ if (location.topicId && !location.roomId || !location.spaceId && !location.roomId && !location.topicId) {
2573
+ throw new Error('Corrupted arguments hierarchy');
2574
+ }
2575
+ }
2419
2576
  }]);
2420
2577
  return PermissionsManager;
2421
2578
  }(EventTarget);
@@ -2436,24 +2593,24 @@ function ChatStateTracker_toPrimitive(input, hint) { if (ChatStateTracker_typeof
2436
2593
 
2437
2594
  var ChatStateTracker = /*#__PURE__*/function () {
2438
2595
  /**
2439
- * State of the rooms you are in.
2596
+ * State of your permissions.
2440
2597
  */
2441
2598
 
2442
2599
  /**
2443
- * State of the spaces you are in.
2600
+ * State of the rooms you are in.
2444
2601
  */
2445
2602
 
2446
2603
  /**
2447
- * State of your permissions.
2604
+ * State of the spaces you are in.
2448
2605
  */
2449
2606
 
2450
2607
  function ChatStateTracker(client) {
2451
2608
  var _this = this;
2452
2609
  ChatStateTracker_classCallCheck(this, ChatStateTracker);
2453
2610
  this.client = client;
2611
+ ChatStateTracker_defineProperty(this, "permissions", new PermissionsManager(this));
2454
2612
  ChatStateTracker_defineProperty(this, "rooms", new RoomsManager(this));
2455
2613
  ChatStateTracker_defineProperty(this, "spaces", new SpacesManager(this));
2456
- ChatStateTracker_defineProperty(this, "permissions", new PermissionsManager(this));
2457
2614
  ChatStateTracker_defineProperty(this, "_me", null);
2458
2615
  ChatStateTracker_defineProperty(this, "deferredSession", new DeferredTask());
2459
2616
  this.client.on('Session', function (ev) {