From ed9377e38f8bfb2a72678fcfe902963227b52476 Mon Sep 17 00:00:00 2001 From: Juliusz Chroboczek Date: Thu, 24 Dec 2020 00:01:33 +0100 Subject: [PATCH] Disable playing files when browser doesn't support captureStream. --- static/galene.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/static/galene.js b/static/galene.js index a4b595a..4190cd3 100644 --- a/static/galene.js +++ b/static/galene.js @@ -404,6 +404,8 @@ function setButtonsVisibility() { let local = !!findUpMedia('local'); let share = !!findUpMedia('screenshare'); let video = !!findUpMedia('video'); + /** @ts-ignore */ + let canFile = !!HTMLVideoElement.prototype.captureStream; // don't allow multiple presentations setVisibility('presentbutton', permissions.present && !local); @@ -420,7 +422,7 @@ function setButtonsVisibility() { setVisibility('mediaoptions', permissions.present); setVisibility('sendform', permissions.present); - setVisibility('fileform', permissions.present); + setVisibility('fileform', canFile && permissions.present); } /** @@ -553,8 +555,12 @@ getInputElement('fileinput').onchange = function(e) { throw new Error('Unexpected type for this'); let input = this; let files = input.files; - for(let i = 0; i < files.length; i++) - addFileMedia(files[i]); + for(let i = 0; i < files.length; i++) { + addFileMedia(files[i]).catch(e => { + console.error(e); + displayError(e); + }); + } input.value = ''; closeNav(); } @@ -902,6 +908,12 @@ async function addShareMedia() { * @param {File} file */ async function addFileMedia(file) { + /** @ts-ignore */ + if(!HTMLVideoElement.prototype.captureStream) { + displayError("This browser doesn't support file playback"); + return; + } + let url = URL.createObjectURL(file); let video = document.createElement('video'); video.src = url;