Navaron Bracke

update web error code handling to handle unsupported better

@@ -17,6 +17,9 @@ class ScannerErrorWidget extends StatelessWidget { @@ -17,6 +17,9 @@ class ScannerErrorWidget extends StatelessWidget {
17 case MobileScannerErrorCode.permissionDenied: 17 case MobileScannerErrorCode.permissionDenied:
18 errorMessage = 'Permission denied'; 18 errorMessage = 'Permission denied';
19 break; 19 break;
  20 + case MobileScannerErrorCode.unsupported:
  21 + errorMessage = 'Scanning is unsupported on this device';
  22 + break;
20 default: 23 default:
21 errorMessage = 'Generic Error'; 24 errorMessage = 'Generic Error';
22 break; 25 break;
@@ -11,4 +11,7 @@ enum MobileScannerErrorCode { @@ -11,4 +11,7 @@ enum MobileScannerErrorCode {
11 11
12 /// The permission to use the camera was denied. 12 /// The permission to use the camera was denied.
13 permissionDenied, 13 permissionDenied,
  14 +
  15 + /// Scanning is unsupported on the current device.
  16 + unsupported,
14 } 17 }
@@ -207,9 +207,21 @@ class MobileScannerController { @@ -207,9 +207,21 @@ class MobileScannerController {
207 } on PlatformException catch (error) { 207 } on PlatformException catch (error) {
208 MobileScannerErrorCode errorCode = MobileScannerErrorCode.genericError; 208 MobileScannerErrorCode errorCode = MobileScannerErrorCode.genericError;
209 209
210 - if (error.code == "MobileScannerWeb") { 210 + final String? errorMessage = error.message;
  211 +
  212 + if (kIsWeb) {
  213 + if (errorMessage == null) {
  214 + errorCode = MobileScannerErrorCode.genericError;
  215 + } else if (errorMessage.contains('NotFoundError') ||
  216 + errorMessage.contains('NotSupportedError')) {
  217 + errorCode = MobileScannerErrorCode.unsupported;
  218 + } else if (errorMessage.contains('NotAllowedError')) {
211 errorCode = MobileScannerErrorCode.permissionDenied; 219 errorCode = MobileScannerErrorCode.permissionDenied;
  220 + } else {
  221 + errorCode = MobileScannerErrorCode.genericError;
212 } 222 }
  223 + }
  224 +
213 isStarting = false; 225 isStarting = false;
214 226
215 throw MobileScannerException( 227 throw MobileScannerException(