From 997ebf3ebb7cc68163b61eabc4a89c5f66aafa47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20H=C3=BCttemann?= Date: Mon, 12 Jun 2023 15:23:28 +0200 Subject: [PATCH] Add public room visibility to public chats --- src/handlers/rooms.test.ts | 8 +++++++- src/handlers/rooms.ts | 18 +++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/handlers/rooms.test.ts b/src/handlers/rooms.test.ts index 2abbd93..7560380 100644 --- a/src/handlers/rooms.test.ts +++ b/src/handlers/rooms.test.ts @@ -1,4 +1,9 @@ -import { MatrixRoomPresets, RcRoomTypes, mapRoom } from './rooms' +import { + MatrixRoomPresets, + MatrixRoomVisibility, + RcRoomTypes, + mapRoom, +} from './rooms' const roomCreator = { _id: 'roomcreatorid', @@ -44,6 +49,7 @@ test('mapping public rooms', () => { creation_content: { 'm.federate': false, }, + visibility: MatrixRoomVisibility.public, _creatorId: roomCreator._id, }) }) diff --git a/src/handlers/rooms.ts b/src/handlers/rooms.ts index 673e0ec..e247c27 100644 --- a/src/handlers/rooms.ts +++ b/src/handlers/rooms.ts @@ -27,6 +27,11 @@ export const enum MatrixRoomPresets { trusted = 'trusted_private_chat', } +export const enum MatrixRoomVisibility { + private = 'private', + public = 'public', +} + export type MatrixRoom = { room_id?: string name?: string @@ -35,6 +40,7 @@ export type MatrixRoom = { topic?: string is_direct?: boolean preset?: MatrixRoomPresets + visibility?: MatrixRoomVisibility _creatorId?: string } @@ -50,24 +56,26 @@ export function mapRoom(rcRoom: RcRoom): MatrixRoom { rcRoom.description && (room.topic = rcRoom.description) switch (rcRoom.t) { - case 'd': + case RcRoomTypes.direct: room.is_direct = true room.preset = MatrixRoomPresets.trusted room._creatorId = rcRoom.uids?.[0] || '' break - case 'c': + case RcRoomTypes.chat: room.preset = MatrixRoomPresets.public + room.visibility = MatrixRoomVisibility.public room._creatorId = rcRoom.u?._id || '' break - case 'p': + case RcRoomTypes.private: room.preset = MatrixRoomPresets.private room._creatorId = rcRoom.u?._id || '' break + case RcRoomTypes.live: default: - const message = `Room type ${rcRoom.t} is unknown` + const message = `Room type ${rcRoom.t} is unknown or unimplemented` log.error(message) throw new Error(message) } @@ -98,7 +106,7 @@ export async function createRoom(rcRoom: RcRoom): Promise { await axios.post('/_matrix/client/v3/createRoom', room, sessionOptions) ).data.room_id - // TODO: Add members + // TODO: Invite members and let them join return room }