From 8c7aed4b00752c51841f2efb3245d5f67e6e853b Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Tue, 6 Aug 2024 15:16:37 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F(frontend)=20simplify=20the?= =?UTF-8?q?=20controls=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As we duplicated the code, we don't need anymore to configure the available controls from the video conference. --- .../rooms/livekit/prefabs/ControlBar.tsx | 127 +++++++----------- .../rooms/livekit/prefabs/VideoConference.tsx | 5 +- 2 files changed, 51 insertions(+), 81 deletions(-) diff --git a/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx b/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx index ce1282ae..a8036867 100644 --- a/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx +++ b/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx @@ -11,7 +11,6 @@ import { LeaveIcon, MediaDeviceMenu, TrackToggle, - useLocalParticipantPermissions, useMaybeLayoutContext, usePersistentUserChoices, } from '@livekit/components-react' @@ -21,6 +20,7 @@ import { mergeProps } from '@/utils/mergeProps.ts' import { StartMediaButton } from '../components/controls/StartMediaButton' import { useMediaQuery } from '../hooks/useMediaQuery' import { useTranslation } from 'react-i18next' +import { SettingsButton } from '@/features/settings' /** @public */ export type ControlBarControls = { @@ -64,7 +64,6 @@ export interface ControlBarProps extends React.HTMLAttributes { */ export function ControlBar({ variation, - controls, saveUserChoices = true, onDeviceError, ...props @@ -85,22 +84,6 @@ export function ControlBar({ const defaultVariation = isTooLittleSpace ? 'minimal' : 'verbose' variation ??= defaultVariation - const visibleControls = { leave: true, ...controls } - - const localPermissions = useLocalParticipantPermissions() - - if (!localPermissions) { - visibleControls.camera = false - visibleControls.chat = false - visibleControls.microphone = false - visibleControls.screenShare = false - } else { - visibleControls.camera ??= localPermissions.canPublish - visibleControls.microphone ??= localPermissions.canPublish - visibleControls.screenShare ??= localPermissions.canPublish - visibleControls.chat ??= localPermissions.canPublishData && controls?.chat - } - const showIcon = React.useMemo( () => variation === 'minimal' || variation === 'verbose', [variation] @@ -144,51 +127,47 @@ export function ControlBar({ return (
- {visibleControls.microphone && ( -
- - onDeviceError?.({ source: Track.Source.Microphone, error }) +
+ + onDeviceError?.({ source: Track.Source.Microphone, error }) + } + > + {showText && t('controls.microphone')} + +
+ + saveAudioInputDeviceId(deviceId ?? '') } - > - {showText && t('controls.microphone')} - -
- - saveAudioInputDeviceId(deviceId ?? '') - } - /> -
+ />
- )} - {visibleControls.camera && ( -
- - onDeviceError?.({ source: Track.Source.Camera, error }) +
+
+ + onDeviceError?.({ source: Track.Source.Camera, error }) + } + > + {showText && t('controls.camera')} + +
+ + saveVideoInputDeviceId(deviceId ?? '') } - > - {showText && t('controls.camera')} - -
- - saveVideoInputDeviceId(deviceId ?? '') - } - /> -
+ />
- )} - {visibleControls.screenShare && browserSupportsScreenSharing && ( +
+ {browserSupportsScreenSharing && ( )} - {visibleControls.chat && ( - - {showIcon && } - {showText && t('controls.chat')} - - )} - {visibleControls.settings && ( - - {showIcon && } - {showText && t('controls.settings')} - - )} - {visibleControls.leave && ( - - {showIcon && } - {showText && t('controls.leave')} - - )} + + {showIcon && } + {showText && t('controls.chat')} + + + {showIcon && } + {showText && t('controls.settings')} + + + {showIcon && } + {showText && t('controls.leave')} +
) diff --git a/src/frontend/src/features/rooms/livekit/prefabs/VideoConference.tsx b/src/frontend/src/features/rooms/livekit/prefabs/VideoConference.tsx index 695bc62a..28afb91e 100644 --- a/src/frontend/src/features/rooms/livekit/prefabs/VideoConference.tsx +++ b/src/frontend/src/features/rooms/livekit/prefabs/VideoConference.tsx @@ -65,7 +65,6 @@ export function VideoConference({ chatMessageFormatter, chatMessageDecoder, chatMessageEncoder, - SettingsComponent, ...props }: VideoConferenceProps) { const [widgetState, setWidgetState] = React.useState({ @@ -180,9 +179,7 @@ export function VideoConference({
)} - +