import React, { Fragment, useState } from 'react'; // @ts-ignore: No implicit Any import { selectIsConnectedToRoom, selectPermissions, useHMSStore, useRecordingStreaming } from '@100mslive/react-sdk'; // @ts-ignore: No implicit Any import { CrossIcon, ExitIcon, StopIcon } from '@100mslive/react-icons'; import { IconButton } from '../../../IconButton'; import { Box } from '../../../Layout'; import { Sheet } from '../../../Sheet'; import { Tooltip } from '../../../Tooltip'; import { EndSessionContent } from './EndSessionContent'; import { LeaveIconButton } from './LeaveAtoms'; import { LeaveCard } from './LeaveCard'; import { LeaveSessionContent } from './LeaveSessionContent'; import { useRoomLayoutConferencingScreen } from '../../provider/roomLayoutProvider/hooks/useRoomLayoutScreen'; // @ts-ignore: No implicit Any import { useDropdownList } from '../hooks/useDropdownList'; import { useLandscapeHLSStream, useMobileHLSStream } from '../../common/hooks'; export const MwebLeaveRoom = ({ leaveRoom, endRoom, container, }: { leaveRoom: (options?: { endStream?: boolean; sendReason?: boolean }) => Promise; endRoom: () => Promise; container?: HTMLElement; }) => { const [open, setOpen] = useState(false); const { screenType } = useRoomLayoutConferencingScreen(); const [showLeaveRoomAlert, setShowLeaveRoomAlert] = useState(false); const [showEndStreamAlert, setShowEndStreamAlert] = useState(false); const isConnected = useHMSStore(selectIsConnectedToRoom); const permissions = useHMSStore(selectPermissions); const { isStreamingOn } = useRecordingStreaming(); const showStream = screenType !== 'hls_live_streaming' && isStreamingOn && permissions?.hlsStreaming; const showLeaveOptions = (permissions?.hlsStreaming && isStreamingOn) || permissions?.endRoom; useDropdownList({ open, name: 'LeaveRoom' }); if (!permissions || !isConnected) { return null; } return ( {showLeaveOptions ? ( { setOpen(open => !open); }} /> } onClick={async () => await leaveRoom({ sendReason: true })} css={{ pt: 0, mt: '$10', color: '$on_surface_low', '&:hover': { color: '$on_surface_high' } }} /> } onClick={() => { setOpen(false); setShowEndStreamAlert(true); }} /> ) : ( setShowLeaveRoomAlert(true)} /> )} ); }; const LeaveButton = ({ onClick }: { onClick: () => void }) => { const isMobileHLSStream = useMobileHLSStream(); const isLandscapeHLSStream = useLandscapeHLSStream(); return isMobileHLSStream || isLandscapeHLSStream ? ( ) : ( ); };