Support using Element Call for voice calls in DMs (#30817)
* Add voiceOnly options. * tweaks * Nearly working demo * Lots of minor fixes * Better working version * remove unused payload * bits and pieces * Cleanup based on new hints * Simple refactor for skipLobby (and remove returnToLobby) * Tidyup * Remove unused tests * Update tests for voice calls * Add video room support. * Add a test for video rooms * tidy * remove console log line * lint and tests * Bunch of fixes * Fixes * Use correct title * make linter happier * Update tests * cleanup * Drop only * update snaps * Document * lint * Update snapshots * Remove duplicate test * add brackets * fix jest
This commit is contained in:
@@ -142,11 +142,6 @@ export const useRoomCall = (
|
||||
// If there are multiple options, the user will be prompted to choose.
|
||||
const callOptions = useMemo((): PlatformCallType[] => {
|
||||
const options: PlatformCallType[] = [];
|
||||
if (memberCount <= 2) {
|
||||
options.push(PlatformCallType.LegacyCall);
|
||||
} else if (mayEditWidgets || hasJitsiWidget) {
|
||||
options.push(PlatformCallType.JitsiCall);
|
||||
}
|
||||
if (groupCallsEnabled) {
|
||||
if (hasGroupCall || mayCreateElementCalls) {
|
||||
options.push(PlatformCallType.ElementCall);
|
||||
@@ -155,6 +150,11 @@ export const useRoomCall = (
|
||||
return [PlatformCallType.ElementCall];
|
||||
}
|
||||
}
|
||||
if (memberCount <= 2) {
|
||||
options.push(PlatformCallType.LegacyCall);
|
||||
} else if (mayEditWidgets || hasJitsiWidget) {
|
||||
options.push(PlatformCallType.JitsiCall);
|
||||
}
|
||||
if (hasGroupCall && WidgetType.CALL.matches(groupCall.widget.type)) {
|
||||
// only allow joining the ongoing Element call if there is one.
|
||||
return [PlatformCallType.ElementCall];
|
||||
@@ -231,7 +231,7 @@ export const useRoomCall = (
|
||||
if (widget && promptPinWidget) {
|
||||
WidgetLayoutStore.instance.moveToContainer(room, widget, Container.Top);
|
||||
} else {
|
||||
placeCall(room, CallType.Voice, callPlatformType, evt?.shiftKey || undefined);
|
||||
placeCall(room, CallType.Voice, callPlatformType, evt?.shiftKey || undefined, true);
|
||||
}
|
||||
},
|
||||
[promptPinWidget, room, widget],
|
||||
@@ -244,7 +244,7 @@ export const useRoomCall = (
|
||||
} else {
|
||||
// If we have pressed shift then always skip the lobby, otherwise `undefined` will defer
|
||||
// to the defaults of the call implementation.
|
||||
placeCall(room, CallType.Video, callPlatformType, evt?.shiftKey || undefined);
|
||||
placeCall(room, CallType.Video, callPlatformType, evt?.shiftKey || undefined, false);
|
||||
}
|
||||
},
|
||||
[widget, promptPinWidget, room],
|
||||
@@ -279,7 +279,13 @@ export const useRoomCall = (
|
||||
const roomDoesNotExist = room instanceof LocalRoom && room.state !== LocalRoomState.CREATED;
|
||||
|
||||
// We hide the voice call button if it'd have the same effect as the video call button
|
||||
let hideVoiceCallButton = isManagedHybridWidgetEnabled(room) || !callOptions.includes(PlatformCallType.LegacyCall);
|
||||
let hideVoiceCallButton =
|
||||
isManagedHybridWidgetEnabled(room) ||
|
||||
// Disable voice calls if Legacy calls are disabled
|
||||
(!callOptions.includes(PlatformCallType.LegacyCall) &&
|
||||
// Disable voice calls in ECall if the room is a group (we only present video calls for groups of users)
|
||||
(!callOptions.includes(PlatformCallType.ElementCall) || memberCount > 2));
|
||||
|
||||
let hideVideoCallButton = false;
|
||||
// We hide both buttons if:
|
||||
// - they require widgets but widgets are disabled
|
||||
|
||||
Reference in New Issue
Block a user