From 4a2fdcfcdca86c6f0488e5c237647f23c086f415 Mon Sep 17 00:00:00 2001 From: hawkbee1 Date: Thu, 26 Sep 2024 10:06:58 +0000 Subject: [PATCH] deal properly with json value inside selective disclosure which has a claim --- .../selective_disclosure_display_map.dart | 27 +++++++++++-------- .../selective_disclosure.dart | 2 +- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/lib/selective_disclosure/helper_functions/selective_disclosure_display_map.dart b/lib/selective_disclosure/helper_functions/selective_disclosure_display_map.dart index f12fea671..819af3aac 100644 --- a/lib/selective_disclosure/helper_functions/selective_disclosure_display_map.dart +++ b/lib/selective_disclosure/helper_functions/selective_disclosure_display_map.dart @@ -67,6 +67,10 @@ class SelectiveDisclosureDisplayMap { ).buildMap; if (nestedMap.isNotEmpty) { builtMap[title] = nestedMap; + } else { + builtMap.addAll( + claimData(mapKey, title), + ); } } else { builtMap.addAll(claimData(mapKey, title)); @@ -131,13 +135,6 @@ class SelectiveDisclosureDisplayMap { if (claimList is List) { if (claimList.contains(digest)) displayElement = true; } - if (claimList == null) { - // checking if content is the nested value we want to display - final contentJson = jsonDecode(content); - if (contentJson[1] == parentKeyId) { - displayElement = true; - } - } } if (!displayElement) continue; } @@ -156,7 +153,7 @@ class SelectiveDisclosureDisplayMap { if (!currentClaims.containsKey(element.key) || currentClaims[element.key].length == 0) { if (element.value is Map) { - builtMap.addAll(MapForNestedClaimWithoutDisplay(element)); + builtMap.addAll(MapForNestedClaimWithoutDisplay(element, null)); continue; } @@ -174,6 +171,7 @@ class SelectiveDisclosureDisplayMap { /// can be used in recursive way to get more nested levels Map MapForNestedClaimWithoutDisplay( dynamic element, + String? title, ) { final value = element.value as Map; final builtMap = {}; @@ -208,7 +206,7 @@ class SelectiveDisclosureDisplayMap { (entry) => entry.value.toString().contains(element.key.toString()), ); if (index == -1) isDisabled = true; - builtMap[element.key.toString()] = { + builtMap[title ?? element.key.toString()] = { 'mapKey': element.key.toString(), 'claimKey': element.key.toString(), 'threeDotValue': null, @@ -289,12 +287,19 @@ class SelectiveDisclosureDisplayMap { (entry) => entry.value.toString().contains(claimKey), ); if (indexInDisclosure == -1) isDisabled = true; - + // ignore: inference_failure_on_uninitialized_variable, prefer_typing_uninitialized_variables + late final value; + try { + final json = jsonDecode(element.data); + value = json; + } catch (e) { + value = element.data; + } final listElement = { 'mapKey': mapKey, 'claimKey': claimKey, 'threeDotValue': element.threeDotValue, - 'value': element.data, + 'value': value, 'hasCheckbox': !isDisabled && isPresentation, 'isCompulsary': isCompulsary, }; diff --git a/lib/selective_disclosure/selective_disclosure.dart b/lib/selective_disclosure/selective_disclosure.dart index f76a591db..02b2ca82d 100644 --- a/lib/selective_disclosure/selective_disclosure.dart +++ b/lib/selective_disclosure/selective_disclosure.dart @@ -211,7 +211,7 @@ class SelectiveDisclosure { value.add( ClaimsData( isfromDisclosureOfJWT: true, - data: data.toString(), + data: data is Map ? jsonEncode(data) : data.toString(), ), ); } catch (e) {