matrix-js-sdk 37.2.0 → 37.3.0-rc.0

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 (83) hide show
  1. package/git-revision.txt +1 -1
  2. package/lib/client.d.ts +8 -2
  3. package/lib/client.d.ts.map +1 -1
  4. package/lib/client.js +11 -3
  5. package/lib/client.js.map +1 -1
  6. package/lib/common-crypto/CryptoBackend.d.ts +8 -0
  7. package/lib/common-crypto/CryptoBackend.d.ts.map +1 -1
  8. package/lib/common-crypto/CryptoBackend.js.map +1 -1
  9. package/lib/http-api/errors.d.ts +8 -0
  10. package/lib/http-api/errors.d.ts.map +1 -1
  11. package/lib/http-api/errors.js +14 -0
  12. package/lib/http-api/errors.js.map +1 -1
  13. package/lib/http-api/fetch.d.ts.map +1 -1
  14. package/lib/http-api/fetch.js +3 -3
  15. package/lib/http-api/fetch.js.map +1 -1
  16. package/lib/matrixrtc/LegacyMembershipManager.d.ts +9 -1
  17. package/lib/matrixrtc/LegacyMembershipManager.d.ts.map +1 -1
  18. package/lib/matrixrtc/LegacyMembershipManager.js +20 -0
  19. package/lib/matrixrtc/LegacyMembershipManager.js.map +1 -1
  20. package/lib/matrixrtc/MatrixRTCSession.d.ts.map +1 -1
  21. package/lib/matrixrtc/MatrixRTCSession.js.map +1 -1
  22. package/lib/matrixrtc/NewMembershipManager.d.ts +7 -58
  23. package/lib/matrixrtc/NewMembershipManager.d.ts.map +1 -1
  24. package/lib/matrixrtc/NewMembershipManager.js +130 -137
  25. package/lib/matrixrtc/NewMembershipManager.js.map +1 -1
  26. package/lib/matrixrtc/NewMembershipManagerActionScheduler.js +3 -3
  27. package/lib/matrixrtc/NewMembershipManagerActionScheduler.js.map +1 -1
  28. package/lib/matrixrtc/index.d.ts +1 -0
  29. package/lib/matrixrtc/index.d.ts.map +1 -1
  30. package/lib/matrixrtc/index.js +1 -0
  31. package/lib/matrixrtc/index.js.map +1 -1
  32. package/lib/matrixrtc/types.d.ts +77 -1
  33. package/lib/matrixrtc/types.d.ts.map +1 -1
  34. package/lib/matrixrtc/types.js +40 -1
  35. package/lib/matrixrtc/types.js.map +1 -1
  36. package/lib/models/room-summary.d.ts +30 -0
  37. package/lib/models/room-summary.d.ts.map +1 -1
  38. package/lib/models/room-summary.js +11 -0
  39. package/lib/models/room-summary.js.map +1 -1
  40. package/lib/models/room.d.ts +37 -1
  41. package/lib/models/room.d.ts.map +1 -1
  42. package/lib/models/room.js +133 -28
  43. package/lib/models/room.js.map +1 -1
  44. package/lib/oidc/tokenRefresher.d.ts.map +1 -1
  45. package/lib/oidc/tokenRefresher.js +8 -1
  46. package/lib/oidc/tokenRefresher.js.map +1 -1
  47. package/lib/pushprocessor.d.ts +10 -1
  48. package/lib/pushprocessor.d.ts.map +1 -1
  49. package/lib/pushprocessor.js +24 -9
  50. package/lib/pushprocessor.js.map +1 -1
  51. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts.map +1 -1
  52. package/lib/rust-crypto/OutgoingRequestProcessor.js +6 -1
  53. package/lib/rust-crypto/OutgoingRequestProcessor.js.map +1 -1
  54. package/lib/rust-crypto/rust-crypto.d.ts +4 -1
  55. package/lib/rust-crypto/rust-crypto.d.ts.map +1 -1
  56. package/lib/rust-crypto/rust-crypto.js +55 -46
  57. package/lib/rust-crypto/rust-crypto.js.map +1 -1
  58. package/lib/sliding-sync-sdk.d.ts.map +1 -1
  59. package/lib/sliding-sync-sdk.js +86 -75
  60. package/lib/sliding-sync-sdk.js.map +1 -1
  61. package/lib/sliding-sync.d.ts +23 -60
  62. package/lib/sliding-sync.d.ts.map +1 -1
  63. package/lib/sliding-sync.js +62 -321
  64. package/lib/sliding-sync.js.map +1 -1
  65. package/package.json +6 -6
  66. package/src/client.ts +12 -5
  67. package/src/common-crypto/CryptoBackend.ts +9 -0
  68. package/src/http-api/errors.ts +14 -0
  69. package/src/http-api/fetch.ts +3 -4
  70. package/src/matrixrtc/LegacyMembershipManager.ts +27 -1
  71. package/src/matrixrtc/MatrixRTCSession.ts +2 -1
  72. package/src/matrixrtc/NewMembershipManager.ts +120 -165
  73. package/src/matrixrtc/NewMembershipManagerActionScheduler.ts +3 -3
  74. package/src/matrixrtc/index.ts +1 -0
  75. package/src/matrixrtc/types.ts +84 -1
  76. package/src/models/room-summary.ts +31 -0
  77. package/src/models/room.ts +133 -23
  78. package/src/oidc/tokenRefresher.ts +8 -2
  79. package/src/pushprocessor.ts +25 -16
  80. package/src/rust-crypto/OutgoingRequestProcessor.ts +6 -0
  81. package/src/rust-crypto/rust-crypto.ts +7 -1
  82. package/src/sliding-sync-sdk.ts +28 -28
  83. package/src/sliding-sync.ts +38 -329
@@ -1 +1 @@
1
- {"version":3,"file":"sliding-sync-sdk.d.ts","sourceRoot":"","sources":["../src/sliding-sync-sdk.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAyB,IAAI,EAAa,MAAM,kBAAkB,CAAC;AAI1E,OAAO,EAAe,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EACH,KAAK,cAAc,EACnB,SAAS,EAET,KAAK,cAAc,EAGnB,KAAK,WAAW,EAEnB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AASrD,OAAO,EAKH,KAAK,WAAW,EAGnB,MAAM,mBAAmB,CAAC;AA0S3B;;;GAGG;AACH,qBAAa,cAAc;IAUnB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAV3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,aAAa,CAAC,CAAiB;IACvC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,WAAW,CAAqB;gBAGnB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,YAAY,EACrC,IAAI,CAAC,EAAE,iBAAiB,EACxB,QAAQ,CAAC,EAAE,cAAc;YAyBf,UAAU;IAYxB,OAAO,CAAC,WAAW;IAgDnB;;;OAGG;IACU,aAAa,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAI7C;;;;;;OAMG;IACU,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD;;;OAGG;IACI,WAAW,IAAI,IAAI;IAI1B;;;OAGG;IACI,WAAW,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAIhD;;;OAGG;IACI,YAAY,IAAI,SAAS,GAAG,IAAI;IAIvC;;;;;;OAMG;IACI,gBAAgB,IAAI,cAAc,GAAG,IAAI;IAMzC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAwBvC,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,eAAe;YAWT,eAAe;IA6L7B;;;;;;;;OAQG;IACU,gBAAgB,CACzB,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,WAAW,EAAE,EAC7B,iBAAiB,GAAE,WAAW,EAAO,EACrC,OAAO,GAAE,MAAU,GACpB,OAAO,CAAC,IAAI,CAAC;IAuEhB,OAAO,CAAC,cAAc;IA2Cf,gBAAgB,IAAI,OAAO;IAIlC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBlC;;OAEG;IACI,IAAI,IAAI,IAAI;IAKnB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAOvB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;CAS7B"}
1
+ {"version":3,"file":"sliding-sync-sdk.d.ts","sourceRoot":"","sources":["../src/sliding-sync-sdk.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAyB,IAAI,EAAa,MAAM,kBAAkB,CAAC;AAI1E,OAAO,EAAe,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EACH,KAAK,cAAc,EACnB,SAAS,EAET,KAAK,cAAc,EAGnB,KAAK,WAAW,EAEnB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AASrD,OAAO,EAKH,KAAK,WAAW,EAGnB,MAAM,mBAAmB,CAAC;AAqS3B;;;GAGG;AACH,qBAAa,cAAc;IAUnB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAV3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,aAAa,CAAC,CAAiB;IACvC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,WAAW,CAAqB;gBAGnB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,YAAY,EACrC,IAAI,CAAC,EAAE,iBAAiB,EACxB,QAAQ,CAAC,EAAE,cAAc;YAyBf,UAAU;IAYxB,OAAO,CAAC,WAAW;IAiDnB;;;OAGG;IACU,aAAa,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAI7C;;;;;;OAMG;IACU,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD;;;OAGG;IACI,WAAW,IAAI,IAAI;IAI1B;;;OAGG;IACI,WAAW,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAIhD;;;OAGG;IACI,YAAY,IAAI,SAAS,GAAG,IAAI;IAIvC;;;;;;OAMG;IACI,gBAAgB,IAAI,cAAc,GAAG,IAAI;IAMzC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAwBvC,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,eAAe;YAWT,eAAe;IAiM7B;;;;;;;;OAQG;IACU,gBAAgB,CACzB,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,WAAW,EAAE,EAC7B,iBAAiB,GAAE,WAAW,EAAO,EACrC,OAAO,GAAE,MAAU,GACpB,OAAO,CAAC,IAAI,CAAC;IAuEhB,OAAO,CAAC,cAAc;IA2Cf,gBAAgB,IAAI,OAAO;IAIlC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBlC;;OAEG;IACI,IAAI,IAAI,IAAI;IAKnB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAOvB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;CAS7B"}
@@ -44,24 +44,34 @@ class ExtensionE2EE {
44
44
  return ExtensionState.PreProcess;
45
45
  }
46
46
  onRequest(isInitial) {
47
- if (!isInitial) {
48
- return undefined;
49
- }
50
- return {
51
- enabled: true // this is sticky so only send it on the initial request
52
- };
47
+ var _this = this;
48
+ return _asyncToGenerator(function* () {
49
+ if (isInitial) {
50
+ // In SSS, the `?pos=` contains the stream position for device list updates.
51
+ // If we do not have a `?pos=` (e.g because we forgot it, or because the server
52
+ // invalidated our connection) then we MUST invlaidate all device lists because
53
+ // the server will not tell us the delta. This will then cause UTDs as we will fail
54
+ // to encrypt for new devices. This is an expensive call, so we should
55
+ // really really remember `?pos=` wherever possible.
56
+ logger.log("ExtensionE2EE: invalidating all device lists due to missing 'pos'");
57
+ yield _this.crypto.markAllTrackedUsersAsDirty();
58
+ }
59
+ return {
60
+ enabled: true // this is sticky so only send it on the initial request
61
+ };
62
+ })();
53
63
  }
54
64
  onResponse(data) {
55
- var _this = this;
65
+ var _this2 = this;
56
66
  return _asyncToGenerator(function* () {
57
67
  // Handle device list updates
58
68
  if (data.device_lists) {
59
- yield _this.crypto.processDeviceLists(data.device_lists);
69
+ yield _this2.crypto.processDeviceLists(data.device_lists);
60
70
  }
61
71
 
62
72
  // Handle one_time_keys_count and unused_fallback_key_types
63
- yield _this.crypto.processKeyCounts(data.device_one_time_keys_count, data["device_unused_fallback_key_types"] || data["org.matrix.msc2732.device_unused_fallback_key_types"]);
64
- _this.crypto.onSyncCompleted({});
73
+ yield _this2.crypto.processKeyCounts(data.device_one_time_keys_count, data["device_unused_fallback_key_types"] || data["org.matrix.msc2732.device_unused_fallback_key_types"]);
74
+ _this2.crypto.onSyncCompleted({});
65
75
  })();
66
76
  }
67
77
  }
@@ -78,22 +88,22 @@ class ExtensionToDevice {
78
88
  return ExtensionState.PreProcess;
79
89
  }
80
90
  onRequest(isInitial) {
81
- var extReq = {
82
- since: this.nextBatch !== null ? this.nextBatch : undefined
83
- };
84
- if (isInitial) {
85
- extReq["limit"] = 100;
86
- extReq["enabled"] = true;
87
- }
88
- return extReq;
91
+ var _this3 = this;
92
+ return _asyncToGenerator(function* () {
93
+ return {
94
+ since: _this3.nextBatch !== null ? _this3.nextBatch : undefined,
95
+ limit: 100,
96
+ enabled: true
97
+ };
98
+ })();
89
99
  }
90
100
  onResponse(data) {
91
- var _this2 = this;
101
+ var _this4 = this;
92
102
  return _asyncToGenerator(function* () {
93
103
  var cancelledKeyVerificationTxns = [];
94
104
  var events = data["events"] || [];
95
- if (events.length > 0 && _this2.cryptoCallbacks) {
96
- events = yield _this2.cryptoCallbacks.preprocessToDeviceMessages(events);
105
+ if (events.length > 0 && _this4.cryptoCallbacks) {
106
+ events = yield _this4.cryptoCallbacks.preprocessToDeviceMessages(events);
97
107
  }
98
108
  events.map(mapToDeviceEvent).map(toDeviceEvent => {
99
109
  // map is a cheap inline forEach
@@ -125,9 +135,9 @@ class ExtensionToDevice {
125
135
  toDeviceEvent.flagCancelled();
126
136
  }
127
137
  }
128
- _this2.client.emit(ClientEvent.ToDeviceEvent, toDeviceEvent);
138
+ _this4.client.emit(ClientEvent.ToDeviceEvent, toDeviceEvent);
129
139
  });
130
- _this2.nextBatch = data.next_batch;
140
+ _this4.nextBatch = data.next_batch;
131
141
  })();
132
142
  }
133
143
  }
@@ -142,29 +152,28 @@ class ExtensionAccountData {
142
152
  return ExtensionState.PostProcess;
143
153
  }
144
154
  onRequest(isInitial) {
145
- if (!isInitial) {
146
- return undefined;
147
- }
148
- return {
149
- enabled: true
150
- };
155
+ return _asyncToGenerator(function* () {
156
+ return {
157
+ enabled: true
158
+ };
159
+ })();
151
160
  }
152
161
  onResponse(data) {
153
- var _this3 = this;
162
+ var _this5 = this;
154
163
  return _asyncToGenerator(function* () {
155
164
  if (data.global && data.global.length > 0) {
156
- _this3.processGlobalAccountData(data.global);
165
+ _this5.processGlobalAccountData(data.global);
157
166
  }
158
167
  for (var roomId in data.rooms) {
159
- var accountDataEvents = mapEvents(_this3.client, roomId, data.rooms[roomId]);
160
- var room = _this3.client.getRoom(roomId);
168
+ var accountDataEvents = mapEvents(_this5.client, roomId, data.rooms[roomId]);
169
+ var room = _this5.client.getRoom(roomId);
161
170
  if (!room) {
162
171
  logger.warn("got account data for room but room doesn't exist on client:", roomId);
163
172
  continue;
164
173
  }
165
174
  room.addAccountData(accountDataEvents);
166
175
  accountDataEvents.forEach(e => {
167
- _this3.client.emit(ClientEvent.Event, e);
176
+ _this5.client.emit(ClientEvent.Event, e);
168
177
  });
169
178
  }
170
179
  })();
@@ -202,21 +211,20 @@ class ExtensionTyping {
202
211
  return ExtensionState.PostProcess;
203
212
  }
204
213
  onRequest(isInitial) {
205
- if (!isInitial) {
206
- return undefined; // don't send a JSON object for subsequent requests, we don't need to.
207
- }
208
- return {
209
- enabled: true
210
- };
214
+ return _asyncToGenerator(function* () {
215
+ return {
216
+ enabled: true
217
+ };
218
+ })();
211
219
  }
212
220
  onResponse(data) {
213
- var _this4 = this;
221
+ var _this6 = this;
214
222
  return _asyncToGenerator(function* () {
215
223
  if (!(data !== null && data !== void 0 && data.rooms)) {
216
224
  return;
217
225
  }
218
226
  for (var roomId in data.rooms) {
219
- processEphemeralEvents(_this4.client, roomId, [data.rooms[roomId]]);
227
+ processEphemeralEvents(_this6.client, roomId, [data.rooms[roomId]]);
220
228
  }
221
229
  })();
222
230
  }
@@ -232,21 +240,20 @@ class ExtensionReceipts {
232
240
  return ExtensionState.PostProcess;
233
241
  }
234
242
  onRequest(isInitial) {
235
- if (isInitial) {
243
+ return _asyncToGenerator(function* () {
236
244
  return {
237
245
  enabled: true
238
246
  };
239
- }
240
- return undefined; // don't send a JSON object for subsequent requests, we don't need to.
247
+ })();
241
248
  }
242
249
  onResponse(data) {
243
- var _this5 = this;
250
+ var _this7 = this;
244
251
  return _asyncToGenerator(function* () {
245
252
  if (!(data !== null && data !== void 0 && data.rooms)) {
246
253
  return;
247
254
  }
248
255
  for (var roomId in data.rooms) {
249
- processEphemeralEvents(_this5.client, roomId, [data.rooms[roomId]]);
256
+ processEphemeralEvents(_this7.client, roomId, [data.rooms[roomId]]);
250
257
  }
251
258
  })();
252
259
  }
@@ -285,17 +292,17 @@ export class SlidingSyncSdk {
285
292
  });
286
293
  }
287
294
  onRoomData(roomId, roomData) {
288
- var _this6 = this;
295
+ var _this8 = this;
289
296
  return _asyncToGenerator(function* () {
290
- var room = _this6.client.store.getRoom(roomId);
297
+ var room = _this8.client.store.getRoom(roomId);
291
298
  if (!room) {
292
299
  if (!roomData.initial) {
293
300
  logger.debug("initial flag not set but no stored room exists for room ", roomId, roomData);
294
301
  return;
295
302
  }
296
- room = _createAndReEmitRoom(_this6.client, roomId, _this6.opts);
303
+ room = _createAndReEmitRoom(_this8.client, roomId, _this8.opts);
297
304
  }
298
- yield _this6.processRoomData(_this6.client, room, roomData);
305
+ yield _this8.processRoomData(_this8.client, room, roomData);
299
306
  })();
300
307
  }
301
308
  onLifecycle(state, resp, err) {
@@ -338,6 +345,7 @@ export class SlidingSyncSdk {
338
345
  }
339
346
  } else {
340
347
  this.failCount = 0;
348
+ logger.log("SlidingSyncState.RequestFinished with ".concat(Object.keys((resp === null || resp === void 0 ? void 0 : resp.rooms) || []).length, " rooms"));
341
349
  }
342
350
  break;
343
351
  }
@@ -452,20 +460,20 @@ export class SlidingSyncSdk {
452
460
  return false;
453
461
  }
454
462
  processRoomData(client, room, roomData) {
455
- var _this7 = this;
463
+ var _this9 = this;
456
464
  return _asyncToGenerator(function* () {
457
465
  roomData = ensureNameEvent(client, room.roomId, roomData);
458
- var stateEvents = mapEvents(_this7.client, room.roomId, roomData.required_state);
466
+ var stateEvents = mapEvents(_this9.client, room.roomId, roomData.required_state);
459
467
  // Prevent events from being decrypted ahead of time
460
468
  // this helps large account to speed up faster
461
469
  // room::decryptCriticalEvent is in charge of decrypting all the events
462
470
  // required for a client to function properly
463
- var timelineEvents = mapEvents(_this7.client, room.roomId, roomData.timeline, false);
471
+ var timelineEvents = mapEvents(_this9.client, room.roomId, roomData.timeline, false);
464
472
  var ephemeralEvents = []; // TODO this.mapSyncEventsFormat(joinObj.ephemeral);
465
473
 
466
474
  // TODO: handle threaded / beacon events
467
475
 
468
- if (roomData.initial) {
476
+ if (roomData.limited || roomData.initial) {
469
477
  // we should not know about any of these timeline entries if this is a genuinely new room.
470
478
  // If we do, then we've effectively done scrollback (e.g requesting timeline_limit: 1 for
471
479
  // this room, then timeline_limit: 50).
@@ -518,6 +526,9 @@ export class SlidingSyncSdk {
518
526
  room.setUnreadNotificationCount(NotificationCountType.Highlight, roomData.highlight_count);
519
527
  }
520
528
  }
529
+ if (roomData.bump_stamp) {
530
+ room.setBumpStamp(roomData.bump_stamp);
531
+ }
521
532
  if (Number.isInteger(roomData.invited_count)) {
522
533
  room.currentState.setInvitedMemberCount(roomData.invited_count);
523
534
  }
@@ -525,20 +536,19 @@ export class SlidingSyncSdk {
525
536
  room.currentState.setJoinedMemberCount(roomData.joined_count);
526
537
  }
527
538
  if (roomData.invite_state) {
528
- var inviteStateEvents = mapEvents(_this7.client, room.roomId, roomData.invite_state);
529
- yield _this7.injectRoomEvents(room, inviteStateEvents);
539
+ var inviteStateEvents = mapEvents(_this9.client, room.roomId, roomData.invite_state);
540
+ yield _this9.injectRoomEvents(room, inviteStateEvents);
530
541
  if (roomData.initial) {
531
542
  room.recalculate();
532
- _this7.client.store.storeRoom(room);
533
- _this7.client.emit(ClientEvent.Room, room);
543
+ _this9.client.store.storeRoom(room);
544
+ _this9.client.emit(ClientEvent.Room, room);
534
545
  }
535
546
  inviteStateEvents.forEach(e => {
536
- _this7.client.emit(ClientEvent.Event, e);
547
+ _this9.client.emit(ClientEvent.Event, e);
537
548
  });
538
- room.updateMyMembership(KnownMembership.Invite);
539
549
  return;
540
550
  }
541
- if (roomData.initial) {
551
+ if (roomData.limited) {
542
552
  var _roomData$prev_batch;
543
553
  // set the back-pagination token. Do this *before* adding any
544
554
  // events so that clients can start back-paginating.
@@ -592,7 +602,7 @@ export class SlidingSyncSdk {
592
602
  }
593
603
  } */
594
604
 
595
- yield _this7.injectRoomEvents(room, stateEvents, timelineEvents, roomData.num_live);
605
+ yield _this9.injectRoomEvents(room, stateEvents, timelineEvents, roomData.num_live);
596
606
 
597
607
  // we deliberately don't add ephemeral events to the timeline
598
608
  room.addEphemeralEvents(ephemeralEvents);
@@ -600,6 +610,7 @@ export class SlidingSyncSdk {
600
610
  // local fields must be set before any async calls because call site assumes
601
611
  // synchronous execution prior to emitting SlidingSyncState.Complete
602
612
  room.updateMyMembership(KnownMembership.Join);
613
+ room.setMSC4186SummaryData(roomData.heroes, roomData.joined_count, roomData.invited_count);
603
614
  room.recalculate();
604
615
  if (roomData.initial) {
605
616
  client.store.storeRoom(room);
@@ -608,12 +619,12 @@ export class SlidingSyncSdk {
608
619
 
609
620
  // check if any timeline events should bing and add them to the notifEvents array:
610
621
  // we'll purge this once we've fully processed the sync response
611
- _this7.addNotifications(timelineEvents);
622
+ _this9.addNotifications(timelineEvents);
612
623
  var processRoomEvent = /*#__PURE__*/function () {
613
624
  var _ref = _asyncToGenerator(function* (e) {
614
625
  client.emit(ClientEvent.Event, e);
615
- if (e.isState() && e.getType() == EventType.RoomEncryption && _this7.syncOpts.cryptoCallbacks) {
616
- yield _this7.syncOpts.cryptoCallbacks.onCryptoEvent(room, e);
626
+ if (e.isState() && e.getType() == EventType.RoomEncryption && _this9.syncOpts.cryptoCallbacks) {
627
+ yield _this9.syncOpts.cryptoCallbacks.onCryptoEvent(room, e);
617
628
  }
618
629
  });
619
630
  return function processRoomEvent(_x) {
@@ -644,7 +655,7 @@ export class SlidingSyncSdk {
644
655
  */
645
656
  injectRoomEvents(room, stateEventList) {
646
657
  var _arguments = arguments,
647
- _this8 = this;
658
+ _this10 = this;
648
659
  return _asyncToGenerator(function* () {
649
660
  var timelineEventList = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : [];
650
661
  var numLive = _arguments.length > 3 && _arguments[3] !== undefined ? _arguments[3] : 0;
@@ -662,7 +673,7 @@ export class SlidingSyncSdk {
662
673
  // find some solution where MatrixEvents are immutable but allow for a cache
663
674
  // field.
664
675
  for (var ev of stateEventList) {
665
- _this8.client.getPushActionsForEvent(ev);
676
+ _this10.client.getPushActionsForEvent(ev);
666
677
  }
667
678
  liveTimeline.initialiseState(stateEventList);
668
679
  }
@@ -714,7 +725,7 @@ export class SlidingSyncSdk {
714
725
  room.recalculate();
715
726
 
716
727
  // resolve invites now we have set the latest state
717
- _this8.resolveInvites(room);
728
+ _this10.resolveInvites(room);
718
729
  })();
719
730
  }
720
731
  resolveInvites(room) {
@@ -764,29 +775,29 @@ export class SlidingSyncSdk {
764
775
  * Main entry point. Blocks until stop() is called.
765
776
  */
766
777
  sync() {
767
- var _this9 = this;
778
+ var _this11 = this;
768
779
  return _asyncToGenerator(function* () {
769
780
  logger.debug("Sliding sync init loop");
770
781
 
771
782
  // 1) We need to get push rules so we can check if events should bing as we get
772
783
  // them from /sync.
773
- while (!_this9.client.isGuest()) {
784
+ while (!_this11.client.isGuest()) {
774
785
  try {
775
786
  logger.debug("Getting push rules...");
776
- var result = yield _this9.client.getPushRules();
787
+ var result = yield _this11.client.getPushRules();
777
788
  logger.debug("Got push rules");
778
- _this9.client.pushRules = result;
789
+ _this11.client.pushRules = result;
779
790
  break;
780
791
  } catch (err) {
781
792
  logger.error("Getting push rules failed", err);
782
- if (_this9.shouldAbortSync(err)) {
793
+ if (_this11.shouldAbortSync(err)) {
783
794
  return;
784
795
  }
785
796
  }
786
797
  }
787
798
 
788
799
  // start syncing
789
- yield _this9.slidingSync.start();
800
+ yield _this11.slidingSync.start();
790
801
  })();
791
802
  }
792
803