Hide voip buttons in group rooms in environments with widgets disabled (#12664)
* Hide voip buttons in group rooms in environments with widgets disabled Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Fix test stubs Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Iterate Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
parent
5bcf76c9ab
commit
2d8c23e806
3 changed files with 79 additions and 23 deletions
|
@ -83,6 +83,7 @@ export default function RoomHeader({
|
|||
hasActiveCallSession,
|
||||
callOptions,
|
||||
showVoiceCallButton,
|
||||
showVideoCallButton,
|
||||
} = useRoomCall(room);
|
||||
|
||||
const groupCallsEnabled = useFeatureEnabled("feature_group_calls");
|
||||
|
@ -200,25 +201,20 @@ export default function RoomHeader({
|
|||
)}
|
||||
</>
|
||||
);
|
||||
|
||||
let voiceCallButton: JSX.Element | undefined;
|
||||
if (showVoiceCallButton) {
|
||||
voiceCallButton = (
|
||||
<Tooltip label={voiceCallDisabledReason ?? _t("voip|voice_call")}>
|
||||
<IconButton
|
||||
// We need both: isViewingCall and isConnectedToCall
|
||||
// - in the Lobby we are viewing a call but are not connected to it.
|
||||
// - in pip view we are connected to the call but not viewing it.
|
||||
disabled={!!voiceCallDisabledReason || isViewingCall || isConnectedToCall}
|
||||
aria-label={voiceCallDisabledReason ?? _t("voip|voice_call")}
|
||||
onClick={(ev) => voiceCallClick(ev, callOptions[0])}
|
||||
>
|
||||
<VoiceCallIcon />
|
||||
</IconButton>
|
||||
</Tooltip>
|
||||
);
|
||||
}
|
||||
|
||||
let voiceCallButton: JSX.Element | undefined = (
|
||||
<Tooltip label={voiceCallDisabledReason ?? _t("voip|voice_call")}>
|
||||
<IconButton
|
||||
// We need both: isViewingCall and isConnectedToCall
|
||||
// - in the Lobby we are viewing a call but are not connected to it.
|
||||
// - in pip view we are connected to the call but not viewing it.
|
||||
disabled={!!voiceCallDisabledReason || isViewingCall || isConnectedToCall}
|
||||
aria-label={voiceCallDisabledReason ?? _t("voip|voice_call")}
|
||||
onClick={(ev) => voiceCallClick(ev, callOptions[0])}
|
||||
>
|
||||
<VoiceCallIcon />
|
||||
</IconButton>
|
||||
</Tooltip>
|
||||
);
|
||||
const closeLobbyButton = (
|
||||
<Tooltip label={_t("voip|close_lobby")}>
|
||||
<IconButton onClick={toggleCall} aria-label={_t("voip|close_lobby")}>
|
||||
|
@ -226,13 +222,20 @@ export default function RoomHeader({
|
|||
</IconButton>
|
||||
</Tooltip>
|
||||
);
|
||||
let videoCallButton = startVideoCallButton;
|
||||
let videoCallButton: JSX.Element | undefined = startVideoCallButton;
|
||||
if (isConnectedToCall) {
|
||||
videoCallButton = toggleCallButton;
|
||||
} else if (isViewingCall) {
|
||||
videoCallButton = closeLobbyButton;
|
||||
}
|
||||
|
||||
if (!showVideoCallButton) {
|
||||
videoCallButton = undefined;
|
||||
}
|
||||
if (!showVoiceCallButton) {
|
||||
voiceCallButton = undefined;
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Flex as="header" align="center" gap="var(--cpd-space-3x)" className="mx_RoomHeader light-panel">
|
||||
|
|
|
@ -41,6 +41,8 @@ import { Action } from "../../dispatcher/actions";
|
|||
import { CallStore, CallStoreEvent } from "../../stores/CallStore";
|
||||
import { isVideoRoom } from "../../utils/video-rooms";
|
||||
import { useGuestAccessInformation } from "./useGuestAccessInformation";
|
||||
import SettingsStore from "../../settings/SettingsStore";
|
||||
import { UIFeature } from "../../settings/UIFeature";
|
||||
|
||||
export enum PlatformCallType {
|
||||
ElementCall,
|
||||
|
@ -83,6 +85,7 @@ export const useRoomCall = (
|
|||
isConnectedToCall: boolean;
|
||||
hasActiveCallSession: boolean;
|
||||
callOptions: PlatformCallType[];
|
||||
showVideoCallButton: boolean;
|
||||
showVoiceCallButton: boolean;
|
||||
} => {
|
||||
// settings
|
||||
|
@ -268,8 +271,14 @@ export const useRoomCall = (
|
|||
}, [isViewingCall, room.roomId]);
|
||||
|
||||
// We hide the voice call button if it'd have the same effect as the video call button
|
||||
const hideVoiceCallButton =
|
||||
let hideVoiceCallButton =
|
||||
isManagedHybridWidgetEnabled(room.roomId) || !callOptions.includes(PlatformCallType.LegacyCall);
|
||||
let hideVideoCallButton = false;
|
||||
// We hide both buttons if they require widgets but widgets are disabled.
|
||||
if (memberCount > 2 && !SettingsStore.getValue(UIFeature.Widgets)) {
|
||||
hideVoiceCallButton = true;
|
||||
hideVideoCallButton = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* We've gone through all the steps
|
||||
|
@ -285,5 +294,6 @@ export const useRoomCall = (
|
|||
hasActiveCallSession: hasActiveCallSession,
|
||||
callOptions,
|
||||
showVoiceCallButton: !hideVoiceCallButton,
|
||||
showVideoCallButton: !hideVideoCallButton,
|
||||
};
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue