From 650966a3b04a4aab36940d3e866c072f9d3bb6f0 Mon Sep 17 00:00:00 2001 From: Bibash Shrestha Date: Mon, 14 Aug 2023 14:48:15 +0545 Subject: [PATCH] feat: Showing dialog to switch profile #1781 --- .../cubit/qr_code_scan_cubit.dart | 107 ++++++++---------- .../cubit/qr_code_scan_state.dart | 4 +- .../qr_code_scan/view/qr_code_scan_page.dart | 3 +- lib/splash/bloclisteners/blocklisteners.dart | 6 +- .../verifier_token_parameters_class.dart | 6 +- .../verifier_token_parameters_test.dart | 1 + 6 files changed, 58 insertions(+), 69 deletions(-) diff --git a/lib/dashboard/qr_code/qr_code_scan/cubit/qr_code_scan_cubit.dart b/lib/dashboard/qr_code/qr_code_scan/cubit/qr_code_scan_cubit.dart index 31fe5b3cf..dc6a74f73 100644 --- a/lib/dashboard/qr_code/qr_code_scan/cubit/qr_code_scan_cubit.dart +++ b/lib/dashboard/qr_code/qr_code_scan/cubit/qr_code_scan_cubit.dart @@ -17,7 +17,6 @@ import 'package:beacon_flutter/beacon_flutter.dart'; import 'package:bloc/bloc.dart'; import 'package:credential_manifest/credential_manifest.dart'; import 'package:did_kit/did_kit.dart'; -import 'package:dio/dio.dart'; import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; import 'package:json_annotation/json_annotation.dart'; @@ -118,17 +117,15 @@ class QRCodeScanCubit extends Cubit { } } on FormatException { log.i('Format Exception'); - emit( - state.error( - messageHandler: ResponseMessage( - ResponseString.RESPONSE_STRING_THIS_QR_CODE_IS_NOT_SUPPORTED, - ), + emitError( + ResponseMessage( + ResponseString.RESPONSE_STRING_THIS_QR_CODE_IS_NOT_SUPPORTED, ), ); } catch (e, s) { log.e('Error -$e, stack: $s'); if (e is MessageHandler) { - emit(state.error(messageHandler: e)); + emitError(e); } else { var message = ResponseString.RESPONSE_STRING_SOMETHING_WENT_WRONG_TRY_AGAIN_LATER; @@ -140,10 +137,7 @@ class QRCodeScanCubit extends Cubit { if (e.toString().startsWith('Exception: INIT_ISSUE')) { message = ResponseString.RESPONSE_STRING_deviceIncompatibilityMessage; } - - emit( - state.error(messageHandler: ResponseMessage(message)), - ); + emitError(ResponseMessage(message)); } } } @@ -156,20 +150,20 @@ class QRCodeScanCubit extends Cubit { try { await verify(uri: Uri.parse(deepLinkUrl)); } on FormatException { - emit( - state.error( - messageHandler: ResponseMessage( - ResponseString - .RESPONSE_STRING_THIS_URL_DOSE_NOT_CONTAIN_A_VALID_MESSAGE, - ), + emitError( + ResponseMessage( + ResponseString + .RESPONSE_STRING_THIS_URL_DOSE_NOT_CONTAIN_A_VALID_MESSAGE, ), ); } } } - Future emitError(MessageHandler messageHandler) async { - emit(state.error(messageHandler: messageHandler)); + void emitError(MessageHandler messageHandler) { + emit( + state.error(message: StateMessage.error(messageHandler: messageHandler)), + ); } Future verify({required Uri uri, bool? isScan}) async { @@ -264,13 +258,15 @@ class QRCodeScanCubit extends Cubit { } catch (e) { log.e(e); if (e is MessageHandler) { - emit(state.error(messageHandler: e)); + emit(state.error(message: StateMessage.error(messageHandler: e))); } else { emit( state.error( - messageHandler: ResponseMessage( - ResponseString - .RESPONSE_STRING_SOMETHING_WENT_WRONG_TRY_AGAIN_LATER, + message: StateMessage.error( + messageHandler: ResponseMessage( + ResponseString + .RESPONSE_STRING_SOMETHING_WENT_WRONG_TRY_AGAIN_LATER, + ), ), ), ); @@ -291,8 +287,12 @@ class QRCodeScanCubit extends Cubit { .startsWith(currentOIIDC4VCType.presentationPrefix)) { emit( state.error( - messageHandler: ResponseMessage( - ResponseString.RESPONSE_STRING_pleaseSwitchToCorrectOIDC4VCProfile, + message: StateMessage.error( + messageHandler: ResponseMessage( + ResponseString + .RESPONSE_STRING_pleaseSwitchToCorrectOIDC4VCProfile, + ), + showDialog: true, ), ), ); @@ -323,8 +323,12 @@ class QRCodeScanCubit extends Cubit { .startsWith(currentOIIDC4VCType.presentationPrefix)) { emit( state.error( - messageHandler: ResponseMessage( - ResponseString.RESPONSE_STRING_pleaseSwitchToCorrectOIDC4VCProfile, + message: StateMessage.error( + messageHandler: ResponseMessage( + ResponseString + .RESPONSE_STRING_pleaseSwitchToCorrectOIDC4VCProfile, + ), + showDialog: true, ), ), ); @@ -563,14 +567,11 @@ class QRCodeScanCubit extends Cubit { 'An error occurred while connecting to the server. $e', ); if (e is MessageHandler) { - emit(state.error(messageHandler: e)); + emitError(e); } else { - emit( - state.error( - messageHandler: ResponseMessage( - ResponseString - .RESPONSE_STRING_SOMETHING_WENT_WRONG_TRY_AGAIN_LATER, - ), + emitError( + ResponseMessage( + ResponseString.RESPONSE_STRING_SOMETHING_WENT_WRONG_TRY_AGAIN_LATER, ), ); } @@ -683,20 +684,14 @@ class QRCodeScanCubit extends Cubit { goBack(); } catch (e) { if (e is MessageHandler) { - emit( - state.error(messageHandler: e), - ); + emitError(e); } else { - emit( - state.error( - messageHandler: ResponseMessage( - ResponseString - .RESPONSE_STRING_SOMETHING_WENT_WRONG_TRY_AGAIN_LATER, // ignore: lines_longer_than_80_chars - ), + emitError( + ResponseMessage( + ResponseString.RESPONSE_STRING_SOMETHING_WENT_WRONG_TRY_AGAIN_LATER, ), ); } - return; } } @@ -840,12 +835,8 @@ class QRCodeScanCubit extends Cubit { ///credential should not be empty since we have to present if (credentialsCubit.state.credentials.isEmpty) { - emit( - state.error( - messageHandler: ResponseMessage( - ResponseString.RESPONSE_STRING_CREDENTIAL_EMPTY_ERROR, - ), - ), + emitError( + ResponseMessage(ResponseString.RESPONSE_STRING_CREDENTIAL_EMPTY_ERROR), ); isValid = false; } @@ -853,11 +844,9 @@ class QRCodeScanCubit extends Cubit { ///request attribute check if (requestAttributeExists(uri) && isValid) { isValid = false; - emit( - state.error( - messageHandler: ResponseMessage( - ResponseString.RESPONSE_STRING_SCAN_UNSUPPORTED_MESSAGE, - ), + emitError( + ResponseMessage( + ResponseString.RESPONSE_STRING_SCAN_UNSUPPORTED_MESSAGE, ), ); } @@ -873,11 +862,9 @@ class QRCodeScanCubit extends Cubit { ///check if claims exists if (sIOPV2Param.claims == null && isValid) { - emit( - state.error( - messageHandler: ResponseMessage( - ResponseString.RESPONSE_STRING_SCAN_UNSUPPORTED_MESSAGE, - ), + emitError( + ResponseMessage( + ResponseString.RESPONSE_STRING_SCAN_UNSUPPORTED_MESSAGE, ), ); isValid = false; diff --git a/lib/dashboard/qr_code/qr_code_scan/cubit/qr_code_scan_state.dart b/lib/dashboard/qr_code/qr_code_scan/cubit/qr_code_scan_state.dart index 4628476c1..f4e8d475b 100644 --- a/lib/dashboard/qr_code/qr_code_scan/cubit/qr_code_scan_state.dart +++ b/lib/dashboard/qr_code/qr_code_scan/cubit/qr_code_scan_state.dart @@ -42,10 +42,10 @@ class QRCodeScanState extends Equatable { ); } - QRCodeScanState error({required MessageHandler messageHandler}) { + QRCodeScanState error({required StateMessage message}) { return QRCodeScanState( status: QrScanStatus.error, - message: StateMessage.error(messageHandler: messageHandler), + message: message, isScan: isScan, uri: uri, isRequestVerified: isRequestVerified, diff --git a/lib/dashboard/qr_code/qr_code_scan/view/qr_code_scan_page.dart b/lib/dashboard/qr_code/qr_code_scan/view/qr_code_scan_page.dart index d21560ccc..dbb3bf32d 100644 --- a/lib/dashboard/qr_code/qr_code_scan/view/qr_code_scan_page.dart +++ b/lib/dashboard/qr_code/qr_code_scan/view/qr_code_scan_page.dart @@ -42,7 +42,8 @@ class _QrCodeScanPageState extends State { listener: (context, state) async { if (state.status == QrScanStatus.error) { if (state.message != null) { - Navigator.of(context).pop(); + final Route? currentRoute = ModalRoute.of(context); + currentRoute!.didPop(true); } } diff --git a/lib/splash/bloclisteners/blocklisteners.dart b/lib/splash/bloclisteners/blocklisteners.dart index 1428d56bb..cd3c015e8 100644 --- a/lib/splash/bloclisteners/blocklisteners.dart +++ b/lib/splash/bloclisteners/blocklisteners.dart @@ -253,9 +253,9 @@ final qrCodeBlocListener = BlocListener( } catch (e) { log.e(e); if (e is MessageHandler) { - await context.read().emitError(e); + context.read().emitError(e); } else { - await context.read().emitError( + context.read().emitError( ResponseMessage( ResponseString .RESPONSE_STRING_SOMETHING_WENT_WRONG_TRY_AGAIN_LATER, @@ -317,7 +317,7 @@ final qrCodeBlocListener = BlocListener( qrCodeScanCubit: context.read(), ); } else { - await context.read().emitError( + context.read().emitError( ResponseMessage( ResponseString.RESPONSE_STRING_SCAN_REFUSE_HOST, ), diff --git a/packages/oidc4vc/test/src/verifier_token_parameters/verifier_token_parameters_class.dart b/packages/oidc4vc/test/src/verifier_token_parameters/verifier_token_parameters_class.dart index 97038bd20..c49c2b4d5 100644 --- a/packages/oidc4vc/test/src/verifier_token_parameters/verifier_token_parameters_class.dart +++ b/packages/oidc4vc/test/src/verifier_token_parameters/verifier_token_parameters_class.dart @@ -6,7 +6,7 @@ import '../token_parameters/token_parameters_class.dart'; class VerifierTokenParametersTest extends TokenParameterTest { final verifierTokenParameters = - VerifierTokenParameters(privateKey, '', '', Uri.parse(''), []); + VerifierTokenParameters(privateKey, '', '', Uri.parse(''), [], ''); @override void publicKeyTest() { @@ -31,14 +31,14 @@ class VerifierTokenParametersTest extends TokenParameterTest { @override void algorithmIsES256Test() { final tokenParameters = - VerifierTokenParameters(privateKey2, '', '', Uri.parse(''), []); + VerifierTokenParameters(privateKey2, '', '', Uri.parse(''), [], ''); expect(tokenParameters.alg, ES256Alg); } @override void algorithmIsNotNullTest() { final tokenParameters = - VerifierTokenParameters(keyWithAlg, '', '', Uri.parse(''), []); + VerifierTokenParameters(keyWithAlg, '', '', Uri.parse(''), [], ''); expect(tokenParameters.alg, HS256Alg); } diff --git a/packages/oidc4vc/test/src/verifier_token_parameters/verifier_token_parameters_test.dart b/packages/oidc4vc/test/src/verifier_token_parameters/verifier_token_parameters_test.dart index d76df04c6..f83452102 100644 --- a/packages/oidc4vc/test/src/verifier_token_parameters/verifier_token_parameters_test.dart +++ b/packages/oidc4vc/test/src/verifier_token_parameters/verifier_token_parameters_test.dart @@ -36,6 +36,7 @@ void main() { '', uri, credentialsToBePresented, + '', ); const nonce = '69165b47-a851-11ed-bd52-0a1628958560';