Fix: Explicitly request camera permission before starting Quagga
- Added getUserMedia call before Quagga.init to trigger browser permission dialog - Better error messages for permission denied/not found/in use Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
fb6351aa29
commit
55dd2af732
2 changed files with 29 additions and 12 deletions
|
|
@ -76,7 +76,7 @@ class modHandyBarcodeScanner extends DolibarrModules
|
|||
$this->editor_squarred_logo = ''; // Must be image filename into the module/img directory followed with @modulename. Example: 'myimage.png@handybarcodescanner'
|
||||
|
||||
// Possible values for version are: 'development', 'experimental', 'dolibarr', 'dolibarr_deprecated', 'experimental_deprecated' or a version string like 'x.y.z'
|
||||
$this->version = '1.0';
|
||||
$this->version = '1.1';
|
||||
// Url to the file with your last numberversion of this module
|
||||
//$this->url_last_version = 'http://www.example.com/versionmodule.txt';
|
||||
|
||||
|
|
|
|||
|
|
@ -165,6 +165,33 @@
|
|||
elements.startBtn.disabled = true;
|
||||
elements.startBtn.textContent = 'Initialisiere...';
|
||||
|
||||
// First request camera permission explicitly
|
||||
navigator.mediaDevices.getUserMedia({ video: { facingMode: 'environment' } })
|
||||
.then(function(stream) {
|
||||
// Permission granted - stop the test stream
|
||||
stream.getTracks().forEach(track => track.stop());
|
||||
|
||||
// Now start Quagga
|
||||
initQuagga();
|
||||
})
|
||||
.catch(function(err) {
|
||||
console.error('Camera permission error:', err);
|
||||
elements.startBtn.disabled = false;
|
||||
elements.startBtn.textContent = CONFIG.lang.startScan || 'Scan starten';
|
||||
|
||||
let errorMsg = CONFIG.lang.cameraError || 'Kamerafehler';
|
||||
if (err.name === 'NotAllowedError') {
|
||||
errorMsg = 'Kamerazugriff verweigert. Bitte Berechtigung in den Browser-Einstellungen erteilen.';
|
||||
} else if (err.name === 'NotFoundError') {
|
||||
errorMsg = 'Keine Kamera gefunden.';
|
||||
} else if (err.name === 'NotReadableError') {
|
||||
errorMsg = 'Kamera wird bereits verwendet.';
|
||||
}
|
||||
showToast(errorMsg, 'error');
|
||||
});
|
||||
}
|
||||
|
||||
function initQuagga() {
|
||||
Quagga.init({
|
||||
inputStream: {
|
||||
name: "Live",
|
||||
|
|
@ -191,17 +218,7 @@
|
|||
console.error('Quagga init error:', err);
|
||||
elements.startBtn.disabled = false;
|
||||
elements.startBtn.textContent = CONFIG.lang.startScan || 'Scan starten';
|
||||
|
||||
// Show specific error message
|
||||
let errorMsg = CONFIG.lang.cameraError || 'Kamerafehler';
|
||||
if (err.name === 'NotAllowedError') {
|
||||
errorMsg = 'Kamerazugriff verweigert. Bitte Berechtigung erteilen.';
|
||||
} else if (err.name === 'NotFoundError') {
|
||||
errorMsg = 'Keine Kamera gefunden.';
|
||||
} else if (err.name === 'NotReadableError') {
|
||||
errorMsg = 'Kamera wird bereits verwendet.';
|
||||
}
|
||||
showToast(errorMsg, 'error');
|
||||
showToast(CONFIG.lang.cameraError || 'Kamerafehler', 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue