diff --git a/src/video-grid/VideoTile.tsx b/src/video-grid/VideoTile.tsx index 8695a7c..476ecc8 100644 --- a/src/video-grid/VideoTile.tsx +++ b/src/video-grid/VideoTile.tsx @@ -36,6 +36,7 @@ interface Props { mediaRef?: React.RefObject; onOptionsPress?: () => void; localVolume?: number; + hasAudio?: boolean; maximised?: boolean; fullscreen?: boolean; onFullscreen?: () => void; @@ -58,6 +59,7 @@ export const VideoTile = forwardRef( mediaRef, onOptionsPress, localVolume, + hasAudio, maximised, fullscreen, onFullscreen, @@ -74,14 +76,16 @@ export const VideoTile = forwardRef( const toolbarButtons: JSX.Element[] = []; if (connectionState == ConnectionState.Connected && !isLocal) { - toolbarButtons.push( - - ); + if (hasAudio) { + toolbarButtons.push( + + ); + } if (screenshare) { toolbarButtons.push( diff --git a/src/video-grid/VideoTileContainer.tsx b/src/video-grid/VideoTileContainer.tsx index c573b0b..1741ca8 100644 --- a/src/video-grid/VideoTileContainer.tsx +++ b/src/video-grid/VideoTileContainer.tsx @@ -62,6 +62,7 @@ export function VideoTileContainer({ audioMuted, videoMuted, localVolume, + hasAudio, speaking, stream, purpose, @@ -109,6 +110,7 @@ export function VideoTileContainer({ avatar={getAvatar && getAvatar(item.member, width, height)} onOptionsPress={onOptionsPress} localVolume={localVolume} + hasAudio={hasAudio} maximised={maximised} fullscreen={fullscreen} onFullscreen={onFullscreenCallback} diff --git a/src/video-grid/useCallFeed.ts b/src/video-grid/useCallFeed.ts index 9485b3b..35bf8e5 100644 --- a/src/video-grid/useCallFeed.ts +++ b/src/video-grid/useCallFeed.ts @@ -25,6 +25,7 @@ interface CallFeedState { videoMuted: boolean; audioMuted: boolean; localVolume: number; + hasAudio: boolean; disposed: boolean | undefined; stream: MediaStream | undefined; purpose: SDPStreamMetadataPurpose | undefined; @@ -38,6 +39,7 @@ function getCallFeedState(callFeed: CallFeed | undefined): CallFeedState { videoMuted: callFeed ? callFeed.isVideoMuted() : true, audioMuted: callFeed ? callFeed.isAudioMuted() : true, localVolume: callFeed ? callFeed.getLocalVolume() : 0, + hasAudio: callFeed ? callFeed.stream.getAudioTracks().length >= 1 : false, disposed: callFeed ? callFeed.disposed : undefined, stream: callFeed ? callFeed.stream : undefined, purpose: callFeed ? callFeed.purpose : undefined,