polfan-server-js-client 0.1.91 → 0.1.92

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 (51) hide show
  1. package/build/index.js +123 -84
  2. package/build/index.js.map +1 -1
  3. package/build/types/AbstractChatClient.d.ts +14 -4
  4. package/build/types/state-tracker/MessagesManager.d.ts +15 -9
  5. package/build/types/types/dist/schemes/FollowedTopic.d.ts +1 -0
  6. package/build/types/types/dist/schemes/commands/FollowTopic.d.ts +1 -0
  7. package/build/types/types/dist/schemes/commands/GetFollowedTopics.d.ts +1 -0
  8. package/build/types/types/dist/schemes/commands/UnfollowTopic.d.ts +1 -0
  9. package/build/types/types/dist/schemes/events/FollowedTopics.d.ts +1 -0
  10. package/build/types/types/dist/schemes/events/TopicFollowed.d.ts +1 -0
  11. package/build/types/types/dist/schemes/events/TopicUnfollowed.d.ts +1 -0
  12. package/build/types/types/src/index.d.ts +8 -4
  13. package/build/types/types/src/schemes/FollowedTopic.d.ts +7 -0
  14. package/build/types/types/src/schemes/commands/{GetAckReports.d.ts → FollowTopic.d.ts} +1 -1
  15. package/build/types/types/src/schemes/commands/GetFollowedTopics.d.ts +4 -0
  16. package/build/types/types/src/schemes/commands/UnfollowTopic.d.ts +4 -0
  17. package/build/types/types/src/schemes/events/FollowedTopics.d.ts +4 -0
  18. package/build/types/types/src/schemes/events/TopicFollowed.d.ts +4 -0
  19. package/build/types/types/src/schemes/events/TopicUnfollowed.d.ts +4 -0
  20. package/package.json +1 -1
  21. package/src/AbstractChatClient.ts +13 -5
  22. package/src/state-tracker/MessagesManager.ts +94 -52
  23. package/src/types/dist/index.d.ts +9 -4
  24. package/src/types/dist/schemes/FollowedTopic.d.ts +7 -0
  25. package/src/types/dist/schemes/FollowedTopic.js +2 -0
  26. package/src/types/dist/schemes/commands/CreateTopic.d.ts +2 -2
  27. package/src/types/dist/schemes/commands/FollowTopic.d.ts +4 -0
  28. package/src/types/dist/schemes/commands/FollowTopic.js +2 -0
  29. package/src/types/dist/schemes/commands/GetFollowedTopics.d.ts +4 -0
  30. package/src/types/dist/schemes/commands/GetFollowedTopics.js +2 -0
  31. package/src/types/dist/schemes/commands/UnfollowTopic.d.ts +4 -0
  32. package/src/types/dist/schemes/commands/UnfollowTopic.js +2 -0
  33. package/src/types/dist/schemes/events/AckReports.d.ts +2 -2
  34. package/src/types/dist/schemes/events/FollowedTopics.d.ts +4 -0
  35. package/src/types/dist/schemes/events/FollowedTopics.js +2 -0
  36. package/src/types/dist/schemes/events/TopicFollowed.d.ts +4 -0
  37. package/src/types/dist/schemes/events/TopicFollowed.js +2 -0
  38. package/src/types/dist/schemes/events/TopicUnfollowed.d.ts +4 -0
  39. package/src/types/dist/schemes/events/TopicUnfollowed.js +2 -0
  40. package/src/types/src/index.ts +14 -6
  41. package/src/types/src/schemes/FollowedTopic.ts +8 -0
  42. package/src/types/src/schemes/commands/{GetAckReports.ts → FollowTopic.ts} +1 -1
  43. package/src/types/src/schemes/commands/GetFollowedTopics.ts +5 -0
  44. package/src/types/src/schemes/commands/UnfollowTopic.ts +5 -0
  45. package/src/types/src/schemes/events/FollowedTopics.ts +5 -0
  46. package/src/types/src/schemes/events/TopicFollowed.ts +5 -0
  47. package/src/types/src/schemes/events/TopicUnfollowed.ts +5 -0
  48. package/build/types/types/src/schemes/AckReport.d.ts +0 -7
  49. package/build/types/types/src/schemes/events/AckReports.d.ts +0 -4
  50. package/src/types/src/schemes/AckReport.ts +0 -7
  51. package/src/types/src/schemes/events/AckReports.ts +0 -5
package/build/index.js CHANGED
@@ -653,12 +653,27 @@ var MessagesManager = /*#__PURE__*/function () {
653
653
  MessagesManager_classCallCheck(this, MessagesManager);
654
654
  this.tracker = tracker;
655
655
  MessagesManager_defineProperty(this, "list", new IndexedCollection());
656
- MessagesManager_defineProperty(this, "acks", new IndexedCollection());
656
+ MessagesManager_defineProperty(this, "followedTopics", new IndexedCollection());
657
657
  this.tracker.client.on('NewMessage', function (ev) {
658
658
  return _this.handleNewMessage(ev);
659
659
  });
660
- this.tracker.client.on('AckReports', function (ev) {
661
- return _this.handleAckReports(ev);
660
+ this.tracker.client.on('FollowedTopics', function (ev) {
661
+ return _this.handleFollowedTopics(ev);
662
+ });
663
+ this.tracker.client.on('TopicFollowed', function (ev) {
664
+ return _this.handleTopicFollowed(ev);
665
+ });
666
+ this.tracker.client.on('TopicUnfollowed', function (ev) {
667
+ return _this.handleTopicUnfollowed(ev);
668
+ });
669
+ this.tracker.client.on('RoomDeleted', function (ev) {
670
+ return _this.handleRoomDeleted(ev);
671
+ });
672
+ this.tracker.client.on('RoomLeft', function (ev) {
673
+ return _this.handleRoomLeft(ev);
674
+ });
675
+ this.tracker.client.on('TopicDeleted', function (ev) {
676
+ return _this.handleTopicDeleted(ev);
662
677
  });
663
678
  }
664
679
 
@@ -688,15 +703,14 @@ var MessagesManager = /*#__PURE__*/function () {
688
703
  }()
689
704
  /**
690
705
  * Cache ack reports for all joined rooms in a space and fetch them in bulk if necessary.
691
- * Then you can get the reports using getRoomAckReports().
692
- * @see getRoomAckReports
706
+ * Then you can get the reports using getRoomFollowedTopics().
707
+ * @see getRoomFollowedTopics
693
708
  */
694
709
  }, {
695
- key: "cacheSpaceAckReports",
710
+ key: "cacheSpaceFollowedTopic",
696
711
  value: function () {
697
- var _cacheSpaceAckReports = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(spaceId) {
698
- var _this2 = this;
699
- var roomIds, missingRoomIds, result;
712
+ var _cacheSpaceFollowedTopic = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(spaceId) {
713
+ var result;
700
714
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
701
715
  while (1) {
702
716
  switch (_context2.prev = _context2.next) {
@@ -711,59 +725,41 @@ var MessagesManager = /*#__PURE__*/function () {
711
725
  throw new Error("You are not in space ".concat(spaceId));
712
726
  case 4:
713
727
  _context2.next = 6;
714
- return this.tracker.rooms.get();
715
- case 6:
716
- roomIds = _context2.sent.findBy('spaceId', spaceId).map(function (room) {
717
- return room.id;
718
- });
719
- missingRoomIds = roomIds.filter(function (roomId) {
720
- return !_this2.acks.has(roomId);
721
- });
722
- if (!missingRoomIds.length) {
723
- _context2.next = 15;
724
- break;
725
- }
726
- _context2.next = 11;
727
- return this.tracker.client.send('GetAckReports', {
728
+ return this.tracker.client.send('GetFollowedTopics', {
728
729
  location: {
729
730
  spaceId: spaceId
730
731
  }
731
732
  });
732
- case 11:
733
+ case 6:
733
734
  result = _context2.sent;
734
735
  if (!result.error) {
735
- _context2.next = 14;
736
+ _context2.next = 9;
736
737
  break;
737
738
  }
738
739
  throw result.error;
739
- case 14:
740
- missingRoomIds.forEach(function (roomId) {
741
- var reports = result.data.reports.filter(function (report) {
742
- return report.roomId === roomId;
743
- });
744
- _this2.acks.set([roomId, new ObservableIndexedObjectCollection('topicId', reports)]);
745
- });
746
- case 15:
740
+ case 9:
741
+ this.setFollowedTopicsArray(result.data.followedTopics);
742
+ case 10:
747
743
  case "end":
748
744
  return _context2.stop();
749
745
  }
750
746
  }
751
747
  }, _callee2, this);
752
748
  }));
753
- function cacheSpaceAckReports(_x2) {
754
- return _cacheSpaceAckReports.apply(this, arguments);
749
+ function cacheSpaceFollowedTopic(_x2) {
750
+ return _cacheSpaceFollowedTopic.apply(this, arguments);
755
751
  }
756
- return cacheSpaceAckReports;
752
+ return cacheSpaceFollowedTopic;
757
753
  }()
758
754
  /**
759
755
  * Get ack reports for the given room. Undefined if you are not in the room.
760
756
  * @param roomId
761
757
  */
762
758
  }, {
763
- key: "getRoomAckReports",
759
+ key: "getRoomFollowedTopics",
764
760
  value: function () {
765
- var _getRoomAckReports = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(roomId) {
766
- var room, result;
761
+ var _getRoomFollowedTopics = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(roomId) {
762
+ var result;
767
763
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
768
764
  while (1) {
769
765
  switch (_context3.prev = _context3.next) {
@@ -771,45 +767,44 @@ var MessagesManager = /*#__PURE__*/function () {
771
767
  _context3.next = 2;
772
768
  return this.tracker.rooms.get();
773
769
  case 2:
774
- room = _context3.sent.get(roomId);
775
- if (room) {
776
- _context3.next = 5;
770
+ if (_context3.sent.has(roomId)) {
771
+ _context3.next = 4;
777
772
  break;
778
773
  }
779
774
  return _context3.abrupt("return", undefined);
780
- case 5:
781
- if (this.acks.has(roomId)) {
782
- _context3.next = 12;
775
+ case 4:
776
+ if (this.followedTopics.has(roomId)) {
777
+ _context3.next = 11;
783
778
  break;
784
779
  }
785
- _context3.next = 8;
786
- return this.tracker.client.send('GetAckReports', {
780
+ _context3.next = 7;
781
+ return this.tracker.client.send('GetFollowedTopics', {
787
782
  location: {
788
783
  roomId: roomId
789
784
  }
790
785
  });
791
- case 8:
786
+ case 7:
792
787
  result = _context3.sent;
793
788
  if (!result.error) {
794
- _context3.next = 11;
789
+ _context3.next = 10;
795
790
  break;
796
791
  }
797
792
  throw result.error;
793
+ case 10:
794
+ this.setFollowedTopicsArray(result.data.followedTopics);
798
795
  case 11:
799
- this.acks.set([roomId, new ObservableIndexedObjectCollection('topicId', result.data.reports)]);
796
+ return _context3.abrupt("return", this.followedTopics.get(roomId));
800
797
  case 12:
801
- return _context3.abrupt("return", this.acks.get(roomId));
802
- case 13:
803
798
  case "end":
804
799
  return _context3.stop();
805
800
  }
806
801
  }
807
802
  }, _callee3, this);
808
803
  }));
809
- function getRoomAckReports(_x3) {
810
- return _getRoomAckReports.apply(this, arguments);
804
+ function getRoomFollowedTopics(_x3) {
805
+ return _getRoomFollowedTopics.apply(this, arguments);
811
806
  }
812
- return getRoomAckReports;
807
+ return getRoomFollowedTopics;
813
808
  }()
814
809
  /**
815
810
  * For internal use. If you want to delete the message, execute a proper command on client object.
@@ -818,7 +813,7 @@ var MessagesManager = /*#__PURE__*/function () {
818
813
  }, {
819
814
  key: "_deleteByTopicIds",
820
815
  value: function _deleteByTopicIds(roomId) {
821
- var _this$list, _this$acks$get;
816
+ var _this$list, _this$followedTopics$;
822
817
  for (var _len = arguments.length, topicIds = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
823
818
  topicIds[_key - 1] = arguments[_key];
824
819
  }
@@ -828,7 +823,7 @@ var MessagesManager = /*#__PURE__*/function () {
828
823
  topicId: topicId
829
824
  });
830
825
  })));
831
- (_this$acks$get = this.acks.get(roomId)) === null || _this$acks$get === void 0 ? void 0 : _this$acks$get["delete"].apply(_this$acks$get, topicIds);
826
+ (_this$followedTopics$ = this.followedTopics.get(roomId)) === null || _this$followedTopics$ === void 0 ? void 0 : _this$followedTopics$["delete"].apply(_this$followedTopics$, topicIds);
832
827
  }
833
828
 
834
829
  /**
@@ -865,55 +860,51 @@ var MessagesManager = /*#__PURE__*/function () {
865
860
  }
866
861
  }
867
862
  }
868
- this.createAckReportsForNewTopics(roomId, newTopics);
863
+ this.createFollowedStructuresForNewTopics(roomId, newTopics);
869
864
  }
870
865
  }, {
871
866
  key: "handleNewMessage",
872
867
  value: function handleNewMessage(ev) {
873
868
  this.list.get(getCombinedId(ev.location)).set(ev.message);
874
- this.updateLocallyAckReportOnNewMessage(ev);
869
+ this.updateLocallyFollowedTopicOnNewMessage(ev);
875
870
  }
876
871
  }, {
877
- key: "handleAckReports",
878
- value: function handleAckReports(ev) {
879
- var _this3 = this;
880
- ev.reports.forEach(function (report) {
881
- var ackReports = _this3.acks.get(report.roomId);
882
- if (ackReports) {
883
- ackReports.set(report);
884
- }
885
- });
872
+ key: "handleFollowedTopics",
873
+ value: function handleFollowedTopics(ev) {
874
+ this.setFollowedTopicsArray(ev.followedTopics);
886
875
  }
887
876
  }, {
888
- key: "createAckReportsForNewTopics",
889
- value: function createAckReportsForNewTopics(roomId, topics) {
890
- var ackReports = this.acks.get(roomId);
891
- if (!ackReports) {
877
+ key: "createFollowedStructuresForNewTopics",
878
+ value: function createFollowedStructuresForNewTopics(roomId, topics) {
879
+ var followedTopic = this.followedTopics.get(roomId);
880
+ if (!followedTopic) {
892
881
  // If we don't follow ack reports for this room, skip
893
882
  return;
894
883
  }
895
- var newReports = topics.map(function (topic) {
884
+ var followedTopics = topics.map(function (topic) {
896
885
  return {
897
- roomId: roomId,
898
- topicId: topic.id,
886
+ location: {
887
+ roomId: roomId,
888
+ topicId: topic.id
889
+ },
899
890
  lastAckMessageId: null,
900
891
  missed: 0,
901
892
  missedMoreThan: null
902
893
  };
903
894
  });
904
- ackReports.set.apply(ackReports, MessagesManager_toConsumableArray(newReports));
895
+ followedTopic.set.apply(followedTopic, MessagesManager_toConsumableArray(followedTopics));
905
896
  }
906
897
  }, {
907
- key: "updateLocallyAckReportOnNewMessage",
908
- value: function updateLocallyAckReportOnNewMessage(ev) {
898
+ key: "updateLocallyFollowedTopicOnNewMessage",
899
+ value: function updateLocallyFollowedTopicOnNewMessage(ev) {
909
900
  var _this$tracker$me;
910
- var ackReports = this.acks.get(ev.location.roomId);
911
- if (!ackReports) {
901
+ var followedTopic = this.followedTopics.get(ev.location.roomId);
902
+ if (!followedTopic) {
912
903
  // If we don't follow ack reports for this room, skip
913
904
  return;
914
905
  }
915
906
  var isMe = ev.message.author.id === ((_this$tracker$me = this.tracker.me) === null || _this$tracker$me === void 0 ? void 0 : _this$tracker$me.id);
916
- var currentAckReport = ackReports.get(ev.location.topicId);
907
+ var currentFollowedTopic = followedTopic.get(ev.location.topicId);
917
908
  var update;
918
909
  if (isMe) {
919
910
  // Reset missed messages count if new message is authored by me
@@ -925,11 +916,59 @@ var MessagesManager = /*#__PURE__*/function () {
925
916
  } else {
926
917
  // ...add 1 otherwise
927
918
  update = {
928
- missed: currentAckReport.missed === null ? null : currentAckReport.missed + 1,
929
- missedMoreThan: currentAckReport.missedMoreThan === null ? null : currentAckReport.missedMoreThan
919
+ missed: currentFollowedTopic.missed === null ? null : currentFollowedTopic.missed + 1,
920
+ missedMoreThan: currentFollowedTopic.missedMoreThan === null ? null : currentFollowedTopic.missedMoreThan
930
921
  };
931
922
  }
932
- ackReports.set(_objectSpread(_objectSpread({}, currentAckReport), update));
923
+ followedTopic.set(_objectSpread(_objectSpread({}, currentFollowedTopic), update));
924
+ }
925
+ }, {
926
+ key: "handleTopicFollowed",
927
+ value: function handleTopicFollowed(ev) {
928
+ this.setFollowedTopicsArray([ev.followedTopic]);
929
+ }
930
+ }, {
931
+ key: "handleTopicUnfollowed",
932
+ value: function handleTopicUnfollowed(ev) {
933
+ var _this$followedTopics$2;
934
+ (_this$followedTopics$2 = this.followedTopics.get(ev.location.roomId)) === null || _this$followedTopics$2 === void 0 ? void 0 : _this$followedTopics$2["delete"](ev.location.topicId);
935
+ }
936
+ }, {
937
+ key: "handleRoomDeleted",
938
+ value: function handleRoomDeleted(ev) {
939
+ this.followedTopics["delete"](ev.id);
940
+ }
941
+ }, {
942
+ key: "handleRoomLeft",
943
+ value: function handleRoomLeft(ev) {
944
+ this.followedTopics["delete"](ev.id);
945
+ }
946
+ }, {
947
+ key: "handleTopicDeleted",
948
+ value: function handleTopicDeleted(ev) {
949
+ var _this$followedTopics$3;
950
+ (_this$followedTopics$3 = this.followedTopics.get(ev.location.roomId)) === null || _this$followedTopics$3 === void 0 ? void 0 : _this$followedTopics$3["delete"](ev.location.topicId);
951
+ }
952
+ }, {
953
+ key: "setFollowedTopicsArray",
954
+ value: function setFollowedTopicsArray(followedTopics) {
955
+ var roomToTopics = {};
956
+
957
+ // Reassign reports to limit collection change event emit
958
+ followedTopics.forEach(function (followedTopic) {
959
+ var _followedTopic$locati, _roomToTopics$_follow;
960
+ (_roomToTopics$_follow = roomToTopics[_followedTopic$locati = followedTopic.location.roomId]) !== null && _roomToTopics$_follow !== void 0 ? _roomToTopics$_follow : roomToTopics[_followedTopic$locati] = [];
961
+ roomToTopics[followedTopic.location.roomId].push(followedTopic);
962
+ });
963
+ for (var _roomId in roomToTopics) {
964
+ var _this$followedTopics$4;
965
+ if (!this.followedTopics.has(_roomId)) {
966
+ this.followedTopics.set([_roomId, new ObservableIndexedObjectCollection(function (report) {
967
+ return report.location.topicId;
968
+ })]);
969
+ }
970
+ (_this$followedTopics$4 = this.followedTopics.get(_roomId)).set.apply(_this$followedTopics$4, MessagesManager_toConsumableArray(roomToTopics[_roomId]));
971
+ }
933
972
  }
934
973
  }]);
935
974
  return MessagesManager;