diff --git a/packages/roomkit-react/src/Prebuilt/components/Footer/RoleOptions.tsx b/packages/roomkit-react/src/Prebuilt/components/Footer/RoleOptions.tsx index 7d2314d1d0..9775196e7e 100644 --- a/packages/roomkit-react/src/Prebuilt/components/Footer/RoleOptions.tsx +++ b/packages/roomkit-react/src/Prebuilt/components/Footer/RoleOptions.tsx @@ -80,9 +80,12 @@ export const RoleOptions = ({ roleName, peerList }: { roleName: string; peerList const { on_stage_role, off_stage_roles = [] } = (elements as DefaultConferencingScreen_Elements)?.on_stage_exp || {}; const canRemoveRoleFromStage = permissions?.changeRole && roleName === on_stage_role; const role = useHMSStore(selectRoleByRoleName(roleName)); + const tracks = useHMSStore(selectTracksMap); + if (!role) { + return null; + } const canPublishAudio = role.publishParams.allowed.includes('audio'); const canPublishVideo = role.publishParams.allowed.includes('video'); - const tracks = useHMSStore(selectTracksMap); let isVideoOnForSomePeers = false; let isAudioOnForSomePeers = false; diff --git a/packages/roomkit-react/src/Prebuilt/components/HMSVideo/HMSVideo.jsx b/packages/roomkit-react/src/Prebuilt/components/HMSVideo/HMSVideo.jsx index ec8f619fa1..d022f05a23 100644 --- a/packages/roomkit-react/src/Prebuilt/components/HMSVideo/HMSVideo.jsx +++ b/packages/roomkit-react/src/Prebuilt/components/HMSVideo/HMSVideo.jsx @@ -46,6 +46,7 @@ export const HMSVideo = forwardRef(({ children, ...props }, videoRef) => { }} ref={videoRef} playsInline + disablePictureInPicture /> {children} diff --git a/packages/roomkit-react/src/Prebuilt/layouts/HLSView.jsx b/packages/roomkit-react/src/Prebuilt/layouts/HLSView.jsx index 234b8e0098..3cc7e255fa 100644 --- a/packages/roomkit-react/src/Prebuilt/layouts/HLSView.jsx +++ b/packages/roomkit-react/src/Prebuilt/layouts/HLSView.jsx @@ -33,20 +33,32 @@ import { Loading } from '../../Loading'; import { Text } from '../../Text'; import { config, theme, useTheme } from '../../Theme'; import { Tooltip } from '../../Tooltip'; -import { usePollViewToggle, useSidepaneToggle } from '../components/AppData/useSidepane'; +import { useSidepaneToggle } from '../components/AppData/useSidepane'; import { useRoomLayoutConferencingScreen } from '../provider/roomLayoutProvider/hooks/useRoomLayoutScreen'; import { useIsLandscape } from '../common/hooks'; -import { APP_DATA, EMOJI_REACTION_TYPE, SIDE_PANE_OPTIONS } from '../common/constants'; +import { APP_DATA, EMOJI_REACTION_TYPE, POLL_STATE, POLL_VIEWS, SIDE_PANE_OPTIONS } from '../common/constants'; let hlsPlayer; const toastMap = {}; +const ToggleChat = () => { + const { elements } = useRoomLayoutConferencingScreen(); + const sidepane = useHMSStore(selectAppData(APP_DATA.sidePane)); + const toggleChat = useSidepaneToggle(SIDE_PANE_OPTIONS.CHAT); + const showChat = !!elements?.chat; + const isMobile = useMedia(config.media.md); + useEffect(() => { + if (!sidepane && isMobile && showChat) { + toggleChat(); + } + }, [sidepane, isMobile, toggleChat, showChat]); + return null; +}; const HLSView = () => { const videoRef = useRef(null); const hlsViewRef = useRef(); const hlsState = useHMSStore(selectHLSState); const enablHlsStats = useHMSStore(selectAppData(APP_DATA.hlsStats)); - const { elements, screenType } = useRoomLayoutConferencingScreen(); const notification = useHMSNotifications(HMSNotificationTypes.POLL_STOPPED); const hmsActions = useHMSActions(); const { themeType } = useTheme(); @@ -63,17 +75,13 @@ const HLSView = () => { const [isPaused, setIsPaused] = useState(false); const [show, toggle] = useToggle(false); const lastHlsUrl = usePrevious(hlsUrl); - const togglePollView = usePollViewToggle(); const vanillaStore = useHMSVanillaStore(); const [controlsVisible, setControlsVisible] = useState(true); const [isUserSelectedAuto, setIsUserSelectedAuto] = useState(true); const [qualityDropDownOpen, setQualityDropDownOpen] = useState(false); const controlsRef = useRef(null); const controlsTimerRef = useRef(); - const sidepane = useHMSStore(selectAppData(APP_DATA.sidePane)); - const toggleChat = useSidepaneToggle(SIDE_PANE_OPTIONS.CHAT); const [seekProgress, setSeekProgress] = useState(false); - const showChat = !!elements?.chat; const isFullScreenSupported = screenfull.isEnabled; const isMobile = useMedia(config.media.md); @@ -84,13 +92,6 @@ const HLSView = () => { }); const [showLoader, setShowLoader] = useState(false); - const isMwebHLSStream = screenType === 'hls_live_streaming' && isMobile; - - useEffect(() => { - if (sidepane === '' && isMwebHLSStream && showChat) { - toggleChat(); - } - }, [sidepane, isMwebHLSStream, toggleChat, showChat]); // FIXME: move this logic to player controller in next release useEffect(() => { /** @@ -176,7 +177,12 @@ const HLSView = () => { title: `${pollStartedBy} started a ${poll.type}: ${poll.title}`, action: (