Fix room creation
The room alias is not part of the spec. Synapse returns it anyway, but it's not part of the js-sdk types. We don't really need the server to tell us what the alias is, so just generate it locally instead.
This commit is contained in:
parent
9edc1acc90
commit
2cf40ff0b8
3 changed files with 15 additions and 8 deletions
|
@ -15,7 +15,7 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import React, { useState, useCallback } from "react";
|
||||
import { createRoom, roomAliasFromRoomName } from "../matrix-utils";
|
||||
import { createRoom, roomAliasLocalpartFromRoomName } from "../matrix-utils";
|
||||
import { useGroupCallRooms } from "./useGroupCallRooms";
|
||||
import { Header, HeaderLogo, LeftNav, RightNav } from "../Header";
|
||||
import commonStyles from "./common.module.css";
|
||||
|
@ -56,7 +56,7 @@ export function RegisteredView({ client }) {
|
|||
|
||||
submit().catch((error) => {
|
||||
if (error.errcode === "M_ROOM_IN_USE") {
|
||||
setExistingRoomId(roomAliasFromRoomName(roomName));
|
||||
setExistingRoomId(roomAliasLocalpartFromRoomName(roomName));
|
||||
setLoading(false);
|
||||
setError(undefined);
|
||||
modalState.open();
|
||||
|
|
|
@ -22,7 +22,7 @@ import { useHistory } from "react-router-dom";
|
|||
import { FieldRow, InputField, ErrorMessage } from "../input/Input";
|
||||
import { Button } from "../button";
|
||||
import { randomString } from "matrix-js-sdk/src/randomstring";
|
||||
import { createRoom, roomAliasFromRoomName } from "../matrix-utils";
|
||||
import { createRoom, roomAliasLocalpartFromRoomName } from "../matrix-utils";
|
||||
import { useInteractiveRegistration } from "../auth/useInteractiveRegistration";
|
||||
import { useModalTriggerState } from "../Modal";
|
||||
import { JoinExistingCallModal } from "./JoinExistingCallModal";
|
||||
|
@ -75,7 +75,7 @@ export function UnauthenticatedView() {
|
|||
if (error.errcode === "M_ROOM_IN_USE") {
|
||||
setOnFinished(() => () => {
|
||||
setClient(client, session);
|
||||
const aliasLocalpart = roomAliasFromRoomName(roomName);
|
||||
const aliasLocalpart = roomAliasLocalpartFromRoomName(roomName);
|
||||
const [, serverName] = client.getUserId().split(":");
|
||||
history.push(`/room/#${aliasLocalpart}:${serverName}`);
|
||||
});
|
||||
|
|
|
@ -108,7 +108,7 @@ export async function initClient(
|
|||
return client;
|
||||
}
|
||||
|
||||
export function roomAliasFromRoomName(roomName: string): string {
|
||||
export function roomAliasLocalpartFromRoomName(roomName: string): string {
|
||||
return roomName
|
||||
.trim()
|
||||
.replace(/\s/g, "-")
|
||||
|
@ -116,6 +116,13 @@ export function roomAliasFromRoomName(roomName: string): string {
|
|||
.toLowerCase();
|
||||
}
|
||||
|
||||
export function fullAliasFromRoomName(
|
||||
roomName: string,
|
||||
client: MatrixClient
|
||||
): string {
|
||||
return `#${roomAliasLocalpartFromRoomName(roomName)}:${client.getDomain()}`;
|
||||
}
|
||||
|
||||
export function roomNameFromRoomId(roomId: string): string {
|
||||
return roomId
|
||||
.match(/([^:]+):.*$/)[1]
|
||||
|
@ -151,7 +158,7 @@ export async function createRoom(
|
|||
visibility: Visibility.Private,
|
||||
preset: Preset.PublicChat,
|
||||
name,
|
||||
room_alias_name: roomAliasFromRoomName(name),
|
||||
room_alias_name: roomAliasLocalpartFromRoomName(name),
|
||||
power_level_content_override: {
|
||||
invite: 100,
|
||||
kick: 100,
|
||||
|
@ -177,7 +184,7 @@ export async function createRoom(
|
|||
},
|
||||
});
|
||||
|
||||
console.log({ isPtt });
|
||||
console.log(`Creating ${isPtt ? "PTT" : "video"} group call room`);
|
||||
|
||||
await client.createGroupCall(
|
||||
createRoomResult.room_id,
|
||||
|
@ -186,7 +193,7 @@ export async function createRoom(
|
|||
GroupCallIntent.Prompt
|
||||
);
|
||||
|
||||
return createRoomResult.room_id;
|
||||
return fullAliasFromRoomName(name, client);
|
||||
}
|
||||
|
||||
export function getRoomUrl(roomId: string): string {
|
||||
|
|
Loading…
Reference in a new issue