matrix-js-sdk 41.8.0 → 41.9.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 (458) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +1 -1
  3. package/lib/@types/AESEncryptedSecretStoragePayload.js +3 -1
  4. package/lib/@types/IIdentityServerProvider.js +3 -1
  5. package/lib/@types/PushRules.js +7 -7
  6. package/lib/@types/PushRules.js.map +1 -1
  7. package/lib/@types/auth.js +4 -4
  8. package/lib/@types/auth.js.map +1 -1
  9. package/lib/@types/beacon.js +2 -2
  10. package/lib/@types/beacon.js.map +1 -1
  11. package/lib/@types/common.js +3 -1
  12. package/lib/@types/crypto.js +3 -1
  13. package/lib/@types/event.js +20 -20
  14. package/lib/@types/event.js.map +1 -1
  15. package/lib/@types/events.js +3 -1
  16. package/lib/@types/extensible_events.js +6 -6
  17. package/lib/@types/extensible_events.js.map +1 -1
  18. package/lib/@types/global.d.js.map +1 -1
  19. package/lib/@types/json.js +3 -1
  20. package/lib/@types/local_notifications.js +3 -1
  21. package/lib/@types/location.js +4 -4
  22. package/lib/@types/location.js.map +1 -1
  23. package/lib/@types/matrix-sdk-crypto-wasm.d.js +3 -1
  24. package/lib/@types/media.js +3 -1
  25. package/lib/@types/membership.js +1 -1
  26. package/lib/@types/membership.js.map +1 -1
  27. package/lib/@types/partials.js +6 -6
  28. package/lib/@types/partials.js.map +1 -1
  29. package/lib/@types/polls.js +5 -5
  30. package/lib/@types/polls.js.map +1 -1
  31. package/lib/@types/read_receipts.js +2 -2
  32. package/lib/@types/read_receipts.js.map +1 -1
  33. package/lib/@types/registration.js +3 -1
  34. package/lib/@types/requests.js +1 -1
  35. package/lib/@types/requests.js.map +1 -1
  36. package/lib/@types/retention.js +1 -1
  37. package/lib/@types/retention.js.map +1 -1
  38. package/lib/@types/search.js +1 -1
  39. package/lib/@types/search.js.map +1 -1
  40. package/lib/@types/signed.js +3 -1
  41. package/lib/@types/spaces.js +3 -1
  42. package/lib/@types/state_events.js +3 -1
  43. package/lib/@types/synapse.js +3 -1
  44. package/lib/@types/sync.js +1 -1
  45. package/lib/@types/sync.js.map +1 -1
  46. package/lib/@types/threepids.js +1 -1
  47. package/lib/@types/threepids.js.map +1 -1
  48. package/lib/@types/topic.js +1 -1
  49. package/lib/@types/topic.js.map +1 -1
  50. package/lib/@types/uia.js +3 -1
  51. package/lib/NamespacedValue.js +8 -8
  52. package/lib/NamespacedValue.js.map +1 -1
  53. package/lib/ReEmitter.js +9 -16
  54. package/lib/ReEmitter.js.map +1 -1
  55. package/lib/ToDeviceMessageQueue.js +49 -57
  56. package/lib/ToDeviceMessageQueue.js.map +1 -1
  57. package/lib/autodiscovery.js +232 -247
  58. package/lib/autodiscovery.js.map +1 -1
  59. package/lib/base64.js +1 -1
  60. package/lib/base64.js.map +1 -1
  61. package/lib/browser-index.d.ts +2 -2
  62. package/lib/browser-index.d.ts.map +1 -1
  63. package/lib/browser-index.js +5 -5
  64. package/lib/browser-index.js.map +1 -1
  65. package/lib/capabilityPoller.js +19 -22
  66. package/lib/capabilityPoller.js.map +1 -1
  67. package/lib/client.d.ts +2 -8
  68. package/lib/client.d.ts.map +1 -1
  69. package/lib/client.js +2043 -2487
  70. package/lib/client.js.map +1 -1
  71. package/lib/common-crypto/CryptoBackend.js +2 -2
  72. package/lib/common-crypto/CryptoBackend.js.map +1 -1
  73. package/lib/common-crypto/key-passphrase.js.map +1 -1
  74. package/lib/content-helpers.js +43 -48
  75. package/lib/content-helpers.js.map +1 -1
  76. package/lib/content-repo.js +14 -24
  77. package/lib/content-repo.js.map +1 -1
  78. package/lib/crypto/store/base.js +6 -6
  79. package/lib/crypto/store/base.js.map +1 -1
  80. package/lib/crypto/store/indexeddb-crypto-store-backend.js +190 -238
  81. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +1 -1
  82. package/lib/crypto/store/indexeddb-crypto-store.js +25 -30
  83. package/lib/crypto/store/indexeddb-crypto-store.js.map +1 -1
  84. package/lib/crypto/store/localStorage-crypto-store.js +113 -145
  85. package/lib/crypto/store/localStorage-crypto-store.js.map +1 -1
  86. package/lib/crypto/store/memory-crypto-store.js +74 -105
  87. package/lib/crypto/store/memory-crypto-store.js.map +1 -1
  88. package/lib/crypto-api/CryptoEvent.js +1 -1
  89. package/lib/crypto-api/CryptoEvent.js.map +1 -1
  90. package/lib/crypto-api/CryptoEventHandlerMap.js +3 -1
  91. package/lib/crypto-api/index.d.ts +15 -6
  92. package/lib/crypto-api/index.d.ts.map +1 -1
  93. package/lib/crypto-api/index.js +22 -22
  94. package/lib/crypto-api/index.js.map +1 -1
  95. package/lib/crypto-api/key-passphrase.js +15 -23
  96. package/lib/crypto-api/key-passphrase.js.map +1 -1
  97. package/lib/crypto-api/keybackup.js +3 -1
  98. package/lib/crypto-api/recovery-key.js +11 -12
  99. package/lib/crypto-api/recovery-key.js.map +1 -1
  100. package/lib/crypto-api/verification.js +3 -3
  101. package/lib/crypto-api/verification.js.map +1 -1
  102. package/lib/digest.js +7 -14
  103. package/lib/digest.js.map +1 -1
  104. package/lib/embedded.d.ts.map +1 -1
  105. package/lib/embedded.js +380 -505
  106. package/lib/embedded.js.map +1 -1
  107. package/lib/errors.js +2 -2
  108. package/lib/errors.js.map +1 -1
  109. package/lib/event-mapper.js +10 -12
  110. package/lib/event-mapper.js.map +1 -1
  111. package/lib/extensible_events_v1/ExtensibleEvent.js.map +1 -1
  112. package/lib/extensible_events_v1/InvalidEventError.js.map +1 -1
  113. package/lib/extensible_events_v1/MessageEvent.js +11 -13
  114. package/lib/extensible_events_v1/MessageEvent.js.map +1 -1
  115. package/lib/extensible_events_v1/PollEndEvent.js +3 -4
  116. package/lib/extensible_events_v1/PollEndEvent.js.map +1 -1
  117. package/lib/extensible_events_v1/PollResponseEvent.js +5 -6
  118. package/lib/extensible_events_v1/PollResponseEvent.js.map +1 -1
  119. package/lib/extensible_events_v1/PollStartEvent.js +8 -10
  120. package/lib/extensible_events_v1/PollStartEvent.js.map +1 -1
  121. package/lib/extensible_events_v1/utilities.js.map +1 -1
  122. package/lib/feature.js +18 -31
  123. package/lib/feature.js.map +1 -1
  124. package/lib/filter-component.d.ts.map +1 -1
  125. package/lib/filter-component.js +20 -26
  126. package/lib/filter-component.js.map +1 -1
  127. package/lib/filter.js +14 -17
  128. package/lib/filter.js.map +1 -1
  129. package/lib/http-api/errors.js +28 -43
  130. package/lib/http-api/errors.js.map +1 -1
  131. package/lib/http-api/fetch.js +141 -159
  132. package/lib/http-api/fetch.js.map +1 -1
  133. package/lib/http-api/index.js +17 -20
  134. package/lib/http-api/index.js.map +1 -1
  135. package/lib/http-api/interface.js +1 -1
  136. package/lib/http-api/interface.js.map +1 -1
  137. package/lib/http-api/method.js +1 -1
  138. package/lib/http-api/method.js.map +1 -1
  139. package/lib/http-api/prefix.js +3 -3
  140. package/lib/http-api/prefix.js.map +1 -1
  141. package/lib/http-api/refresh.js +74 -94
  142. package/lib/http-api/refresh.js.map +1 -1
  143. package/lib/http-api/utils.d.ts +1 -1
  144. package/lib/http-api/utils.d.ts.map +1 -1
  145. package/lib/http-api/utils.js +34 -42
  146. package/lib/http-api/utils.js.map +1 -1
  147. package/lib/index.js.map +1 -1
  148. package/lib/indexeddb-helpers.js +3 -3
  149. package/lib/indexeddb-helpers.js.map +1 -1
  150. package/lib/indexeddb-worker.js.map +1 -1
  151. package/lib/interactive-auth.d.ts +5 -5
  152. package/lib/interactive-auth.d.ts.map +1 -1
  153. package/lib/interactive-auth.js +172 -204
  154. package/lib/interactive-auth.js.map +1 -1
  155. package/lib/logger.js +21 -57
  156. package/lib/logger.js.map +1 -1
  157. package/lib/matrix.js +7 -11
  158. package/lib/matrix.js.map +1 -1
  159. package/lib/matrixrtc/CallMembership.js +80 -74
  160. package/lib/matrixrtc/CallMembership.js.map +1 -1
  161. package/lib/matrixrtc/EncryptionManager.js +1 -1
  162. package/lib/matrixrtc/EncryptionManager.js.map +1 -1
  163. package/lib/matrixrtc/IKeyTransport.js +1 -1
  164. package/lib/matrixrtc/IKeyTransport.js.map +1 -1
  165. package/lib/matrixrtc/IMembershipManager.js +1 -1
  166. package/lib/matrixrtc/IMembershipManager.js.map +1 -1
  167. package/lib/matrixrtc/LivekitTransport.d.ts +1 -1
  168. package/lib/matrixrtc/LivekitTransport.js +4 -4
  169. package/lib/matrixrtc/LivekitTransport.js.map +1 -1
  170. package/lib/matrixrtc/MatrixRTCSession.js +137 -187
  171. package/lib/matrixrtc/MatrixRTCSession.js.map +1 -1
  172. package/lib/matrixrtc/MatrixRTCSessionManager.js +36 -41
  173. package/lib/matrixrtc/MatrixRTCSessionManager.js.map +1 -1
  174. package/lib/matrixrtc/MembershipManager.js +332 -378
  175. package/lib/matrixrtc/MembershipManager.js.map +1 -1
  176. package/lib/matrixrtc/MembershipManagerActionScheduler.js +54 -63
  177. package/lib/matrixrtc/MembershipManagerActionScheduler.js.map +1 -1
  178. package/lib/matrixrtc/RTCEncryptionManager.js +119 -143
  179. package/lib/matrixrtc/RTCEncryptionManager.js.map +1 -1
  180. package/lib/matrixrtc/ToDeviceKeyTransport.js +53 -58
  181. package/lib/matrixrtc/ToDeviceKeyTransport.js.map +1 -1
  182. package/lib/matrixrtc/index.js.map +1 -1
  183. package/lib/matrixrtc/membershipData/common.js +1 -1
  184. package/lib/matrixrtc/membershipData/common.js.map +1 -1
  185. package/lib/matrixrtc/membershipData/index.js.map +1 -1
  186. package/lib/matrixrtc/membershipData/rtc.js +15 -23
  187. package/lib/matrixrtc/membershipData/rtc.js.map +1 -1
  188. package/lib/matrixrtc/membershipData/session.js +4 -5
  189. package/lib/matrixrtc/membershipData/session.js.map +1 -1
  190. package/lib/matrixrtc/types.js +4 -6
  191. package/lib/matrixrtc/types.js.map +1 -1
  192. package/lib/matrixrtc/utils.js +4 -11
  193. package/lib/matrixrtc/utils.js.map +1 -1
  194. package/lib/models/MSC3089Branch.js +91 -116
  195. package/lib/models/MSC3089Branch.js.map +1 -1
  196. package/lib/models/MSC3089TreeSpace.js +209 -245
  197. package/lib/models/MSC3089TreeSpace.js.map +1 -1
  198. package/lib/models/ToDeviceMessage.js +3 -1
  199. package/lib/models/beacon.js +14 -13
  200. package/lib/models/beacon.js.map +1 -1
  201. package/lib/models/compare-event-ordering.js +13 -13
  202. package/lib/models/compare-event-ordering.js.map +1 -1
  203. package/lib/models/device.js +3 -3
  204. package/lib/models/device.js.map +1 -1
  205. package/lib/models/event-context.js +5 -8
  206. package/lib/models/event-context.js.map +1 -1
  207. package/lib/models/event-status.js +1 -1
  208. package/lib/models/event-status.js.map +1 -1
  209. package/lib/models/event-timeline-set.js +88 -94
  210. package/lib/models/event-timeline-set.js.map +1 -1
  211. package/lib/models/event-timeline.js +28 -30
  212. package/lib/models/event-timeline.js.map +1 -1
  213. package/lib/models/event.js +182 -226
  214. package/lib/models/event.js.map +1 -1
  215. package/lib/models/invites-ignorer-types.js +4 -4
  216. package/lib/models/invites-ignorer-types.js.map +1 -1
  217. package/lib/models/invites-ignorer.js +159 -179
  218. package/lib/models/invites-ignorer.js.map +1 -1
  219. package/lib/models/poll.js +71 -81
  220. package/lib/models/poll.js.map +1 -1
  221. package/lib/models/profile-keys.js +2 -2
  222. package/lib/models/profile-keys.js.map +1 -1
  223. package/lib/models/read-receipt.js +40 -56
  224. package/lib/models/read-receipt.js.map +1 -1
  225. package/lib/models/related-relations.js.map +1 -1
  226. package/lib/models/relations-container.js +22 -23
  227. package/lib/models/relations-container.js.map +1 -1
  228. package/lib/models/relations.js +133 -159
  229. package/lib/models/relations.js.map +1 -1
  230. package/lib/models/room-member.js +24 -29
  231. package/lib/models/room-member.js.map +1 -1
  232. package/lib/models/room-receipts.js +29 -43
  233. package/lib/models/room-receipts.js.map +1 -1
  234. package/lib/models/room-retention.js +74 -83
  235. package/lib/models/room-retention.js.map +1 -1
  236. package/lib/models/room-state.js +143 -172
  237. package/lib/models/room-state.js.map +1 -1
  238. package/lib/models/room-sticky-events.d.ts +1 -0
  239. package/lib/models/room-sticky-events.d.ts.map +1 -1
  240. package/lib/models/room-sticky-events.js +45 -65
  241. package/lib/models/room-sticky-events.js.map +1 -1
  242. package/lib/models/room-summary.js.map +1 -1
  243. package/lib/models/room.d.ts.map +1 -1
  244. package/lib/models/room.js +765 -909
  245. package/lib/models/room.js.map +1 -1
  246. package/lib/models/search-result.js +5 -5
  247. package/lib/models/search-result.js.map +1 -1
  248. package/lib/models/thread.js +225 -285
  249. package/lib/models/thread.js.map +1 -1
  250. package/lib/models/typed-event-emitter.js +7 -18
  251. package/lib/models/typed-event-emitter.js.map +1 -1
  252. package/lib/models/user.js +8 -8
  253. package/lib/models/user.js.map +1 -1
  254. package/lib/oidc/authorize.js +208 -241
  255. package/lib/oidc/authorize.js.map +1 -1
  256. package/lib/oidc/discovery.js +23 -36
  257. package/lib/oidc/discovery.js.map +1 -1
  258. package/lib/oidc/error.js +1 -1
  259. package/lib/oidc/error.js.map +1 -1
  260. package/lib/oidc/index.js +1 -0
  261. package/lib/oidc/index.js.map +1 -1
  262. package/lib/oidc/register.js +60 -66
  263. package/lib/oidc/register.js.map +1 -1
  264. package/lib/oidc/tokenRefresher.js +77 -91
  265. package/lib/oidc/tokenRefresher.js.map +1 -1
  266. package/lib/oidc/validate.js +18 -18
  267. package/lib/oidc/validate.js.map +1 -1
  268. package/lib/pushprocessor.js +71 -82
  269. package/lib/pushprocessor.js.map +1 -1
  270. package/lib/randomstring.js +9 -9
  271. package/lib/randomstring.js.map +1 -1
  272. package/lib/realtime-callbacks.js +25 -28
  273. package/lib/realtime-callbacks.js.map +1 -1
  274. package/lib/receipt-accumulator.d.ts +2 -0
  275. package/lib/receipt-accumulator.d.ts.map +1 -1
  276. package/lib/receipt-accumulator.js +14 -22
  277. package/lib/receipt-accumulator.js.map +1 -1
  278. package/lib/rendezvous/MSC4108SignInWithQR.js +271 -302
  279. package/lib/rendezvous/MSC4108SignInWithQR.js.map +1 -1
  280. package/lib/rendezvous/RendezvousChannel.js +3 -1
  281. package/lib/rendezvous/RendezvousCode.js +3 -1
  282. package/lib/rendezvous/RendezvousError.js.map +1 -1
  283. package/lib/rendezvous/RendezvousFailureReason.js +2 -2
  284. package/lib/rendezvous/RendezvousFailureReason.js.map +1 -1
  285. package/lib/rendezvous/RendezvousIntent.js +1 -1
  286. package/lib/rendezvous/RendezvousIntent.js.map +1 -1
  287. package/lib/rendezvous/RendezvousTransport.js +3 -1
  288. package/lib/rendezvous/channels/MSC4108SecureChannel.js +123 -147
  289. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +1 -1
  290. package/lib/rendezvous/index.js +44 -69
  291. package/lib/rendezvous/index.js.map +1 -1
  292. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +1 -1
  293. package/lib/rendezvous/transports/MSC4108RendezvousSession.js +134 -152
  294. package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +1 -1
  295. package/lib/retentionPolicy.js +6 -9
  296. package/lib/retentionPolicy.js.map +1 -1
  297. package/lib/room-hierarchy.js +52 -60
  298. package/lib/room-hierarchy.js.map +1 -1
  299. package/lib/rust-crypto/CrossSigningIdentity.js +94 -104
  300. package/lib/rust-crypto/CrossSigningIdentity.js.map +1 -1
  301. package/lib/rust-crypto/DehydratedDeviceManager.js +157 -190
  302. package/lib/rust-crypto/DehydratedDeviceManager.js.map +1 -1
  303. package/lib/rust-crypto/KeyClaimManager.js +18 -22
  304. package/lib/rust-crypto/KeyClaimManager.js.map +1 -1
  305. package/lib/rust-crypto/OutgoingRequestProcessor.js +109 -139
  306. package/lib/rust-crypto/OutgoingRequestProcessor.js.map +1 -1
  307. package/lib/rust-crypto/OutgoingRequestsManager.js +66 -80
  308. package/lib/rust-crypto/OutgoingRequestsManager.js.map +1 -1
  309. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +1 -1
  310. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +196 -224
  311. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +1 -1
  312. package/lib/rust-crypto/RoomEncryptor.js +127 -143
  313. package/lib/rust-crypto/RoomEncryptor.js.map +1 -1
  314. package/lib/rust-crypto/backup.js +453 -549
  315. package/lib/rust-crypto/backup.js.map +1 -1
  316. package/lib/rust-crypto/constants.js +1 -1
  317. package/lib/rust-crypto/constants.js.map +1 -1
  318. package/lib/rust-crypto/device-converter.js +15 -28
  319. package/lib/rust-crypto/device-converter.js.map +1 -1
  320. package/lib/rust-crypto/index.js +103 -116
  321. package/lib/rust-crypto/index.js.map +1 -1
  322. package/lib/rust-crypto/libolm_migration.js +303 -365
  323. package/lib/rust-crypto/libolm_migration.js.map +1 -1
  324. package/lib/rust-crypto/rust-crypto.d.ts +5 -1
  325. package/lib/rust-crypto/rust-crypto.d.ts.map +1 -1
  326. package/lib/rust-crypto/rust-crypto.js +1067 -1332
  327. package/lib/rust-crypto/rust-crypto.js.map +1 -1
  328. package/lib/rust-crypto/secret-storage.js +12 -25
  329. package/lib/rust-crypto/secret-storage.js.map +1 -1
  330. package/lib/rust-crypto/verification.js +137 -189
  331. package/lib/rust-crypto/verification.js.map +1 -1
  332. package/lib/scheduler.js +44 -19
  333. package/lib/scheduler.js.map +1 -1
  334. package/lib/secret-storage.js +179 -213
  335. package/lib/secret-storage.js.map +1 -1
  336. package/lib/serverCapabilities.js +6 -9
  337. package/lib/serverCapabilities.js.map +1 -1
  338. package/lib/service-types.js +1 -1
  339. package/lib/service-types.js.map +1 -1
  340. package/lib/sliding-sync-sdk.d.ts.map +1 -1
  341. package/lib/sliding-sync-sdk.js +368 -424
  342. package/lib/sliding-sync-sdk.js.map +1 -1
  343. package/lib/sliding-sync.js +135 -171
  344. package/lib/sliding-sync.js.map +1 -1
  345. package/lib/store/index.js +3 -1
  346. package/lib/store/indexeddb-backend.js +3 -1
  347. package/lib/store/indexeddb-local-backend.js +194 -253
  348. package/lib/store/indexeddb-local-backend.js.map +1 -1
  349. package/lib/store/indexeddb-remote-backend.js +33 -63
  350. package/lib/store/indexeddb-remote-backend.js.map +1 -1
  351. package/lib/store/indexeddb-store-worker.js +22 -23
  352. package/lib/store/indexeddb-store-worker.js.map +1 -1
  353. package/lib/store/indexeddb.js +44 -71
  354. package/lib/store/indexeddb.js.map +1 -1
  355. package/lib/store/local-storage-events-emitter.js +2 -2
  356. package/lib/store/local-storage-events-emitter.js.map +1 -1
  357. package/lib/store/memory.js +34 -57
  358. package/lib/store/memory.js.map +1 -1
  359. package/lib/store/stub.js +22 -35
  360. package/lib/store/stub.js.map +1 -1
  361. package/lib/sync-accumulator.js +54 -66
  362. package/lib/sync-accumulator.js.map +1 -1
  363. package/lib/sync.d.ts.map +1 -1
  364. package/lib/sync.js +905 -998
  365. package/lib/sync.js.map +1 -1
  366. package/lib/testing.js +63 -105
  367. package/lib/testing.js.map +1 -1
  368. package/lib/thread-utils.js +1 -4
  369. package/lib/thread-utils.js.map +1 -1
  370. package/lib/timeline-window.js +89 -102
  371. package/lib/timeline-window.js.map +1 -1
  372. package/lib/types.js +1 -1
  373. package/lib/types.js.map +1 -1
  374. package/lib/utils/decryptAESSecretStorageItem.js +14 -25
  375. package/lib/utils/decryptAESSecretStorageItem.js.map +1 -1
  376. package/lib/utils/encryptAESSecretStorageItem.js +27 -38
  377. package/lib/utils/encryptAESSecretStorageItem.js.map +1 -1
  378. package/lib/utils/internal/deriveKeys.js +25 -32
  379. package/lib/utils/internal/deriveKeys.js.map +1 -1
  380. package/lib/utils/roomVersion.js +1 -1
  381. package/lib/utils/roomVersion.js.map +1 -1
  382. package/lib/utils.js +83 -135
  383. package/lib/utils.js.map +1 -1
  384. package/lib/version-support.js +3 -3
  385. package/lib/version-support.js.map +1 -1
  386. package/lib/webrtc/audioContext.js +5 -6
  387. package/lib/webrtc/audioContext.js.map +1 -1
  388. package/lib/webrtc/call.js +1081 -1250
  389. package/lib/webrtc/call.js.map +1 -1
  390. package/lib/webrtc/callEventHandler.js +202 -214
  391. package/lib/webrtc/callEventHandler.js.map +1 -1
  392. package/lib/webrtc/callEventTypes.js +2 -2
  393. package/lib/webrtc/callEventTypes.js.map +1 -1
  394. package/lib/webrtc/callFeed.js +18 -20
  395. package/lib/webrtc/callFeed.js.map +1 -1
  396. package/lib/webrtc/groupCall.js +513 -602
  397. package/lib/webrtc/groupCall.js.map +1 -1
  398. package/lib/webrtc/groupCallEventHandler.js +59 -62
  399. package/lib/webrtc/groupCallEventHandler.js.map +1 -1
  400. package/lib/webrtc/mediaHandler.js +198 -232
  401. package/lib/webrtc/mediaHandler.js.map +1 -1
  402. package/lib/webrtc/stats/callFeedStatsReporter.js +16 -20
  403. package/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -1
  404. package/lib/webrtc/stats/callStatsReportGatherer.js +67 -75
  405. package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -1
  406. package/lib/webrtc/stats/callStatsReportSummary.js +3 -1
  407. package/lib/webrtc/stats/connectionStats.js.map +1 -1
  408. package/lib/webrtc/stats/connectionStatsBuilder.js +2 -2
  409. package/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -1
  410. package/lib/webrtc/stats/connectionStatsReportBuilder.js +20 -24
  411. package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -1
  412. package/lib/webrtc/stats/groupCallStats.js +6 -8
  413. package/lib/webrtc/stats/groupCallStats.js.map +1 -1
  414. package/lib/webrtc/stats/media/mediaSsrcHandler.js +7 -8
  415. package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -1
  416. package/lib/webrtc/stats/media/mediaTrackHandler.js +7 -9
  417. package/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -1
  418. package/lib/webrtc/stats/media/mediaTrackStats.js +3 -3
  419. package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -1
  420. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +7 -7
  421. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -1
  422. package/lib/webrtc/stats/statsReport.js +1 -1
  423. package/lib/webrtc/stats/statsReport.js.map +1 -1
  424. package/lib/webrtc/stats/statsReportEmitter.js.map +1 -1
  425. package/lib/webrtc/stats/summaryStatsReportGatherer.js +14 -14
  426. package/lib/webrtc/stats/summaryStatsReportGatherer.js.map +1 -1
  427. package/lib/webrtc/stats/trackStatsBuilder.js +32 -34
  428. package/lib/webrtc/stats/trackStatsBuilder.js.map +1 -1
  429. package/lib/webrtc/stats/transportStats.js +3 -1
  430. package/lib/webrtc/stats/transportStatsBuilder.js +9 -9
  431. package/lib/webrtc/stats/transportStatsBuilder.js.map +1 -1
  432. package/lib/webrtc/stats/valueFormatter.js +1 -1
  433. package/lib/webrtc/stats/valueFormatter.js.map +1 -1
  434. package/package.json +18 -33
  435. package/src/@types/global.d.ts +2 -2
  436. package/src/ToDeviceMessageQueue.ts +2 -2
  437. package/src/browser-index.ts +4 -4
  438. package/src/client.ts +15 -20
  439. package/src/crypto-api/index.ts +17 -6
  440. package/src/embedded.ts +4 -6
  441. package/src/filter-component.ts +1 -0
  442. package/src/http-api/utils.ts +1 -1
  443. package/src/interactive-auth.ts +11 -5
  444. package/src/matrixrtc/LivekitTransport.ts +1 -1
  445. package/src/matrixrtc/MatrixRTCSession.ts +1 -1
  446. package/src/models/MSC3089Branch.ts +1 -1
  447. package/src/models/room-sticky-events.ts +1 -0
  448. package/src/models/room.ts +9 -11
  449. package/src/receipt-accumulator.ts +2 -0
  450. package/src/rendezvous/index.ts +1 -1
  451. package/src/rendezvous/transports/MSC4108RendezvousSession.ts +2 -2
  452. package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +1 -1
  453. package/src/rust-crypto/index.ts +6 -6
  454. package/src/rust-crypto/rust-crypto.ts +31 -7
  455. package/src/rust-crypto/verification.ts +1 -1
  456. package/src/sliding-sync-sdk.ts +5 -7
  457. package/src/store/indexeddb-local-backend.ts +3 -3
  458. package/src/sync.ts +6 -8
@@ -1,4 +1,3 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
2
  /*
4
3
  Copyright 2020 The Matrix.org Foundation C.I.C.
@@ -25,8 +24,8 @@ import { RoomEvent } from "../models/room.js";
25
24
 
26
25
  // Don't ring unless we'd be ringing for at least 3 seconds: the user needs some
27
26
  // time to press the 'accept' button
28
- var RING_GRACE_PERIOD = 3000;
29
- export var CallEventHandlerEvent = /*#__PURE__*/function (CallEventHandlerEvent) {
27
+ const RING_GRACE_PERIOD = 3000;
28
+ export let CallEventHandlerEvent = /*#__PURE__*/function (CallEventHandlerEvent) {
30
29
  CallEventHandlerEvent["Incoming"] = "Call.incoming";
31
30
  return CallEventHandlerEvent;
32
31
  }({});
@@ -42,7 +41,7 @@ export class CallEventHandler {
42
41
  _defineProperty(this, "eventBufferPromiseChain", void 0);
43
42
  _defineProperty(this, "onSync", () => {
44
43
  // Process the current event buffer and start queuing into a new one.
45
- var currentEventBuffer = this.callEventBuffer;
44
+ const currentEventBuffer = this.callEventBuffer;
46
45
  this.callEventBuffer = [];
47
46
 
48
47
  // Ensure correct ordering by only processing this queue after the previous one has finished processing
@@ -56,7 +55,7 @@ export class CallEventHandler {
56
55
  this.callEventBuffer.push(event);
57
56
  });
58
57
  _defineProperty(this, "onToDeviceEvent", event => {
59
- var content = event.getContent();
58
+ const content = event.getContent();
60
59
  if (!content.call_id) {
61
60
  this.callEventBuffer.push(event);
62
61
  return;
@@ -68,28 +67,28 @@ export class CallEventHandler {
68
67
  this.callEventBuffer.push(event);
69
68
  return;
70
69
  }
71
- var nextSeq = this.nextSeqByCall.get(content.call_id) || 0;
70
+ const nextSeq = this.nextSeqByCall.get(content.call_id) || 0;
72
71
  if (content.seq !== nextSeq) {
73
72
  if (!this.toDeviceEventBuffers.has(content.call_id)) {
74
73
  this.toDeviceEventBuffers.set(content.call_id, []);
75
74
  }
76
- var buffer = this.toDeviceEventBuffers.get(content.call_id);
77
- var index = buffer.findIndex(e => e.getContent().seq > content.seq);
75
+ const buffer = this.toDeviceEventBuffers.get(content.call_id);
76
+ const index = buffer.findIndex(e => e.getContent().seq > content.seq);
78
77
  if (index === -1) {
79
78
  buffer.push(event);
80
79
  } else {
81
80
  buffer.splice(index, 0, event);
82
81
  }
83
82
  } else {
84
- var callId = content.call_id;
83
+ const callId = content.call_id;
85
84
  this.callEventBuffer.push(event);
86
85
  this.nextSeqByCall.set(callId, content.seq + 1);
87
- var _buffer = this.toDeviceEventBuffers.get(callId);
88
- var nextEvent = _buffer && _buffer.shift();
86
+ const buffer = this.toDeviceEventBuffers.get(callId);
87
+ let nextEvent = buffer && buffer.shift();
89
88
  while (nextEvent && nextEvent.getContent().seq === this.nextSeqByCall.get(callId)) {
90
89
  this.callEventBuffer.push(nextEvent);
91
90
  this.nextSeqByCall.set(callId, nextEvent.getContent().seq + 1);
92
- nextEvent = _buffer.shift();
91
+ nextEvent = buffer.shift();
93
92
  }
94
93
  }
95
94
  });
@@ -116,229 +115,218 @@ export class CallEventHandler {
116
115
  this.client.removeListener(RoomEvent.Timeline, this.onRoomTimeline);
117
116
  this.client.removeListener(ClientEvent.ToDeviceEvent, this.onToDeviceEvent);
118
117
  }
119
- evaluateEventBuffer(eventBuffer) {
120
- var _this = this;
121
- return _asyncToGenerator(function* () {
122
- yield Promise.all(eventBuffer.map(event => _this.client.decryptEventIfNeeded(event)));
123
- var callEvents = eventBuffer.filter(event => {
124
- var eventType = event.getType();
125
- return eventType.startsWith("m.call.") || eventType.startsWith("org.matrix.call.");
126
- });
127
- var ignoreCallIds = new Set();
118
+ async evaluateEventBuffer(eventBuffer) {
119
+ await Promise.all(eventBuffer.map(event => this.client.decryptEventIfNeeded(event)));
120
+ const callEvents = eventBuffer.filter(event => {
121
+ const eventType = event.getType();
122
+ return eventType.startsWith("m.call.") || eventType.startsWith("org.matrix.call.");
123
+ });
124
+ const ignoreCallIds = new Set();
128
125
 
129
- // inspect the buffer and mark all calls which have been answered
130
- // or hung up before passing them to the call event handler.
131
- for (var event of callEvents) {
132
- var eventType = event.getType();
133
- if (eventType === EventType.CallAnswer || eventType === EventType.CallHangup) {
134
- ignoreCallIds.add(event.getContent().call_id);
135
- }
126
+ // inspect the buffer and mark all calls which have been answered
127
+ // or hung up before passing them to the call event handler.
128
+ for (const event of callEvents) {
129
+ const eventType = event.getType();
130
+ if (eventType === EventType.CallAnswer || eventType === EventType.CallHangup) {
131
+ ignoreCallIds.add(event.getContent().call_id);
136
132
  }
133
+ }
137
134
 
138
- // Process call events in the order that they were received
139
- for (var _event of callEvents) {
140
- var _eventType = _event.getType();
141
- var callId = _event.getContent().call_id;
142
- if (_eventType === EventType.CallInvite && ignoreCallIds.has(callId)) {
143
- // This call has previously been answered or hung up: ignore it
144
- continue;
145
- }
146
- try {
147
- yield _this.handleCallEvent(_event);
148
- } catch (e) {
149
- logger.error("CallEventHandler evaluateEventBuffer() caught exception handling call event", e);
150
- }
135
+ // Process call events in the order that they were received
136
+ for (const event of callEvents) {
137
+ const eventType = event.getType();
138
+ const callId = event.getContent().call_id;
139
+ if (eventType === EventType.CallInvite && ignoreCallIds.has(callId)) {
140
+ // This call has previously been answered or hung up: ignore it
141
+ continue;
151
142
  }
152
- })();
143
+ try {
144
+ await this.handleCallEvent(event);
145
+ } catch (e) {
146
+ logger.error("CallEventHandler evaluateEventBuffer() caught exception handling call event", e);
147
+ }
148
+ }
153
149
  }
154
- handleCallEvent(event) {
155
- var _this2 = this;
156
- return _asyncToGenerator(function* () {
157
- var _getGroupCallById;
158
- _this2.client.emit(ClientEvent.ReceivedVoipEvent, event);
159
- var content = event.getContent();
160
- var callRoomId = event.getRoomId() || ((_getGroupCallById = _this2.client.groupCallEventHandler.getGroupCallById(content.conf_id)) === null || _getGroupCallById === void 0 || (_getGroupCallById = _getGroupCallById.room) === null || _getGroupCallById === void 0 ? void 0 : _getGroupCallById.roomId);
161
- var groupCallId = content.conf_id;
162
- var type = event.getType();
163
- var senderId = event.getSender();
164
- var call = content.call_id ? _this2.calls.get(content.call_id) : undefined;
165
- var opponentDeviceId;
166
- var groupCall;
167
- if (groupCallId) {
168
- groupCall = _this2.client.groupCallEventHandler.getGroupCallById(groupCallId);
169
- if (!groupCall) {
170
- logger.warn("CallEventHandler handleCallEvent() could not find a group call - ignoring event (groupCallId=".concat(groupCallId, ", type=").concat(type, ")"));
171
- return;
172
- }
173
- opponentDeviceId = content.device_id;
174
- if (!opponentDeviceId) {
175
- logger.warn("CallEventHandler handleCallEvent() could not find a device id - ignoring event (senderId=".concat(senderId, ")"));
176
- groupCall.emit(GroupCallEvent.Error, new GroupCallUnknownDeviceError(senderId));
177
- return;
178
- }
179
- if (content.dest_session_id !== _this2.client.getSessionId()) {
180
- logger.warn("CallEventHandler handleCallEvent() call event does not match current session id - ignoring");
181
- return;
182
- }
150
+ async handleCallEvent(event) {
151
+ this.client.emit(ClientEvent.ReceivedVoipEvent, event);
152
+ const content = event.getContent();
153
+ const callRoomId = event.getRoomId() || this.client.groupCallEventHandler.getGroupCallById(content.conf_id)?.room?.roomId;
154
+ const groupCallId = content.conf_id;
155
+ const type = event.getType();
156
+ const senderId = event.getSender();
157
+ let call = content.call_id ? this.calls.get(content.call_id) : undefined;
158
+ let opponentDeviceId;
159
+ let groupCall;
160
+ if (groupCallId) {
161
+ groupCall = this.client.groupCallEventHandler.getGroupCallById(groupCallId);
162
+ if (!groupCall) {
163
+ logger.warn(`CallEventHandler handleCallEvent() could not find a group call - ignoring event (groupCallId=${groupCallId}, type=${type})`);
164
+ return;
183
165
  }
184
- var weSentTheEvent = senderId === _this2.client.credentials.userId && (opponentDeviceId === undefined || opponentDeviceId === _this2.client.getDeviceId());
185
- if (!callRoomId) return;
186
- if (type === EventType.CallInvite) {
187
- var _this2$client$getTurn, _createNewMatrixCall, _groupCall;
188
- // ignore invites you send
189
- if (weSentTheEvent) return;
190
- // expired call
191
- if (event.getLocalAge() > content.lifetime - RING_GRACE_PERIOD) return;
192
- // stale/old invite event
193
- if (call && call.state === CallState.Ended) return;
194
- if (call) {
195
- logger.warn("CallEventHandler handleCallEvent() already has a call but got an invite - clobbering (callId=".concat(content.call_id, ")"));
196
- }
197
- if (content.invitee && content.invitee !== _this2.client.getUserId()) {
198
- return; // This invite was meant for another user in the room
199
- }
200
- var timeUntilTurnCresExpire = ((_this2$client$getTurn = _this2.client.getTurnServersExpiry()) !== null && _this2$client$getTurn !== void 0 ? _this2$client$getTurn : 0) - Date.now();
201
- logger.info("CallEventHandler handleCallEvent() current turn creds expire in " + timeUntilTurnCresExpire + " ms");
202
- call = (_createNewMatrixCall = createNewMatrixCall(_this2.client, callRoomId, {
203
- forceTURN: _this2.client.forceTURN,
204
- opponentDeviceId,
205
- groupCallId,
206
- opponentSessionId: content.sender_session_id
207
- })) !== null && _createNewMatrixCall !== void 0 ? _createNewMatrixCall : undefined;
208
- if (!call) {
209
- logger.log("CallEventHandler handleCallEvent() this client does not support WebRTC (callId=".concat(content.call_id, ")"));
210
- // don't hang up the call: there could be other clients
211
- // connected that do support WebRTC and declining the
212
- // the call on their behalf would be really annoying.
213
- return;
214
- }
215
- call.callId = content.call_id;
216
- var stats = (_groupCall = groupCall) === null || _groupCall === void 0 ? void 0 : _groupCall.getGroupCallStats();
217
- if (stats) {
218
- call.initStats(stats);
219
- }
220
- try {
221
- yield call.initWithInvite(event);
222
- } catch (e) {
223
- if (e instanceof CallError) {
224
- if (e.code === GroupCallErrorCode.UnknownDevice) {
225
- var _groupCall2;
226
- (_groupCall2 = groupCall) === null || _groupCall2 === void 0 || _groupCall2.emit(GroupCallEvent.Error, e);
227
- } else {
228
- logger.error(e);
229
- }
166
+ opponentDeviceId = content.device_id;
167
+ if (!opponentDeviceId) {
168
+ logger.warn(`CallEventHandler handleCallEvent() could not find a device id - ignoring event (senderId=${senderId})`);
169
+ groupCall.emit(GroupCallEvent.Error, new GroupCallUnknownDeviceError(senderId));
170
+ return;
171
+ }
172
+ if (content.dest_session_id !== this.client.getSessionId()) {
173
+ logger.warn("CallEventHandler handleCallEvent() call event does not match current session id - ignoring");
174
+ return;
175
+ }
176
+ }
177
+ const weSentTheEvent = senderId === this.client.credentials.userId && (opponentDeviceId === undefined || opponentDeviceId === this.client.getDeviceId());
178
+ if (!callRoomId) return;
179
+ if (type === EventType.CallInvite) {
180
+ // ignore invites you send
181
+ if (weSentTheEvent) return;
182
+ // expired call
183
+ if (event.getLocalAge() > content.lifetime - RING_GRACE_PERIOD) return;
184
+ // stale/old invite event
185
+ if (call && call.state === CallState.Ended) return;
186
+ if (call) {
187
+ logger.warn(`CallEventHandler handleCallEvent() already has a call but got an invite - clobbering (callId=${content.call_id})`);
188
+ }
189
+ if (content.invitee && content.invitee !== this.client.getUserId()) {
190
+ return; // This invite was meant for another user in the room
191
+ }
192
+ const timeUntilTurnCresExpire = (this.client.getTurnServersExpiry() ?? 0) - Date.now();
193
+ logger.info("CallEventHandler handleCallEvent() current turn creds expire in " + timeUntilTurnCresExpire + " ms");
194
+ call = createNewMatrixCall(this.client, callRoomId, {
195
+ forceTURN: this.client.forceTURN,
196
+ opponentDeviceId,
197
+ groupCallId,
198
+ opponentSessionId: content.sender_session_id
199
+ }) ?? undefined;
200
+ if (!call) {
201
+ logger.log(`CallEventHandler handleCallEvent() this client does not support WebRTC (callId=${content.call_id})`);
202
+ // don't hang up the call: there could be other clients
203
+ // connected that do support WebRTC and declining the
204
+ // the call on their behalf would be really annoying.
205
+ return;
206
+ }
207
+ call.callId = content.call_id;
208
+ const stats = groupCall?.getGroupCallStats();
209
+ if (stats) {
210
+ call.initStats(stats);
211
+ }
212
+ try {
213
+ await call.initWithInvite(event);
214
+ } catch (e) {
215
+ if (e instanceof CallError) {
216
+ if (e.code === GroupCallErrorCode.UnknownDevice) {
217
+ groupCall?.emit(GroupCallEvent.Error, e);
218
+ } else {
219
+ logger.error(e);
230
220
  }
231
221
  }
232
- _this2.calls.set(call.callId, call);
222
+ }
223
+ this.calls.set(call.callId, call);
233
224
 
234
- // if we stashed candidate events for that call ID, play them back now
235
- if (_this2.candidateEventsByCall.get(call.callId)) {
236
- for (var ev of _this2.candidateEventsByCall.get(call.callId)) {
237
- call.onRemoteIceCandidatesReceived(ev);
238
- }
225
+ // if we stashed candidate events for that call ID, play them back now
226
+ if (this.candidateEventsByCall.get(call.callId)) {
227
+ for (const ev of this.candidateEventsByCall.get(call.callId)) {
228
+ call.onRemoteIceCandidatesReceived(ev);
239
229
  }
230
+ }
240
231
 
241
- // Were we trying to call that user (room)?
242
- var existingCall;
243
- for (var thisCall of _this2.calls.values()) {
244
- var _call$getOpponentMemb;
245
- var isCalling = [CallState.WaitLocalMedia, CallState.CreateOffer, CallState.InviteSent].includes(thisCall.state);
246
- if (call.roomId === thisCall.roomId && thisCall.direction === CallDirection.Outbound && ((_call$getOpponentMemb = call.getOpponentMember()) === null || _call$getOpponentMemb === void 0 ? void 0 : _call$getOpponentMemb.userId) === thisCall.invitee && isCalling) {
247
- existingCall = thisCall;
248
- break;
249
- }
232
+ // Were we trying to call that user (room)?
233
+ let existingCall;
234
+ for (const thisCall of this.calls.values()) {
235
+ const isCalling = [CallState.WaitLocalMedia, CallState.CreateOffer, CallState.InviteSent].includes(thisCall.state);
236
+ if (call.roomId === thisCall.roomId && thisCall.direction === CallDirection.Outbound && call.getOpponentMember()?.userId === thisCall.invitee && isCalling) {
237
+ existingCall = thisCall;
238
+ break;
250
239
  }
251
- if (existingCall) {
252
- if (existingCall.callId > call.callId) {
253
- logger.log("CallEventHandler handleCallEvent() detected glare - answering incoming call and canceling outgoing call (incomingId=".concat(call.callId, ", outgoingId=").concat(existingCall.callId, ")"));
254
- existingCall.replacedBy(call);
255
- } else {
256
- logger.log("CallEventHandler handleCallEvent() detected glare - hanging up incoming call (incomingId=".concat(call.callId, ", outgoingId=").concat(existingCall.callId, ")"));
257
- call.hangup(CallErrorCode.Replaced, true);
258
- }
240
+ }
241
+ if (existingCall) {
242
+ if (existingCall.callId > call.callId) {
243
+ logger.log(`CallEventHandler handleCallEvent() detected glare - answering incoming call and canceling outgoing call (incomingId=${call.callId}, outgoingId=${existingCall.callId})`);
244
+ existingCall.replacedBy(call);
259
245
  } else {
260
- _this2.client.emit(CallEventHandlerEvent.Incoming, call);
246
+ logger.log(`CallEventHandler handleCallEvent() detected glare - hanging up incoming call (incomingId=${call.callId}, outgoingId=${existingCall.callId})`);
247
+ call.hangup(CallErrorCode.Replaced, true);
261
248
  }
262
- return;
263
- } else if (type === EventType.CallCandidates) {
264
- if (weSentTheEvent) return;
265
- if (!call) {
266
- // store the candidates; we may get a call eventually.
267
- if (!_this2.candidateEventsByCall.has(content.call_id)) {
268
- _this2.candidateEventsByCall.set(content.call_id, []);
269
- }
270
- _this2.candidateEventsByCall.get(content.call_id).push(event);
271
- } else {
272
- call.onRemoteIceCandidatesReceived(event);
249
+ } else {
250
+ this.client.emit(CallEventHandlerEvent.Incoming, call);
251
+ }
252
+ return;
253
+ } else if (type === EventType.CallCandidates) {
254
+ if (weSentTheEvent) return;
255
+ if (!call) {
256
+ // store the candidates; we may get a call eventually.
257
+ if (!this.candidateEventsByCall.has(content.call_id)) {
258
+ this.candidateEventsByCall.set(content.call_id, []);
273
259
  }
274
- return;
275
- } else if ([EventType.CallHangup, EventType.CallReject].includes(type)) {
276
- // Note that we also observe our own hangups here so we can see
277
- // if we've already rejected a call that would otherwise be valid
278
- if (!call) {
279
- var _createNewMatrixCall2;
280
- // if not live, store the fact that the call has ended because
281
- // we're probably getting events backwards so
282
- // the hangup will come before the invite
283
- call = (_createNewMatrixCall2 = createNewMatrixCall(_this2.client, callRoomId, {
284
- opponentDeviceId,
285
- opponentSessionId: content.sender_session_id
286
- })) !== null && _createNewMatrixCall2 !== void 0 ? _createNewMatrixCall2 : undefined;
287
- if (call) {
288
- call.callId = content.call_id;
289
- call.initWithHangup(event);
290
- _this2.calls.set(content.call_id, call);
260
+ this.candidateEventsByCall.get(content.call_id).push(event);
261
+ } else {
262
+ call.onRemoteIceCandidatesReceived(event);
263
+ }
264
+ return;
265
+ } else if ([EventType.CallHangup, EventType.CallReject].includes(type)) {
266
+ // Note that we also observe our own hangups here so we can see
267
+ // if we've already rejected a call that would otherwise be valid
268
+ if (!call) {
269
+ // if not live, store the fact that the call has ended because
270
+ // we're probably getting events backwards so
271
+ // the hangup will come before the invite
272
+ call = createNewMatrixCall(this.client, callRoomId, {
273
+ opponentDeviceId,
274
+ opponentSessionId: content.sender_session_id
275
+ }) ?? undefined;
276
+ if (call) {
277
+ call.callId = content.call_id;
278
+ call.initWithHangup(event);
279
+ this.calls.set(content.call_id, call);
280
+ }
281
+ } else {
282
+ if (call.state !== CallState.Ended) {
283
+ if (type === EventType.CallHangup) {
284
+ call.onHangupReceived(content);
285
+ } else {
286
+ call.onRejectReceived(content);
291
287
  }
292
- } else {
293
- if (call.state !== CallState.Ended) {
294
- if (type === EventType.CallHangup) {
295
- call.onHangupReceived(content);
296
- } else {
297
- call.onRejectReceived(content);
298
- }
299
288
 
300
- // @ts-expect-error typescript thinks the state can't be 'ended' because we're
301
- // inside the if block where it wasn't, but it could have changed because
302
- // on[Hangup|Reject]Received are side-effecty.
303
- if (call.state === CallState.Ended) _this2.calls.delete(content.call_id);
304
- }
289
+ // @ts-expect-error typescript thinks the state can't be 'ended' because we're
290
+ // inside the if block where it wasn't, but it could have changed because
291
+ // on[Hangup|Reject]Received are side-effecty.
292
+ if (call.state === CallState.Ended) this.calls.delete(content.call_id);
305
293
  }
306
- return;
307
294
  }
295
+ return;
296
+ }
308
297
 
309
- // The following events need a call and a peer connection
310
- if (!call || !call.hasPeerConnection) {
311
- logger.info("CallEventHandler handleCallEvent() discarding possible call event as we don't have a call (type=".concat(type, ")"));
312
- return;
313
- }
314
- // Ignore remote echo
315
- if (event.getContent().party_id === call.ourPartyId) return;
316
- switch (type) {
317
- case EventType.CallAnswer:
318
- if (weSentTheEvent) {
319
- if (call.state === CallState.Ringing) {
320
- call.onAnsweredElsewhere(content);
321
- }
322
- } else {
323
- call.onAnswerReceived(event);
298
+ // The following events need a call and a peer connection
299
+ if (!call || !call.hasPeerConnection) {
300
+ logger.info(`CallEventHandler handleCallEvent() discarding possible call event as we don't have a call (type=${type})`);
301
+ return;
302
+ }
303
+ // Ignore remote echo
304
+ if (event.getContent().party_id === call.ourPartyId) return;
305
+ switch (type) {
306
+ case EventType.CallAnswer:
307
+ if (weSentTheEvent) {
308
+ if (call.state === CallState.Ringing) {
309
+ call.onAnsweredElsewhere(content);
324
310
  }
325
- break;
326
- case EventType.CallSelectAnswer:
327
- call.onSelectAnswerReceived(event);
328
- break;
329
- case EventType.CallNegotiate:
330
- call.onNegotiateReceived(event);
331
- break;
332
- case EventType.CallAssertedIdentity:
333
- case EventType.CallAssertedIdentityPrefix:
334
- call.onAssertedIdentityReceived(event);
335
- break;
336
- case EventType.CallSDPStreamMetadataChanged:
337
- case EventType.CallSDPStreamMetadataChangedPrefix:
338
- call.onSDPStreamMetadataChangedReceived(event);
339
- break;
340
- }
341
- })();
311
+ } else {
312
+ call.onAnswerReceived(event);
313
+ }
314
+ break;
315
+ case EventType.CallSelectAnswer:
316
+ call.onSelectAnswerReceived(event);
317
+ break;
318
+ case EventType.CallNegotiate:
319
+ call.onNegotiateReceived(event);
320
+ break;
321
+ case EventType.CallAssertedIdentity:
322
+ case EventType.CallAssertedIdentityPrefix:
323
+ call.onAssertedIdentityReceived(event);
324
+ break;
325
+ case EventType.CallSDPStreamMetadataChanged:
326
+ case EventType.CallSDPStreamMetadataChangedPrefix:
327
+ call.onSDPStreamMetadataChangedReceived(event);
328
+ break;
329
+ }
342
330
  }
343
331
  }
344
332
  //# sourceMappingURL=callEventHandler.js.map