From 85ae9c822ca14176586449ede68a1213f98cdc6f Mon Sep 17 00:00:00 2001 From: Mark Tompsett Date: Sat, 11 Jul 2020 04:49:22 +0000 Subject: [PATCH] Bug 6815: Attempt to detect webcam differently Signed-off-by: Christopher Brannon --- .../intranet-tmpl/prog/js/pages/patron-webcam.js | 28 ++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/js/pages/patron-webcam.js b/koha-tmpl/intranet-tmpl/prog/js/pages/patron-webcam.js index 95f9c45e2f..ff406b14cc 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/pages/patron-webcam.js +++ b/koha-tmpl/intranet-tmpl/prog/js/pages/patron-webcam.js @@ -83,20 +83,24 @@ function initializeCamera( camera_form ){ }); } -function detectWebcam(callback) { - let md = navigator.mediaDevices; - if (!md || !md.enumerateDevices) return callback(false); - md.enumerateDevices().then(devices => { - callback(devices.some(device => 'videoinput' === device.kind)); - }) -} +navigator.getMedia = ( navigator.getUserMedia || // use the proper vendor prefix + navigator.webkitGetUserMedia || + navigator.mozGetUserMedia || + navigator.msGetUserMedia); -detectWebcam(function(hasWebcam) { - let div_take_image = document.getElementById('take_patron_image'); - if (div_take_image) { - div_take_image.style.display = hasWebcam ? "block" : "none"; +var div_take_image = document.getElementById('take_patron_image'); +navigator.getMedia({video: true}, function(stream) { + div_take_image.style.display = 'block'; + stream.getTracks().forEach(function(track) { + if (track.readyState == 'live' && track.kind === 'video') { + track.stop(); + } + }); + }, function() { + div_take_image.style.display = 'none'; } -}); +); + $(document).ready(function(){ $("#trigger-webcam").on("click", function(e){ -- 2.11.0