diff --git a/src/UrlParams.ts b/src/UrlParams.ts index 85071eb6..e6f0cd05 100644 --- a/src/UrlParams.ts +++ b/src/UrlParams.ts @@ -108,8 +108,11 @@ export const getUrlParams = ( pathname = window.location.pathname, hash = window.location.hash ): UrlParams => { + // This is legacy code - we're moving away from using aliases let roomAlias: string | null = null; if (!ignoreRoomAlias) { + // Here we handle the beginning of the alias and make sure it starts with a + // "#" if (hash === "" || hash.startsWith("#?")) { roomAlias = pathname.substring(1); // Strip the "/" @@ -125,17 +128,17 @@ export const getUrlParams = ( roomAlias = hash; } - // Add server part, if not present - if (!roomAlias.includes(":")) { - roomAlias = `${roomAlias}:${Config.defaultServerName()}`; - } - // Delete "?" and what comes afterwards roomAlias = roomAlias.split("?")[0]; - // Make roomAlias undefined, if empty if (roomAlias.length <= 1) { + // Make roomAlias is null, if it only is a "#" roomAlias = null; + } else { + // Add server part, if not present + if (!roomAlias.includes(":")) { + roomAlias = `${roomAlias}:${Config.defaultServerName()}`; + } } } diff --git a/src/matrix-utils.ts b/src/matrix-utils.ts index ba76b665..d074fa3f 100644 --- a/src/matrix-utils.ts +++ b/src/matrix-utils.ts @@ -273,14 +273,15 @@ export function isLocalRoomId(roomId: string, client: MatrixClient): boolean { export async function createRoom( client: MatrixClient, name: string, - ptt: boolean + ptt: boolean, + e2ee: boolean ): Promise<[string, string]> { logger.log(`Creating room for group call`); const createPromise = client.createRoom({ visibility: Visibility.Private, preset: Preset.PublicChat, name, - room_alias_name: roomAliasLocalpartFromRoomName(name), + room_alias_name: e2ee ? undefined : roomAliasLocalpartFromRoomName(name), power_level_content_override: { invite: 100, kick: 100, @@ -342,20 +343,16 @@ export async function createRoom( return [fullAliasFromRoomName(name, client), result.room_id]; } -// Returns a URL to that will load Element Call with the given room -export function getRoomUrl( - roomIdOrAlias: string, - password: string = "" -): string { - password = password === "" ? "" : "#?" + PASSWORD_STRING + password; - - if (roomIdOrAlias.startsWith("#")) { - return `${window.location.protocol}//${window.location.host}/${ - roomIdOrAlias.substring(1).split(":")[0] - }${password}`; - } else { - return `${window.location.protocol}//${window.location.host}/room?roomId=${roomIdOrAlias}${password}`; - } +/** + * Returns a URL to that will load Element Call with the given room + * @param roomId of the room + * @param password + * @returns + */ +export function getRoomUrl(roomId: string, password?: string): string { + return `${window.location.protocol}//${ + window.location.host + }/room/#?roomId=${roomId}${password ? "&" + PASSWORD_STRING + password : ""}`; } export function getAvatarUrl(