Skip to content

Commit 442ed2f

Browse files
committed
1 parent 5b4b573 commit 442ed2f

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/Link.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {createEnum} from "./utils/enum.js";
1818
import {orderedUnique} from "./utils/unique.js";
1919

2020
const ROOMALIAS_PATTERN = /^#([^:]*):(.+)$/;
21-
const ROOMID_PATTERN = /^!([^:]*):(.+)$/;
21+
const ROOMID_PATTERN = /^!([^:]*)(:(.+))?$/; // As of room version 12, room IDs don't have domains
2222
const USERID_PATTERN = /^@([^:]+):(.+)$/;
2323
const EVENTID_PATTERN = /^$([^:]+):(.+)$/;
2424
const GROUPID_PATTERN = /^\+([^:]+):(.+)$/;
@@ -92,7 +92,7 @@ export class Link {
9292
static validateIdentifier(identifier) {
9393
return !!(
9494
USERID_PATTERN.exec(identifier) ||
95-
ROOMALIAS_PATTERN.exec(identifier) ||
95+
ROOMALIAS_PATTERN.exec(identifier) ||
9696
ROOMID_PATTERN.exec(identifier) ||
9797
GROUPID_PATTERN.exec(identifier)
9898
);
@@ -166,12 +166,19 @@ export class Link {
166166
}
167167

168168
constructor(clientId, viaServers, identifierKind, localPart, server, webInstances, eventId) {
169-
const servers = [server];
169+
const servers = [];
170+
if (server !== undefined) {
171+
servers.push(server); // v12 rooms don't have domains, and therefore no server
172+
}
170173
servers.push(...viaServers);
171174
this.webInstances = webInstances;
172175
this.servers = orderedUnique(servers);
173176
this.identifierKind = identifierKind;
174-
this.identifier = `${asPrefix(identifierKind)}${localPart}:${server}`;
177+
if (identifierKind === IdentifierKind.RoomId && !server) {
178+
this.identifier = `${asPrefix(identifierKind)}${localPart}`;
179+
} else {
180+
this.identifier = `${asPrefix(identifierKind)}${localPart}:${server}`;
181+
}
175182
this.eventId = eventId;
176183
this.clientId = clientId;
177184
}

0 commit comments

Comments
 (0)