Skip to content

Commit 3f5a994

Browse files
authored
Add via parameter for MSC4156 (#4247)
* Add via parameter for MSC4156 Signed-off-by: Johannes Marbach <n0-0ne+github@mailbox.org> * Always include both parameters * Fix tests --------- Signed-off-by: Johannes Marbach <n0-0ne+github@mailbox.org>
1 parent d754392 commit 3f5a994

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ describe("MatrixClient", function () {
257257
.when("POST", "/knock/" + encodeURIComponent(roomId))
258258
.check((request) => {
259259
expect(request.data).toEqual({ reason: opts.reason });
260-
expect(request.queryParams).toEqual({ server_name: opts.viaServers });
260+
expect(request.queryParams).toEqual({ server_name: opts.viaServers, via: opts.viaServers });
261261
})
262262
.respond(200, { room_id: roomId });
263263

src/client.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4319,9 +4319,13 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
43194319
signPromise = this.http.requestOtherUrl<IThirdPartySigned>(Method.Post, url);
43204320
}
43214321

4322-
const queryString: Record<string, string | string[]> = {};
4322+
let queryParams: QueryDict = {};
43234323
if (opts.viaServers) {
4324-
queryString["server_name"] = opts.viaServers;
4324+
queryParams.server_name = opts.viaServers;
4325+
queryParams.via = opts.viaServers;
4326+
if (this.canSupport.get(Feature.MigrateServerNameToVia) === ServerSupport.Unstable) {
4327+
queryParams = replaceParam("via", "org.matrix.msc4156.via", queryParams);
4328+
}
43254329
}
43264330

43274331
const data: IJoinRequestBody = {};
@@ -4331,7 +4335,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
43314335
}
43324336

43334337
const path = utils.encodeUri("/join/$roomid", { $roomid: roomIdOrAlias });
4334-
const res = await this.http.authedRequest<{ room_id: string }>(Method.Post, path, queryString, data);
4338+
const res = await this.http.authedRequest<{ room_id: string }>(Method.Post, path, queryParams, data);
43354339

43364340
const roomId = res.room_id;
43374341
// In case we were originally given an alias, check the room cache again
@@ -4364,9 +4368,13 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
43644368

43654369
const path = utils.encodeUri("/knock/$roomIdOrAlias", { $roomIdOrAlias: roomIdOrAlias });
43664370

4367-
const queryParams: Record<string, string | string[]> = {};
4371+
let queryParams: QueryDict = {};
43684372
if (opts.viaServers) {
43694373
queryParams.server_name = opts.viaServers;
4374+
queryParams.via = opts.viaServers;
4375+
if (this.canSupport.get(Feature.MigrateServerNameToVia) === ServerSupport.Unstable) {
4376+
queryParams = replaceParam("via", "org.matrix.msc4156.via", queryParams);
4377+
}
43704378
}
43714379

43724380
const body: Record<string, string> = {};

src/feature.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export enum Feature {
3333
AccountDataDeletion = "AccountDataDeletion",
3434
RelationsRecursion = "RelationsRecursion",
3535
IntentionalMentions = "IntentionalMentions",
36+
MigrateServerNameToVia = "MigrateServerNameToVia",
3637
}
3738

3839
type FeatureSupportCondition = {
@@ -65,6 +66,9 @@ const featureSupportResolver: Record<string, FeatureSupportCondition> = {
6566
unstablePrefixes: ["org.matrix.msc3952_intentional_mentions"],
6667
matrixVersion: "v1.7",
6768
},
69+
[Feature.MigrateServerNameToVia]: {
70+
unstablePrefixes: ["org.matrix.msc4156"],
71+
},
6872
};
6973

7074
export async function buildFeatureSupportMap(versions: IServerVersions): Promise<Map<Feature, ServerSupport>> {

0 commit comments

Comments
 (0)