diff --git a/plugin/src/web.ts b/plugin/src/web.ts index e23456b..edfa2d6 100644 --- a/plugin/src/web.ts +++ b/plugin/src/web.ts @@ -66,6 +66,8 @@ export class CapacitorBarcodeScannerWeb const caposbarcodescannercontainerdialoginnerclose = document.createElement("span"); + caposbarcodescannercontainerdialoginnerclose.id = + "cap-os-barcode-scanner-close-button"; caposbarcodescannercontainerdialoginnerclose.className = "close-button"; caposbarcodescannercontainerdialoginnerclose.innerHTML = "×"; caposbarcodescannercontainerdialoginner.appendChild( @@ -95,9 +97,6 @@ export class CapacitorBarcodeScannerWeb caposbarcodescannercontainer.appendChild( caposbarcodescannercontainerdialog, ); - - caposbarcodescannercontainerdialoginnerclose.onclick = - this.stopAndHideScanner; } /** @@ -134,6 +133,19 @@ export class CapacitorBarcodeScannerWeb scannerFPS: options.web?.scannerFPS ? options.web.scannerFPS : 50, }; + let alreadyCancelled = false; + const closeButton = document.getElementById( + "cap-os-barcode-scanner-close-button", + ); + if (closeButton) { + closeButton.onclick = async () => { + if (alreadyCancelled) return; + alreadyCancelled = true; + await this.stopAndHideScanner(); + reject(new Error("Couldn’t scan because the process was cancelled.")); + }; + } + // Set up and start the scanner const scannerElement = document.getElementById( "cap-os-barcode-scanner-container-scanner",