@@ -12,6 +12,7 @@ import {
12
12
Html5QrcodeConstants ,
13
13
Html5QrcodeScanType ,
14
14
QrcodeSuccessCallback ,
15
+ StartErrorCallback ,
15
16
QrcodeErrorCallback ,
16
17
Html5QrcodeResult ,
17
18
Html5QrcodeError ,
@@ -194,6 +195,11 @@ export class Html5QrcodeScanner {
194
195
private cameraScanImage : HTMLImageElement | null = null ;
195
196
private fileScanImage : HTMLImageElement | null = null ;
196
197
private fileSelectionUi : FileSelectionUi | null = null ;
198
+
199
+ public startErrorCallback : StartErrorCallback ;
200
+ public torchButtonErrorCallback : StartErrorCallback ;
201
+ public getCamaraErrorCallback : StartErrorCallback ;
202
+ public clickListenerErrorCallback : StartErrorCallback ;
197
203
//#endregion
198
204
199
205
/**
@@ -226,6 +232,17 @@ export class Html5QrcodeScanner {
226
232
if ( config ! . rememberLastUsedCamera !== true ) {
227
233
this . persistedDataManager . reset ( ) ;
228
234
}
235
+ const $this = this ;
236
+
237
+ const warnUserViaHeader : StartErrorCallback = ( error ) => {
238
+ $this . setHeaderMessage (
239
+ error . toString ( ) , Html5QrcodeScannerStatus . STATUS_WARNING ) ;
240
+ } ;
241
+
242
+ this . startErrorCallback = warnUserViaHeader ;
243
+ this . torchButtonErrorCallback = warnUserViaHeader ;
244
+ this . getCamaraErrorCallback = warnUserViaHeader ;
245
+ this . clickListenerErrorCallback = warnUserViaHeader ;
229
246
}
230
247
231
248
/**
@@ -582,8 +599,7 @@ export class Html5QrcodeScanner {
582
599
// time.
583
600
createPermissionButtonIfNotExists ( ) ;
584
601
}
585
- $this . setHeaderMessage (
586
- error , Html5QrcodeScannerStatus . STATUS_WARNING ) ;
602
+ $this . getCamaraErrorCallback ( error ) ;
587
603
$this . showHideScanTypeSwapLink ( true ) ;
588
604
} ) ;
589
605
}
@@ -763,6 +779,7 @@ export class Html5QrcodeScanner {
763
779
764
780
// Optional torch button support.
765
781
let torchButton : TorchButton ;
782
+
766
783
const createAndShowTorchButtonIfSupported
767
784
= ( cameraCapabilities : CameraCapabilities ) => {
768
785
if ( ! cameraCapabilities . torchFeature ( ) . isSupported ( ) ) {
@@ -780,9 +797,7 @@ export class Html5QrcodeScanner {
780
797
{ display : "none" , marginLeft : "5px" } ,
781
798
// Callback in case of torch action failure.
782
799
( errorMessage ) => {
783
- $this . setHeaderMessage (
784
- errorMessage ,
785
- Html5QrcodeScannerStatus . STATUS_WARNING ) ;
800
+ $this . torchButtonErrorCallback ( Html5QrcodeErrorFactory . createFrom ( errorMessage ) ) ;
786
801
}
787
802
) ;
788
803
} else {
@@ -850,8 +865,7 @@ export class Html5QrcodeScanner {
850
865
$this . showHideScanTypeSwapLink ( true ) ;
851
866
cameraSelectUi . enable ( ) ;
852
867
resetCameraActionStartButton ( /* shouldShow= */ true ) ;
853
- $this . setHeaderMessage (
854
- error , Html5QrcodeScannerStatus . STATUS_WARNING ) ;
868
+ $this . startErrorCallback ( error ) ;
855
869
} ) ;
856
870
} ) ;
857
871
@@ -887,8 +901,7 @@ export class Html5QrcodeScanner {
887
901
$this . insertCameraScanImageToScanRegion ( ) ;
888
902
} ) . catch ( ( error ) => {
889
903
cameraActionStopButton . disabled = false ;
890
- $this . setHeaderMessage (
891
- error , Html5QrcodeScannerStatus . STATUS_WARNING ) ;
904
+ $this . clickListenerErrorCallback ( error ) ;
892
905
} ) ;
893
906
} ) ;
894
907
@@ -993,13 +1006,14 @@ export class Html5QrcodeScanner {
993
1006
}
994
1007
}
995
1008
996
- private resetHeaderMessage ( ) {
1009
+ public resetHeaderMessage ( ) {
997
1010
const messageDiv = document . getElementById (
998
1011
this . getHeaderMessageContainerId ( ) ) ! ;
999
1012
messageDiv . style . display = "none" ;
1000
1013
}
1001
1014
1002
- private setHeaderMessage (
1015
+ /*eslint complexity: ["error", 5]*/
1016
+ public setHeaderMessage (
1003
1017
messageText : string , scannerStatus ?: Html5QrcodeScannerStatus ) {
1004
1018
if ( ! scannerStatus ) {
1005
1019
scannerStatus = Html5QrcodeScannerStatus . STATUS_DEFAULT ;
0 commit comments