Add slash command to switch to a room's virtual room (#7839)

* Add slash command to switch to a room's virtual room

* Update to new interface

* Return null if no virtual user

* Throw newTranslateableError

* Types

* Disable tovirtual if virtual rooms not supported
This commit is contained in:
David Baker 2022-02-25 15:58:13 +00:00 committed by GitHub
parent 76ca0362e1
commit 3e4e7efd89
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 42 additions and 1 deletions

View file

@ -65,6 +65,7 @@ import RoomViewStore from "./stores/RoomViewStore";
import { XOR } from "./@types/common";
import { PosthogAnalytics } from "./PosthogAnalytics";
import { ViewRoomPayload } from "./dispatcher/payloads/ViewRoomPayload";
import VoipUserMapper from './VoipUserMapper';
// XXX: workaround for https://github.com/microsoft/TypeScript/issues/31816
interface HTMLInputEvent extends Event {
@ -1129,6 +1130,26 @@ export const Commands = [
},
category: CommandCategories.advanced,
}),
new Command({
command: "tovirtual",
description: _td("Switches to this room's virtual room, if it has one"),
category: CommandCategories.advanced,
isEnabled(): boolean {
return CallHandler.instance.getSupportsVirtualRooms();
},
runFn: (roomId) => {
return success((async () => {
const room = await VoipUserMapper.sharedInstance().getVirtualRoomForRoom(roomId);
if (!room) throw newTranslatableError("No virtual room for this room");
dis.dispatch<ViewRoomPayload>({
action: Action.ViewRoom,
room_id: room.roomId,
metricsTrigger: "SlashCommand",
metricsViaKeyboard: true,
});
})());
},
}),
new Command({
command: "query",
description: _td("Opens chat with the given user"),