UNPKG

@100mslive/roomkit-react

Version:

![Banner](https://github.com/100mslive/web-sdks/blob/06c65259912db6ccd8617f2ecb6fef51429251ec/prebuilt-banner.png)

59 lines (55 loc) 1.91 kB
import React, { Fragment } from 'react'; import { selectIsAllowedToPublish, useAwayNotifications, useHMSStore, useScreenShare } from '@100mslive/react-sdk'; import { ShareScreenIcon } from '@100mslive/react-icons'; import { ShareScreenOptions } from './pdfAnnotator/shareScreenOptions'; import { ToastManager } from './Toast/ToastManager'; import { Box, Flex } from '../../Layout'; import { Tooltip } from '../../Tooltip'; import { ScreenShareButton } from './ShareMenuIcon'; import { useUISettings } from './AppData/useUISettings'; import { isScreenshareSupported } from '../common/utils'; import { UI_SETTINGS } from '../common/constants'; export const ScreenshareToggle = ({ css = {} }) => { const isAllowedToPublish = useHMSStore(selectIsAllowedToPublish); const isAudioOnly = useUISettings(UI_SETTINGS.isAudioOnly); const { amIScreenSharing, screenShareVideoTrackId: video, toggleScreenShare, } = useScreenShare(error => { ToastManager.addToast({ title: error.message, variant: 'error', duration: 2000, }); }); const { requestPermission } = useAwayNotifications(); const isVideoScreenshare = amIScreenSharing && !!video; if (!isAllowedToPublish.screen || !isScreenshareSupported()) { return null; } return ( <Fragment> <Flex direction="row"> <ScreenShareButton variant="standard" key="ShareScreen" active={!isVideoScreenshare} css={css} disabled={isAudioOnly} onClick={async () => { await toggleScreenShare(); await requestPermission(); }} > <Tooltip title={`${!isVideoScreenshare ? 'Start' : 'Stop'} screen sharing`}> <Box> <ShareScreenIcon /> </Box> </Tooltip> </ScreenShareButton> <ShareScreenOptions /> </Flex> </Fragment> ); };