Merge branch 'develop' into travis/remove-skinning
This commit is contained in:
@@ -22,26 +22,26 @@ import WidgetStore, { IApp } from "../stores/WidgetStore";
|
||||
import { WidgetType } from "../widgets/WidgetType";
|
||||
import WidgetUtils from "./WidgetUtils";
|
||||
|
||||
export const VOICE_CHANNEL = "io.element.voice";
|
||||
export const VOICE_CHANNEL_MEMBER = "io.element.voice.member";
|
||||
export const VIDEO_CHANNEL = "io.element.video";
|
||||
export const VIDEO_CHANNEL_MEMBER = "io.element.video.member";
|
||||
|
||||
export interface IVoiceChannelMemberContent {
|
||||
export interface IVideoChannelMemberContent {
|
||||
// Connected device IDs
|
||||
devices: string[];
|
||||
}
|
||||
|
||||
export const getVoiceChannel = (roomId: string): IApp => {
|
||||
export const getVideoChannel = (roomId: string): IApp => {
|
||||
const apps = WidgetStore.instance.getApps(roomId);
|
||||
return apps.find(app => WidgetType.JITSI.matches(app.type) && app.id === VOICE_CHANNEL);
|
||||
return apps.find(app => WidgetType.JITSI.matches(app.type) && app.id === VIDEO_CHANNEL);
|
||||
};
|
||||
|
||||
export const addVoiceChannel = async (roomId: string, roomName: string) => {
|
||||
await WidgetUtils.addJitsiWidget(roomId, CallType.Voice, "Voice channel", VOICE_CHANNEL, roomName);
|
||||
export const addVideoChannel = async (roomId: string, roomName: string) => {
|
||||
await WidgetUtils.addJitsiWidget(roomId, CallType.Video, "Video channel", VIDEO_CHANNEL, roomName);
|
||||
};
|
||||
|
||||
export const getConnectedMembers = (state: RoomState): RoomMember[] =>
|
||||
state.getStateEvents(VOICE_CHANNEL_MEMBER)
|
||||
state.getStateEvents(VIDEO_CHANNEL_MEMBER)
|
||||
// Must have a device connected and still be joined to the room
|
||||
.filter(e => e.getContent<IVoiceChannelMemberContent>().devices?.length)
|
||||
.filter(e => e.getContent<IVideoChannelMemberContent>().devices?.length)
|
||||
.map(e => state.getMember(e.getStateKey()))
|
||||
.filter(member => member.membership === "join");
|
||||
@@ -36,6 +36,7 @@ import { Jitsi } from "../widgets/Jitsi";
|
||||
import { objectClone } from "./objects";
|
||||
import { _t } from "../languageHandler";
|
||||
import { IApp } from "../stores/WidgetStore";
|
||||
import { VIDEO_CHANNEL } from "./VideoChannelUtils";
|
||||
|
||||
// How long we wait for the state event echo to come back from the server
|
||||
// before waitFor[Room/User]Widget rejects its promise
|
||||
@@ -469,6 +470,7 @@ export default class WidgetUtils {
|
||||
conferenceId: confId,
|
||||
roomName: oobRoomName ?? MatrixClientPeg.get().getRoom(roomId)?.name,
|
||||
isAudioOnly: type === CallType.Voice,
|
||||
isVideoChannel: widgetId === VIDEO_CHANNEL,
|
||||
domain,
|
||||
auth,
|
||||
});
|
||||
@@ -515,6 +517,7 @@ export default class WidgetUtils {
|
||||
'conferenceDomain=$domain',
|
||||
'conferenceId=$conferenceId',
|
||||
'isAudioOnly=$isAudioOnly',
|
||||
'isVideoChannel=$isVideoChannel',
|
||||
'displayName=$matrix_display_name',
|
||||
'avatarUrl=$matrix_avatar_url',
|
||||
'userId=$matrix_user_id',
|
||||
|
||||
@@ -16,6 +16,7 @@ limitations under the License.
|
||||
|
||||
import React from "react";
|
||||
import { Room } from "matrix-js-sdk/src/models/room";
|
||||
import { RoomType } from "matrix-js-sdk/src/@types/event";
|
||||
import { EventType } from "matrix-js-sdk/src/@types/event";
|
||||
import { JoinRule } from "matrix-js-sdk/src/@types/partials";
|
||||
|
||||
@@ -72,12 +73,13 @@ export const showAddExistingRooms = (space: Room): void => {
|
||||
});
|
||||
};
|
||||
|
||||
export const showCreateNewRoom = async (space: Room): Promise<boolean> => {
|
||||
export const showCreateNewRoom = async (space: Room, type?: RoomType): Promise<boolean> => {
|
||||
const modal = Modal.createTrackedDialog<[boolean, IOpts]>(
|
||||
"Space Landing",
|
||||
"Create Room",
|
||||
CreateRoomDialog,
|
||||
{
|
||||
type,
|
||||
defaultPublic: space.getJoinRule() === JoinRule.Public,
|
||||
parentSpace: space,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user