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 b1aab0a17..552ea6dca 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 @@ -285,6 +285,8 @@ class QRCodeScanCubit extends Cubit { final clientId = response['client_id']; final claims = response['claims']; final presentationDefinition = response['presentation_definition']; + final presentationDefinitionUri = + response['presentation_definition_uri']; final queryJson = {}; if (redirectUri != null) { @@ -307,6 +309,11 @@ class QRCodeScanCubit extends Cubit { jsonEncode(presentationDefinition).replaceAll('"', "'"); } + if (presentationDefinitionUri != null) { + queryJson['presentation_definition_uri'] = + presentationDefinitionUri; + } + final String queryString = Uri(queryParameters: queryJson).query; final String newUrl = '${state.uri!}&$queryString'; @@ -625,6 +632,17 @@ class QRCodeScanCubit extends Cubit { as Map; presentationDefinition = PresentationDefinition.fromJson(json); + } else if (keys.contains('presentation_definition_uri')) { + final presentationDefinitionUri = state + .uri!.queryParameters['presentation_definition_uri'] + .toString(); + final dynamic response = await client.get(presentationDefinitionUri); + + final Map data = response == String + ? jsonDecode(response.toString()) as Map + : response as Map; + + presentationDefinition = PresentationDefinition.fromJson(data); } else { throw Exception(); }