Skip to content

Commit f94634a

Browse files
committed
Merge tag 'v23.3.0' into sc
* Element-R: implement encryption of outgoing events ([\matrix-org#3122](matrix-org#3122)). * Poll model - page /relations results ([\matrix-org#3073](matrix-org#3073)). Contributed by @kerryarchibald. * Poll model - validate end events ([\matrix-org#3072](matrix-org#3072)). Contributed by @kerryarchibald. * Handle optional last_known_event_id property in m.predecessor ([\matrix-org#3119](matrix-org#3119)). Contributed by @andybalaam. * Add support for stable identifier for fixed MAC in SAS verification ([\matrix-org#3101](matrix-org#3101)). * Provide eventId as well as roomId from Room.findPredecessor ([\matrix-org#3095](matrix-org#3095)). Contributed by @andybalaam. * MSC3946 Dynamic room predecessors ([\matrix-org#3042](matrix-org#3042)). Contributed by @andybalaam. * Poll model ([\matrix-org#3036](matrix-org#3036)). Contributed by @kerryarchibald. * Remove video tracks on video mute without renegotiating ([\matrix-org#3091](matrix-org#3091)). * Introduces a backwards-compatible API change. `MegolmEncrypter#prepareToEncrypt`'s return type has changed from `void` to `() => void`. ([\matrix-org#3035](matrix-org#3035)). Contributed by @clarkf. * Stop the ICE disconnected timer on call terminate ([\matrix-org#3147](matrix-org#3147)). * Clear notifications when we can infer read status from receipts ([\matrix-org#3139](matrix-org#3139)). Fixes element-hq/element-web#23991. * Messages sent out of order after one message fails ([\matrix-org#3131](matrix-org#3131)). Fixes element-hq/element-web#22885 and element-hq/element-web#18942. Contributed by @justjanne. * Element-R: fix a bug which prevented encryption working after a reload ([\matrix-org#3126](matrix-org#3126)). * Element-R: Fix invite processing ([\matrix-org#3121](matrix-org#3121)). * Don't throw with no `opponentDeviceInfo` ([\matrix-org#3107](matrix-org#3107)). * Remove flaky megolm test ([\matrix-org#3098](matrix-org#3098)). Contributed by @clarkf. * Fix "verifyLinks" functionality of getRoomUpgradeHistory ([\matrix-org#3089](matrix-org#3089)). Contributed by @andybalaam.
2 parents 7158a99 + 1825342 commit f94634a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+3080
-659
lines changed

.eslintrc.js

+3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
module.exports = {
22
plugins: ["matrix-org", "import", "jsdoc"],
33
extends: ["plugin:matrix-org/babel", "plugin:import/typescript"],
4+
parserOptions: {
5+
project: ["./tsconfig.json"],
6+
},
47
env: {
58
browser: true,
69
node: true,

CHANGELOG.md

+25
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,28 @@
1+
Changes in [23.3.0](https://github.com/matrix-org/matrix-js-sdk/releases/tag/v23.3.0) (2023-02-14)
2+
==================================================================================================
3+
4+
## ✨ Features
5+
* Element-R: implement encryption of outgoing events ([\#3122](https://github.com/matrix-org/matrix-js-sdk/pull/3122)).
6+
* Poll model - page /relations results ([\#3073](https://github.com/matrix-org/matrix-js-sdk/pull/3073)). Contributed by @kerryarchibald.
7+
* Poll model - validate end events ([\#3072](https://github.com/matrix-org/matrix-js-sdk/pull/3072)). Contributed by @kerryarchibald.
8+
* Handle optional last_known_event_id property in m.predecessor ([\#3119](https://github.com/matrix-org/matrix-js-sdk/pull/3119)). Contributed by @andybalaam.
9+
* Add support for stable identifier for fixed MAC in SAS verification ([\#3101](https://github.com/matrix-org/matrix-js-sdk/pull/3101)).
10+
* Provide eventId as well as roomId from Room.findPredecessor ([\#3095](https://github.com/matrix-org/matrix-js-sdk/pull/3095)). Contributed by @andybalaam.
11+
* MSC3946 Dynamic room predecessors ([\#3042](https://github.com/matrix-org/matrix-js-sdk/pull/3042)). Contributed by @andybalaam.
12+
* Poll model ([\#3036](https://github.com/matrix-org/matrix-js-sdk/pull/3036)). Contributed by @kerryarchibald.
13+
* Remove video tracks on video mute without renegotiating ([\#3091](https://github.com/matrix-org/matrix-js-sdk/pull/3091)).
14+
* Introduces a backwards-compatible API change. `MegolmEncrypter#prepareToEncrypt`'s return type has changed from `void` to `() => void`. ([\#3035](https://github.com/matrix-org/matrix-js-sdk/pull/3035)). Contributed by @clarkf.
15+
16+
## 🐛 Bug Fixes
17+
* Stop the ICE disconnected timer on call terminate ([\#3147](https://github.com/matrix-org/matrix-js-sdk/pull/3147)).
18+
* Clear notifications when we can infer read status from receipts ([\#3139](https://github.com/matrix-org/matrix-js-sdk/pull/3139)). Fixes vector-im/element-web#23991.
19+
* Messages sent out of order after one message fails ([\#3131](https://github.com/matrix-org/matrix-js-sdk/pull/3131)). Fixes vector-im/element-web#22885 and vector-im/element-web#18942. Contributed by @justjanne.
20+
* Element-R: fix a bug which prevented encryption working after a reload ([\#3126](https://github.com/matrix-org/matrix-js-sdk/pull/3126)).
21+
* Element-R: Fix invite processing ([\#3121](https://github.com/matrix-org/matrix-js-sdk/pull/3121)).
22+
* Don't throw with no `opponentDeviceInfo` ([\#3107](https://github.com/matrix-org/matrix-js-sdk/pull/3107)).
23+
* Remove flaky megolm test ([\#3098](https://github.com/matrix-org/matrix-js-sdk/pull/3098)). Contributed by @clarkf.
24+
* Fix "verifyLinks" functionality of getRoomUpgradeHistory ([\#3089](https://github.com/matrix-org/matrix-js-sdk/pull/3089)). Contributed by @andybalaam.
25+
126
Changes in [23.2.0](https://github.com/matrix-org/matrix-js-sdk/releases/tag/v23.2.0) (2023-01-31)
227
==================================================================================================
328

package.json

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "matrix-js-sdk",
3-
"version": "23.2.0",
3+
"version": "23.3.0",
44
"description": "Matrix Client-Server SDK for Javascript",
55
"engines": {
66
"node": ">=16.0.0"
@@ -33,7 +33,7 @@
3333
"matrix-org"
3434
],
3535
"main": "./lib/index.js",
36-
"browser": "./src/browser-index.ts",
36+
"browser": "./lib/browser-index.js",
3737
"matrix_src_main": "./src/index.ts",
3838
"matrix_src_browser": "./src/browser-index.ts",
3939
"matrix_lib_main": "./lib/index.js",
@@ -55,7 +55,7 @@
5555
],
5656
"dependencies": {
5757
"@babel/runtime": "^7.12.5",
58-
"@matrix-org/matrix-sdk-crypto-js": "^0.1.0-alpha.2",
58+
"@matrix-org/matrix-sdk-crypto-js": "^0.1.0-alpha.3",
5959
"another-json": "^0.2.0",
6060
"bs58": "^5.0.0",
6161
"content-type": "^1.0.4",
@@ -88,7 +88,7 @@
8888
"@types/jest": "^29.0.0",
8989
"@types/node": "18",
9090
"@types/sdp-transform": "^2.4.5",
91-
"@types/uuid": "7",
91+
"@types/uuid": "9",
9292
"@typescript-eslint/eslint-plugin": "^5.45.0",
9393
"@typescript-eslint/parser": "^5.45.0",
9494
"allchange": "^1.0.6",
@@ -98,24 +98,25 @@
9898
"browserify": "^17.0.0",
9999
"docdash": "^2.0.0",
100100
"domexception": "^4.0.0",
101-
"eslint": "8.31.0",
101+
"eslint": "8.32.0",
102102
"eslint-config-google": "^0.14.0",
103103
"eslint-config-prettier": "^8.5.0",
104104
"eslint-import-resolver-typescript": "^3.5.1",
105105
"eslint-plugin-import": "^2.26.0",
106106
"eslint-plugin-jsdoc": "^39.6.4",
107-
"eslint-plugin-matrix-org": "^0.9.0",
107+
"eslint-plugin-matrix-org": "^0.10.0",
108108
"eslint-plugin-tsdoc": "^0.2.17",
109109
"eslint-plugin-unicorn": "^45.0.0",
110110
"exorcist": "^2.0.0",
111111
"fake-indexeddb": "^4.0.0",
112+
"fetch-mock-jest": "^1.5.1",
112113
"jest": "^29.0.0",
113114
"jest-environment-jsdom": "^29.0.0",
114115
"jest-localstorage-mock": "^2.4.6",
115116
"jest-mock": "^29.0.0",
116117
"matrix-mock-request": "^2.5.0",
117-
"prettier": "2.8.2",
118-
"rimraf": "^3.0.2",
118+
"prettier": "2.8.3",
119+
"rimraf": "^4.0.0",
119120
"terser": "^5.5.1",
120121
"tsify": "^5.0.2",
121122
"typedoc": "^0.23.20",

post-release.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jq --version > /dev/null || (echo "jq is required: please install it"; kill $$)
1111

1212
if [ "$(git branch -lr | grep origin/develop -c)" -ge 1 ]; then
1313
# When merging to develop, we need revert the `main` and `typings` fields if we adjusted them previously.
14-
for i in main typings
14+
for i in main typings browser
1515
do
1616
# If a `lib` prefixed value is present, it means we adjusted the field
1717
# earlier at publish time, so we should revert it now.

release.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ yarn version --no-git-tag-version --new-version "$release"
180180
# they exist). This small bit of gymnastics allows us to use the TypeScript
181181
# source directly for development without needing to build before linting or
182182
# testing.
183-
for i in main typings
183+
for i in main typings browser
184184
do
185185
lib_value=$(jq -r ".matrix_lib_$i" package.json)
186186
if [ "$lib_value" != "null" ]; then

spec/integ/crypto.spec.ts

+29
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,35 @@ describe.each(Object.entries(CRYPTO_BACKENDS))("megolm (%s)", (backend: string,
633633
expect(event.getContent().body).toEqual("42");
634634
});
635635

636+
oldBackendOnly("prepareToEncrypt", async () => {
637+
aliceTestClient.expectKeyQuery({ device_keys: { "@alice:localhost": {} }, failures: {} });
638+
await aliceTestClient.start();
639+
aliceTestClient.client.setGlobalErrorOnUnknownDevices(false);
640+
641+
// tell alice she is sharing a room with bob
642+
aliceTestClient.httpBackend.when("GET", "/sync").respond(200, getSyncResponse(["@bob:xyz"]));
643+
await aliceTestClient.flushSync();
644+
645+
// we expect alice first to query bob's keys...
646+
aliceTestClient.httpBackend.when("POST", "/keys/query").respond(200, getTestKeysQueryResponse("@bob:xyz"));
647+
aliceTestClient.httpBackend.flush("/keys/query", 1);
648+
649+
// ... and then claim one of his OTKs
650+
aliceTestClient.httpBackend.when("POST", "/keys/claim").respond(200, getTestKeysClaimResponse("@bob:xyz"));
651+
aliceTestClient.httpBackend.flush("/keys/claim", 1);
652+
653+
// fire off the prepare request
654+
const room = aliceTestClient.client.getRoom(ROOM_ID);
655+
expect(room).toBeTruthy();
656+
const p = aliceTestClient.client.prepareToEncrypt(room!);
657+
658+
// we expect to get a room key message
659+
await expectSendRoomKey(aliceTestClient.httpBackend, "@bob:xyz", testOlmAccount);
660+
661+
// the prepare request should complete successfully.
662+
await p;
663+
});
664+
636665
oldBackendOnly("Alice sends a megolm message", async () => {
637666
aliceTestClient.expectKeyQuery({ device_keys: { "@alice:localhost": {} }, failures: {} });
638667
await aliceTestClient.start();

spec/integ/matrix-client-event-timeline.spec.ts

+14-14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
Copyright 2022 The Matrix.org Foundation C.I.C.
2+
Copyright 2022 - 2023 The Matrix.org Foundation C.I.C.
33
44
Licensed under the Apache License, Version 2.0 (the "License");
55
you may not use this file except in compliance with the License.
@@ -590,7 +590,7 @@ describe("MatrixClient event timelines", function () {
590590

591591
it("should handle thread replies with server support by fetching a contiguous thread timeline", async () => {
592592
// @ts-ignore
593-
client.clientOpts.experimentalThreadSupport = true;
593+
client.clientOpts.threadSupport = true;
594594
Thread.setServerSideSupport(FeatureSupport.Experimental);
595595
await client.stopClient(); // we don't need the client to be syncing at this time
596596
const room = client.getRoom(roomId)!;
@@ -647,7 +647,7 @@ describe("MatrixClient event timelines", function () {
647647

648648
it("should return relevant timeline from non-thread timelineSet when asking for the thread root", async () => {
649649
// @ts-ignore
650-
client.clientOpts.experimentalThreadSupport = true;
650+
client.clientOpts.threadSupport = true;
651651
Thread.setServerSideSupport(FeatureSupport.Experimental);
652652
client.stopClient(); // we don't need the client to be syncing at this time
653653
const room = client.getRoom(roomId)!;
@@ -680,7 +680,7 @@ describe("MatrixClient event timelines", function () {
680680

681681
it("should return undefined when event is not in the thread that the given timelineSet is representing", () => {
682682
// @ts-ignore
683-
client.clientOpts.experimentalThreadSupport = true;
683+
client.clientOpts.threadSupport = true;
684684
Thread.setServerSideSupport(FeatureSupport.Experimental);
685685
client.stopClient(); // we don't need the client to be syncing at this time
686686
const room = client.getRoom(roomId)!;
@@ -709,7 +709,7 @@ describe("MatrixClient event timelines", function () {
709709

710710
it("should return undefined when event is within a thread but timelineSet is not", () => {
711711
// @ts-ignore
712-
client.clientOpts.experimentalThreadSupport = true;
712+
client.clientOpts.threadSupport = true;
713713
Thread.setServerSideSupport(FeatureSupport.Experimental);
714714
client.stopClient(); // we don't need the client to be syncing at this time
715715
const room = client.getRoom(roomId)!;
@@ -1127,7 +1127,7 @@ describe("MatrixClient event timelines", function () {
11271127
};
11281128

11291129
// @ts-ignore
1130-
client.clientOpts.experimentalThreadSupport = true;
1130+
client.clientOpts.threadSupport = true;
11311131
Thread.setServerSideSupport(FeatureSupport.Stable);
11321132
Thread.setServerSideListSupport(FeatureSupport.Stable);
11331133
Thread.setServerSideFwdPaginationSupport(FeatureSupport.Stable);
@@ -1263,7 +1263,7 @@ describe("MatrixClient event timelines", function () {
12631263
describe("with server compatibility", function () {
12641264
beforeEach(() => {
12651265
// @ts-ignore
1266-
client.clientOpts.experimentalThreadSupport = true;
1266+
client.clientOpts.threadSupport = true;
12671267
Thread.setServerSideSupport(FeatureSupport.Stable);
12681268
Thread.setServerSideListSupport(FeatureSupport.Stable);
12691269
Thread.setServerSideFwdPaginationSupport(FeatureSupport.Stable);
@@ -1421,7 +1421,7 @@ describe("MatrixClient event timelines", function () {
14211421
};
14221422

14231423
// @ts-ignore
1424-
client.clientOpts.experimentalThreadSupport = true;
1424+
client.clientOpts.threadSupport = true;
14251425
Thread.setServerSideSupport(FeatureSupport.Stable);
14261426
Thread.setServerSideListSupport(FeatureSupport.Stable);
14271427
Thread.setServerSideFwdPaginationSupport(FeatureSupport.Stable);
@@ -1473,7 +1473,7 @@ describe("MatrixClient event timelines", function () {
14731473
describe("without server compatibility", function () {
14741474
beforeEach(() => {
14751475
// @ts-ignore
1476-
client.clientOpts.experimentalThreadSupport = true;
1476+
client.clientOpts.threadSupport = true;
14771477
Thread.setServerSideSupport(FeatureSupport.Experimental);
14781478
Thread.setServerSideListSupport(FeatureSupport.None);
14791479
});
@@ -1539,7 +1539,7 @@ describe("MatrixClient event timelines", function () {
15391539

15401540
it("should add lazy loading filter", async () => {
15411541
// @ts-ignore
1542-
client.clientOpts.experimentalThreadSupport = true;
1542+
client.clientOpts.threadSupport = true;
15431543
Thread.setServerSideSupport(FeatureSupport.Experimental);
15441544
Thread.setServerSideListSupport(FeatureSupport.Stable);
15451545
// @ts-ignore
@@ -1567,7 +1567,7 @@ describe("MatrixClient event timelines", function () {
15671567

15681568
it("should correctly pass pagination token", async () => {
15691569
// @ts-ignore
1570-
client.clientOpts.experimentalThreadSupport = true;
1570+
client.clientOpts.threadSupport = true;
15711571
Thread.setServerSideSupport(FeatureSupport.Experimental);
15721572
Thread.setServerSideListSupport(FeatureSupport.Stable);
15731573

@@ -1892,7 +1892,7 @@ describe("MatrixClient event timelines", function () {
18921892

18931893
it("in stable mode", async () => {
18941894
// @ts-ignore
1895-
client.clientOpts.experimentalThreadSupport = true;
1895+
client.clientOpts.threadSupport = true;
18961896
Thread.setServerSideSupport(FeatureSupport.Stable);
18971897
Thread.setServerSideListSupport(FeatureSupport.Stable);
18981898
Thread.setServerSideFwdPaginationSupport(FeatureSupport.Stable);
@@ -1902,7 +1902,7 @@ describe("MatrixClient event timelines", function () {
19021902

19031903
it("in backwards compatible unstable mode", async () => {
19041904
// @ts-ignore
1905-
client.clientOpts.experimentalThreadSupport = true;
1905+
client.clientOpts.threadSupport = true;
19061906
Thread.setServerSideSupport(FeatureSupport.Experimental);
19071907
Thread.setServerSideListSupport(FeatureSupport.Experimental);
19081908
Thread.setServerSideFwdPaginationSupport(FeatureSupport.Experimental);
@@ -1912,7 +1912,7 @@ describe("MatrixClient event timelines", function () {
19121912

19131913
it("in backwards compatible mode", async () => {
19141914
// @ts-ignore
1915-
client.clientOpts.experimentalThreadSupport = true;
1915+
client.clientOpts.threadSupport = true;
19161916
Thread.setServerSideSupport(FeatureSupport.Experimental);
19171917
Thread.setServerSideListSupport(FeatureSupport.None);
19181918
Thread.setServerSideFwdPaginationSupport(FeatureSupport.None);

spec/integ/matrix-client-methods.spec.ts

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
Copyright 2022 The Matrix.org Foundation C.I.C.
2+
Copyright 2022 - 2023 The Matrix.org Foundation C.I.C.
33
44
Licensed under the Apache License, Version 2.0 (the "License");
55
you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ describe("MatrixClient", function () {
3535
let store: MemoryStore | undefined;
3636

3737
const defaultClientOpts: IStoredClientOpts = {
38-
experimentalThreadSupport: false,
38+
threadSupport: false,
3939
};
4040
const setupTests = (): [MatrixClient, HttpBackend, MemoryStore] => {
4141
const store = new MemoryStore();
@@ -671,7 +671,7 @@ describe("MatrixClient", function () {
671671
// @ts-ignore setting private property
672672
client!.clientOpts = {
673673
...defaultClientOpts,
674-
experimentalThreadSupport: true,
674+
threadSupport: true,
675675
};
676676

677677
const eventPollResponseReference = buildEventPollResponseReference();
@@ -702,7 +702,7 @@ describe("MatrixClient", function () {
702702
// @ts-ignore setting private property
703703
client!.clientOpts = {
704704
...defaultClientOpts,
705-
experimentalThreadSupport: true,
705+
threadSupport: true,
706706
};
707707

708708
const eventPollStartThreadRoot = buildEventPollStartThreadRoot();
@@ -726,7 +726,7 @@ describe("MatrixClient", function () {
726726
// @ts-ignore setting private property
727727
client!.clientOpts = {
728728
...defaultClientOpts,
729-
experimentalThreadSupport: true,
729+
threadSupport: true,
730730
};
731731

732732
const eventPollResponseReference = buildEventPollResponseReference();
@@ -750,7 +750,7 @@ describe("MatrixClient", function () {
750750
// @ts-ignore setting private property
751751
client!.clientOpts = {
752752
...defaultClientOpts,
753-
experimentalThreadSupport: true,
753+
threadSupport: true,
754754
};
755755

756756
const eventPollStartThreadRoot = buildEventPollStartThreadRoot();
@@ -774,7 +774,7 @@ describe("MatrixClient", function () {
774774
// @ts-ignore setting private property
775775
client!.clientOpts = {
776776
...defaultClientOpts,
777-
experimentalThreadSupport: true,
777+
threadSupport: true,
778778
};
779779
// This is based on recording the events in a real room:
780780

@@ -831,7 +831,7 @@ describe("MatrixClient", function () {
831831
// @ts-ignore setting private property
832832
client!.clientOpts = {
833833
...defaultClientOpts,
834-
experimentalThreadSupport: true,
834+
threadSupport: true,
835835
};
836836

837837
const threadRootEvent = buildEventPollStartThreadRoot();
@@ -857,7 +857,7 @@ describe("MatrixClient", function () {
857857
// @ts-ignore setting private property
858858
client!.clientOpts = {
859859
...defaultClientOpts,
860-
experimentalThreadSupport: true,
860+
threadSupport: true,
861861
};
862862

863863
const threadRootEvent = buildEventPollStartThreadRoot();
@@ -878,7 +878,7 @@ describe("MatrixClient", function () {
878878
// @ts-ignore setting private property
879879
client!.clientOpts = {
880880
...defaultClientOpts,
881-
experimentalThreadSupport: true,
881+
threadSupport: true,
882882
};
883883

884884
const threadRootEvent = buildEventPollStartThreadRoot();

spec/test-utils/client.ts

+1
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export const getMockClientWithEventEmitter = (
6060
*/
6161
export const mockClientMethodsUser = (userId = "@alice:domain") => ({
6262
getUserId: jest.fn().mockReturnValue(userId),
63+
getSafeUserId: jest.fn().mockReturnValue(userId),
6364
getUser: jest.fn().mockReturnValue(new User(userId)),
6465
isGuest: jest.fn().mockReturnValue(false),
6566
mxcUrlToHttp: jest.fn().mockReturnValue("mock-mxcUrlToHttp"),

spec/test-utils/webrtc.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
Copyright 2022 The Matrix.org Foundation C.I.C.
2+
Copyright 2022 - 2023 The Matrix.org Foundation C.I.C.
33
44
Licensed under the Apache License, Version 2.0 (the "License");
55
you may not use this file except in compliance with the License.
@@ -476,7 +476,7 @@ export class MockCallMatrixClient extends TypedEventEmitter<EmittedEvents, Emitt
476476
public getRooms = jest.fn<Room[], []>().mockReturnValue([]);
477477
public getRoom = jest.fn();
478478

479-
public supportsExperimentalThreads(): boolean {
479+
public supportsThreads(): boolean {
480480
return true;
481481
}
482482
public async decryptEventIfNeeded(): Promise<void> {}

0 commit comments

Comments
 (0)