diff --git a/src/room/InCallView.tsx b/src/room/InCallView.tsx
index 074290fb..a66b713b 100644
--- a/src/room/InCallView.tsx
+++ b/src/room/InCallView.tsx
@@ -63,7 +63,7 @@ import { ParticipantInfo } from "./useGroupCall";
import { TileDescriptor } from "../video-grid/TileDescriptor";
import { AudioSink } from "../video-grid/AudioSink";
import { useCallViewKeyboardShortcuts } from "../useCallViewKeyboardShortcuts";
-import { MediaDevicesState } from "./devices/useMediaDevices";
+import { MediaDevicesState } from "../settings/mediaDevices";
const canScreenshare = "getDisplayMedia" in (navigator.mediaDevices ?? {});
// There is currently a bug in Safari our our code with cloning and sending MediaStreams
diff --git a/src/room/LobbyView.tsx b/src/room/LobbyView.tsx
index ce5f225a..e58e5cbb 100644
--- a/src/room/LobbyView.tsx
+++ b/src/room/LobbyView.tsx
@@ -26,7 +26,7 @@ import { UserMenuContainer } from "../UserMenuContainer";
import { Body, Link } from "../typography/Typography";
import { useLocationNavigation } from "../useLocationNavigation";
import { LocalMediaInfo, MatrixInfo, VideoPreview } from "./VideoPreview";
-import { MediaDevicesState } from "./devices/useMediaDevices";
+import { MediaDevicesState } from "../settings/mediaDevices";
interface Props {
matrixInfo: MatrixInfo;
diff --git a/src/room/OverflowMenu.tsx b/src/room/OverflowMenu.tsx
index 0e0c3d96..01312e95 100644
--- a/src/room/OverflowMenu.tsx
+++ b/src/room/OverflowMenu.tsx
@@ -32,7 +32,7 @@ import { InviteModal } from "./InviteModal";
import { TooltipTrigger } from "../Tooltip";
import { FeedbackModal } from "./FeedbackModal";
import { Config } from "../config/Config";
-import { MediaDevicesState } from "./devices/useMediaDevices";
+import { MediaDevicesState } from "../settings/mediaDevices";
interface Props {
roomId: string;
diff --git a/src/room/VideoPreview.tsx b/src/room/VideoPreview.tsx
index 81424184..29aa5891 100644
--- a/src/room/VideoPreview.tsx
+++ b/src/room/VideoPreview.tsx
@@ -24,7 +24,7 @@ import { OverflowMenu } from "./OverflowMenu";
import { Avatar } from "../Avatar";
import styles from "./VideoPreview.module.css";
import { useModalTriggerState } from "../Modal";
-import { MediaDevicesState } from "./devices/useMediaDevices";
+import { MediaDevicesState } from "../settings/mediaDevices";
export type MatrixInfo = {
userName: string;
@@ -36,7 +36,7 @@ export type MatrixInfo = {
export type MediaInfo = {
track: Track; // TODO: Replace it by a more generic `CallFeed` type from JS SDK once we generalise the types.
muted: boolean;
- setMuted: (muted: boolean) => void;
+ toggle: () => void;
};
export type LocalMediaInfo = {
@@ -67,7 +67,7 @@ export function VideoPreview({
return () => {
localMediaInfo.video?.track.detach();
};
- }, [localMediaInfo]);
+ }, [localMediaInfo.video?.track, mediaElement]);
return (
@@ -86,17 +86,13 @@ export function VideoPreview({
{localMediaInfo.audio && (
- localMediaInfo.audio?.setMuted(!localMediaInfo.audio?.muted)
- }
+ onPress={localMediaInfo.audio?.toggle}
/>
)}
{localMediaInfo.video && (
- localMediaInfo.video?.setMuted(!localMediaInfo.video?.muted)
- }
+ onPress={localMediaInfo.video?.toggle}
/>
)}
{
- getDevices(kind: MediaDeviceKind): Promise;
- setActiveDevice(kind: MediaDeviceKind, deviceId: string): Promise;
-}
-
-export type MediaDeviceHandlerCallbacks = {
- devicesChanged: () => Promise;
-};
-
-export enum MediaDeviceHandlerEvents {
- DevicesChanged = "devicesChanged",
-}
diff --git a/src/room/devices/useMediaDevices.ts b/src/room/devices/useMediaDevices.ts
deleted file mode 100644
index 445bb4fd..00000000
--- a/src/room/devices/useMediaDevices.ts
+++ /dev/null
@@ -1,149 +0,0 @@
-import { useEffect, useState } from "react";
-
-import { MediaDevicesManager } from "./mediaDevices";
-
-export type MediaDevices = {
- available: MediaDeviceInfo[];
- selected: number;
-};
-
-export type MediaDevicesState = {
- state: Map;
- selectActiveDevice: (
- kind: MediaDeviceKind,
- deviceId: string
- ) => Promise;
-};
-
-export function useMediaDevices(
- mediaDeviceHandler: MediaDevicesManager
-): MediaDevicesState {
- // Create a React state to store the available devices and the selected device for each kind.
- const [state, setState] = useState