polfan-server-js-client 0.2.48 → 0.2.50

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 (31) hide show
  1. package/.idea/workspace.xml +53 -49
  2. package/build/index.cjs.js +68 -5
  3. package/build/index.cjs.js.map +1 -1
  4. package/build/index.umd.js +1 -1
  5. package/build/index.umd.js.map +1 -1
  6. package/build/types/AbstractChatClient.d.ts +2 -1
  7. package/build/types/state-tracker/RoomMessagesHistory.d.ts +2 -0
  8. package/build/types/state-tracker/SpacesManager.d.ts +1 -0
  9. package/build/types/state-tracker/TopicHistoryWindow.d.ts +6 -0
  10. package/build/types/types/src/index.d.ts +4 -2
  11. package/build/types/types/src/schemes/Message.d.ts +1 -1
  12. package/build/types/types/src/schemes/Room.d.ts +2 -0
  13. package/build/types/types/src/schemes/RoomHistory.d.ts +5 -0
  14. package/build/types/types/src/schemes/RoomSummary.d.ts +1 -0
  15. package/build/types/types/src/schemes/commands/CreateTopic.d.ts +5 -2
  16. package/build/types/types/src/schemes/commands/UpdateRoom.d.ts +2 -0
  17. package/build/types/types/src/schemes/events/RoomSummaryUpdated.d.ts +7 -0
  18. package/package.json +1 -1
  19. package/src/AbstractChatClient.ts +17 -2
  20. package/src/state-tracker/MessagesManager.ts +2 -3
  21. package/src/state-tracker/RoomMessagesHistory.ts +20 -3
  22. package/src/state-tracker/SpacesManager.ts +28 -1
  23. package/src/state-tracker/TopicHistoryWindow.ts +35 -0
  24. package/src/types/src/index.ts +9 -3
  25. package/src/types/src/schemes/Message.ts +1 -1
  26. package/src/types/src/schemes/Room.ts +2 -0
  27. package/src/types/src/schemes/RoomHistory.ts +6 -0
  28. package/src/types/src/schemes/RoomSummary.ts +1 -0
  29. package/src/types/src/schemes/commands/CreateTopic.ts +6 -2
  30. package/src/types/src/schemes/commands/UpdateRoom.ts +2 -0
  31. package/src/types/src/schemes/events/RoomSummaryUpdated.ts +8 -0
@@ -4,7 +4,10 @@
4
4
  <option name="autoReloadType" value="SELECTIVE" />
5
5
  </component>
6
6
  <component name="ChangeListManager">
7
- <list default="true" id="831dae43-0da1-47fd-a5f7-33dd5eec2992" name="Changes" comment="Fix a relationship type" />
7
+ <list default="true" id="831dae43-0da1-47fd-a5f7-33dd5eec2992" name="Changes" comment="RoomSummaryUpdated event support">
8
+ <change beforePath="$PROJECT_DIR$/src/state-tracker/RoomMessagesHistory.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/state-tracker/RoomMessagesHistory.ts" afterDir="false" />
9
+ <change beforePath="$PROJECT_DIR$/src/state-tracker/TopicHistoryWindow.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/state-tracker/TopicHistoryWindow.ts" afterDir="false" />
10
+ </list>
8
11
  <option name="SHOW_DIALOG" value="false" />
9
12
  <option name="HIGHLIGHT_CONFLICTS" value="true" />
10
13
  <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
@@ -121,47 +124,8 @@
121
124
  <workItem from="1752834023436" duration="2601000" />
122
125
  <workItem from="1753062168800" duration="4938000" />
123
126
  <workItem from="1753441064452" duration="1184000" />
124
- <workItem from="1753954931871" duration="10013000" />
125
- </task>
126
- <task id="LOCAL-00002" summary="Emoticons objects">
127
- <option name="closed" value="true" />
128
- <created>1738000310264</created>
129
- <option name="number" value="00002" />
130
- <option name="presentableId" value="LOCAL-00002" />
131
- <option name="project" value="LOCAL" />
132
- <updated>1738000310264</updated>
133
- </task>
134
- <task id="LOCAL-00003" summary="Emoticons support">
135
- <option name="closed" value="true" />
136
- <created>1738002489324</created>
137
- <option name="number" value="00003" />
138
- <option name="presentableId" value="LOCAL-00003" />
139
- <option name="project" value="LOCAL" />
140
- <updated>1738002489324</updated>
141
- </task>
142
- <task id="LOCAL-00004" summary="Emoticons support">
143
- <option name="closed" value="true" />
144
- <created>1738002764971</created>
145
- <option name="number" value="00004" />
146
- <option name="presentableId" value="LOCAL-00004" />
147
- <option name="project" value="LOCAL" />
148
- <updated>1738002764971</updated>
149
- </task>
150
- <task id="LOCAL-00005" summary="Emoticons support">
151
- <option name="closed" value="true" />
152
- <created>1738002769540</created>
153
- <option name="number" value="00005" />
154
- <option name="presentableId" value="LOCAL-00005" />
155
- <option name="project" value="LOCAL" />
156
- <updated>1738002769540</updated>
157
- </task>
158
- <task id="LOCAL-00006" summary="Emoticons support">
159
- <option name="closed" value="true" />
160
- <created>1738002772620</created>
161
- <option name="number" value="00006" />
162
- <option name="presentableId" value="LOCAL-00006" />
163
- <option name="project" value="LOCAL" />
164
- <updated>1738002772620</updated>
127
+ <workItem from="1753954931871" duration="14805000" />
128
+ <workItem from="1754567895893" duration="4461000" />
165
129
  </task>
166
130
  <task id="LOCAL-00007" summary="Emoticons support">
167
131
  <option name="closed" value="true" />
@@ -515,7 +479,47 @@
515
479
  <option name="project" value="LOCAL" />
516
480
  <updated>1754173777653</updated>
517
481
  </task>
518
- <option name="localTasksCounter" value="51" />
482
+ <task id="LOCAL-00051" summary="Fix mutationCounter doesn't increment on delete">
483
+ <option name="closed" value="true" />
484
+ <created>1754176233412</created>
485
+ <option name="number" value="00051" />
486
+ <option name="presentableId" value="LOCAL-00051" />
487
+ <option name="project" value="LOCAL" />
488
+ <updated>1754176233412</updated>
489
+ </task>
490
+ <task id="LOCAL-00052" summary="Changes in chat protocol and schemes">
491
+ <option name="closed" value="true" />
492
+ <created>1754249755333</created>
493
+ <option name="number" value="00052" />
494
+ <option name="presentableId" value="LOCAL-00052" />
495
+ <option name="project" value="LOCAL" />
496
+ <updated>1754249755333</updated>
497
+ </task>
498
+ <task id="LOCAL-00053" summary="New member count field in RoomSummary">
499
+ <option name="closed" value="true" />
500
+ <created>1754319172537</created>
501
+ <option name="number" value="00053" />
502
+ <option name="presentableId" value="LOCAL-00053" />
503
+ <option name="project" value="LOCAL" />
504
+ <updated>1754319172537</updated>
505
+ </task>
506
+ <task id="LOCAL-00054" summary="Version bump">
507
+ <option name="closed" value="true" />
508
+ <created>1754567912510</created>
509
+ <option name="number" value="00054" />
510
+ <option name="presentableId" value="LOCAL-00054" />
511
+ <option name="project" value="LOCAL" />
512
+ <updated>1754567912510</updated>
513
+ </task>
514
+ <task id="LOCAL-00055" summary="RoomSummaryUpdated event support">
515
+ <option name="closed" value="true" />
516
+ <created>1754568882637</created>
517
+ <option name="number" value="00055" />
518
+ <option name="presentableId" value="LOCAL-00055" />
519
+ <option name="project" value="LOCAL" />
520
+ <updated>1754568882638</updated>
521
+ </task>
522
+ <option name="localTasksCounter" value="56" />
519
523
  <servers />
520
524
  </component>
521
525
  <component name="TypeScriptGeneratedFilesManager">
@@ -533,11 +537,6 @@
533
537
  </option>
534
538
  </component>
535
539
  <component name="VcsManagerConfiguration">
536
- <MESSAGE value="Restore support for nullable parameter in permission overwrites id function" />
537
- <MESSAGE value="Bans support" />
538
- <MESSAGE value="New scheme of Bye event" />
539
- <MESSAGE value="Fix authentication" />
540
- <MESSAGE value="Add notify option to Kick command" />
541
540
  <MESSAGE value="UsersManager" />
542
541
  <MESSAGE value="Client data and room stream support" />
543
542
  <MESSAGE value="New collections mutationCounter property and map method remove" />
@@ -558,6 +557,11 @@
558
557
  <MESSAGE value="Relationships support" />
559
558
  <MESSAGE value="Update a relationship scheme" />
560
559
  <MESSAGE value="Fix a relationship type" />
561
- <option name="LAST_COMMIT_MESSAGE" value="Fix a relationship type" />
560
+ <MESSAGE value="Fix mutationCounter doesn't increment on delete" />
561
+ <MESSAGE value="Changes in chat protocol and schemes" />
562
+ <MESSAGE value="New member count field in RoomSummary" />
563
+ <MESSAGE value="Version bump" />
564
+ <MESSAGE value="RoomSummaryUpdated event support" />
565
+ <option name="LAST_COMMIT_MESSAGE" value="RoomSummaryUpdated event support" />
562
566
  </component>
563
567
  </project>
@@ -536,9 +536,37 @@ class TopicHistoryWindow extends TraversableRemoteCollection {
536
536
  * Reexported available window modes enum.
537
537
  */
538
538
  TopicHistoryWindow_defineProperty(this, "WindowState", WindowState);
539
+ TopicHistoryWindow_defineProperty(this, "traverseLock", false);
539
540
  this.tracker.client.on('Session', ev => this.handleSession(ev));
540
541
  this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));
541
542
  }
543
+ get isTraverseLocked() {
544
+ return this.traverseLock;
545
+ }
546
+ async setTraverseLock(lock) {
547
+ this.traverseLock = lock;
548
+ if (lock && this.state !== WindowState.LIVE && this.state !== WindowState.LATEST) {
549
+ await super.resetToLatest();
550
+ }
551
+ }
552
+ async resetToLatest() {
553
+ if (this.traverseLock) {
554
+ return;
555
+ }
556
+ return super.resetToLatest();
557
+ }
558
+ async fetchNext() {
559
+ if (this.traverseLock) {
560
+ return;
561
+ }
562
+ return super.fetchNext();
563
+ }
564
+ async fetchPrevious() {
565
+ if (this.traverseLock) {
566
+ return;
567
+ }
568
+ return super.fetchPrevious();
569
+ }
542
570
 
543
571
  /**
544
572
  * For internal use.
@@ -637,9 +665,11 @@ class RoomMessagesHistory {
637
665
  this.room = room;
638
666
  this.tracker = tracker;
639
667
  RoomMessagesHistory_defineProperty(this, "historyWindows", new IndexedCollection());
668
+ RoomMessagesHistory_defineProperty(this, "traverseLock", false);
640
669
  this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));
641
670
  this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));
642
671
  this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));
672
+ this.updateTraverseLock(this.room);
643
673
  if (this.room.defaultTopic) {
644
674
  this.createHistoryWindowForTopic(this.room.defaultTopic);
645
675
  }
@@ -658,12 +688,16 @@ class RoomMessagesHistory {
658
688
  }
659
689
  return this.historyWindows.get(topicId);
660
690
  }
661
- handleRoomUpdated(ev) {
691
+ async handleRoomUpdated(ev) {
662
692
  if (this.room.id === ev.room.id) {
663
693
  this.room = ev.room;
694
+ this.updateTraverseLock(ev.room);
664
695
  if (ev.room.defaultTopic) {
665
696
  this.createHistoryWindowForTopic(ev.room.defaultTopic);
666
697
  }
698
+ for (const [, window] of Array.from(this.historyWindows.items)) {
699
+ await window.setTraverseLock(this.traverseLock);
700
+ }
667
701
  }
668
702
  }
669
703
  handleNewTopic(ev) {
@@ -680,7 +714,9 @@ class RoomMessagesHistory {
680
714
  if (this.historyWindows.has(topic.id)) {
681
715
  return;
682
716
  }
683
- this.historyWindows.set([topic.id, new TopicHistoryWindow(this.room.id, topic.id, this.tracker)]);
717
+ const historyWindow = new TopicHistoryWindow(this.room.id, topic.id, this.tracker);
718
+ historyWindow.setTraverseLock(this.traverseLock);
719
+ this.historyWindows.set([topic.id, historyWindow]);
684
720
 
685
721
  // If new topic refers to some message from this room, update other structures
686
722
  if (topic.refMessage) {
@@ -688,6 +724,9 @@ class RoomMessagesHistory {
688
724
  refHistoryWindow?._updateMessageReference(topic);
689
725
  }
690
726
  }
727
+ updateTraverseLock(room) {
728
+ this.traverseLock = room.history.mode === 'Ephemeral';
729
+ }
691
730
  }
692
731
  ;// CONCATENATED MODULE: ./src/state-tracker/MessagesManager.ts
693
732
  function MessagesManager_defineProperty(obj, key, value) { key = MessagesManager_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -869,9 +908,8 @@ class MessagesManager {
869
908
  updateLocallyFollowedTopicOnNewMessage(ev) {
870
909
  const roomFollowedTopics = this.followedTopics.get(ev.message.location.roomId);
871
910
  const followedTopic = roomFollowedTopics?.get(ev.message.location.topicId);
872
- const ephemeralMessageTypes = ['System'];
873
- if (!roomFollowedTopics || !followedTopic || ephemeralMessageTypes.includes(ev.message.type)) {
874
- // Skip if we don't follow this room or targeted topic or message is ephemeral
911
+ if (!roomFollowedTopics || !followedTopic || ev.message.type === 'Ephemeral') {
912
+ // Skip if we don't follow this room or targeted topic or the message is ephemeral
875
913
  return;
876
914
  }
877
915
  const isMe = ev.message.author.user.id === this.tracker.me?.id;
@@ -1255,6 +1293,7 @@ class SpacesManager {
1255
1293
  this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));
1256
1294
  this.tracker.client.on('SpaceMembers', ev => this.handleSpaceMembers(ev));
1257
1295
  this.tracker.client.on('SpaceRooms', ev => this.handleSpaceRooms(ev));
1296
+ this.tracker.client.on('RoomSummaryUpdated', ev => this.handleRoomSummaryUpdated(ev));
1258
1297
  this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));
1259
1298
  this.tracker.client.on('UserUpdated', ev => this.handleUserUpdated(ev));
1260
1299
  this.tracker.client.on('NewRole', ev => this.handleNewRole(ev));
@@ -1415,6 +1454,30 @@ class SpacesManager {
1415
1454
  ev.summaries.forEach(summary => this.roomIdToSpaceId.set([summary.id, ev.id]));
1416
1455
  }
1417
1456
  }
1457
+ async handleRoomSummaryUpdated(ev) {
1458
+ const spaceId = this.roomIdToSpaceId.get(ev.summary.id);
1459
+ const summariesPromise = this.roomsPromises.get(spaceId);
1460
+
1461
+ /**
1462
+ * Update summary only if the list was already loaded.
1463
+ * RoomSummaryUpdated event has a partial summary, so we need to update the existing summary by merging it.
1464
+ */
1465
+ if (spaceId && summariesPromise) {
1466
+ await summariesPromise;
1467
+ const summaries = this.rooms.get(spaceId);
1468
+ const oldSummary = summaries.get(ev.summary.id);
1469
+ let newSummary;
1470
+ if (oldSummary) {
1471
+ newSummary = {
1472
+ ...oldSummary,
1473
+ ...ev.summary
1474
+ };
1475
+ } else {
1476
+ newSummary = ev.summary;
1477
+ }
1478
+ summaries.set(newSummary);
1479
+ }
1480
+ }
1418
1481
  handleSpaceMemberUpdated(ev) {
1419
1482
  if (this.members.has(ev.spaceId)) {
1420
1483
  const members = this.members.get(ev.spaceId);