From a0449e7014c414c0887e7a10d5f5de4aae6363e6 Mon Sep 17 00:00:00 2001 From: raviteja83 Date: Mon, 4 Mar 2024 11:18:19 +0530 Subject: [PATCH 1/7] fix: stream reloading on polls change --- .../src/Prebuilt/layouts/HLSView.jsx | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/packages/roomkit-react/src/Prebuilt/layouts/HLSView.jsx b/packages/roomkit-react/src/Prebuilt/layouts/HLSView.jsx index 234b8e0098..760c973fc9 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: (