Fix failure when no webcam is present
authorRuben Rodriguez <ruben@gnu.org>
Wed, 10 Mar 2021 20:47:43 +0000 (15:47 -0500)
committerRuben Rodriguez <ruben@gnu.org>
Wed, 10 Mar 2021 20:47:43 +0000 (15:47 -0500)
front/src/WebRtc/MediaManager.ts

index 9e85c6a09256b72bd47cd67617101cf4e1bd834c..27732ffe39ac5696b030c0910219ebc4445849cb 100644 (file)
@@ -113,22 +113,24 @@ export class MediaManager {
     getCamera() {
         let promise = null;
         try {
-            promise = navigator.mediaDevices.getUserMedia(this.constraintsMedia)
-                .then((stream: MediaStream) => {
-                    this.localStream = stream;
-                    this.myCamVideo.srcObject = this.localStream;
+            promise = navigator.mediaDevices.enumerateDevices()
+                .then(devices => {
+                    let cams = devices.filter(device => device.kind == "videoinput");
+                    if (cams.length == 0){
+                        this.constraintsMedia.video = false;
+                        document.getElementsByClassName("btn-video")[0].style.display = "none";
+                        document.getElementById("div-myCamVideo").style.display = "none";
+                    }
+                    return navigator.mediaDevices.getUserMedia(this.constraintsMedia).then((stream: MediaStream) => {
+                        this.localStream = stream;
+                        this.myCamVideo.srcObject = this.localStream;
+                        return stream;
+                    }).catch((err) => {
+                        console.info(`error get media {video: ${this.constraintsMedia.video}},{audio: ${this.constraintsMedia.audio}}`,err);
+                        this.localStream = null;
+                    })
+                })
 
-                    //TODO resize remote cam
-                    /*console.log(this.localStream.getTracks());
-                    let videoMediaStreamTrack =  this.localStream.getTracks().find((media : MediaStreamTrack) => media.kind === "video");
-                    let {width, height} = videoMediaStreamTrack.getSettings();
-                    console.info(`${width}x${height}`); // 6*/
-
-                    return stream;
-                }).catch((err) => {
-                    console.info(`error get media {video: ${this.constraintsMedia.video}},{audio: ${this.constraintsMedia.audio}}`,err);
-                    this.localStream = null;
-                });
         } catch (e) {
             promise = Promise.reject(false);
         }