Move "user media" logic into its own provider.

- This new provider is meant to be reused by the settings in the future

Change-Id: I513c07f2390445fb4802091b316244665218f948
diff --git a/client/src/pages/CallInterface.tsx b/client/src/pages/CallInterface.tsx
index 1cfd1e5..f66a180 100644
--- a/client/src/pages/CallInterface.tsx
+++ b/client/src/pages/CallInterface.tsx
@@ -50,6 +50,7 @@
 import VideoStream from '../components/VideoStream';
 import { CallStatus, useCallContext, VideoStatus } from '../contexts/CallProvider';
 import { useConversationContext } from '../contexts/ConversationProvider';
+import { useUserMediaContext } from '../contexts/UserMediaProvider';
 import { formatCallDuration } from '../utils/dates&times';
 import { VideoElementWithSinkId } from '../utils/utils';
 import { CallPending } from './CallPending';
@@ -91,13 +92,14 @@
 }
 
 const CallInterface = () => {
-  const { localStream, screenShareLocalStream, remoteStreams } = useCallContext();
   const {
+    localStream,
+    screenShareLocalStream,
     currentMediaDeviceIds: {
       audiooutput: { id: audioOutDeviceId },
     },
-    videoStatus,
-  } = useCallContext();
+  } = useUserMediaContext();
+  const { remoteStreams, videoStatus } = useCallContext();
   const remoteVideoRef = useRef<VideoElementWithSinkId | null>(null);
   const gridItemRef = useRef<HTMLDivElement | null>(null);
   const [isLocalVideoZoomed, setIsLocalVideoZoomed] = useState(false);