Skip to content

Commit

Permalink
feat: Attribute order is taken into account #2528
Browse files Browse the repository at this point in the history
  • Loading branch information
bibash28 committed Mar 22, 2024
1 parent eb66499 commit 66cdc6a
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,48 @@ class CredentialSubjectData extends StatelessWidget {
Widget build(BuildContext context) {
final credentialSupported = credentialModel.credentialSupported;

final credentialSubjectReference = JsonPath(r'$..credentialSubject')
var credentialSubjectReference = JsonPath(r'$..credentialSubject')
.read(credentialSupported)
.firstOrNull
?.value;

if (credentialSubjectReference == null) return Container();
if (credentialSubjectReference is! Map<String, dynamic>) return Container();

if (credentialSupported == null) return Container();

final credentialDefinition = credentialSupported['credential_definition'];

if (credentialDefinition != null &&
credentialDefinition is Map<String, dynamic> &&
credentialDefinition.containsKey('order')) {
final order = credentialDefinition['order'];

if (order != null && order is List<dynamic>) {
final orderList = order.map((dynamic e) => e.toString()).toList();

final orderedData = <String, dynamic>{};
final remainingData = <String, dynamic>{};

// Order elements based on the order list
for (final key in orderList) {
if (credentialSubjectReference.containsKey(key)) {
orderedData[key] = credentialSubjectReference[key];
}
}

// Add remaining elements to the end of the ordered map
credentialSubjectReference.forEach((key, value) {
if (!orderedData.containsKey(key)) {
remainingData[key] = value;
}
});

orderedData.addAll(remainingData);
credentialSubjectReference = orderedData;
}
}

final credentialSubjectData = credentialModel.data['credentialSubject'];

if (credentialSubjectData == null) return Container();
Expand Down
2 changes: 1 addition & 1 deletion lib/selective_disclosure/selective_disclosure.dart
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class SelectiveDisclosure {
for (final key in orderList) {
if (claims.containsKey(key)) {
orderedClaims[key] = claims[key];
} else {}
}
}

// Add remaining elements to the end of the ordered map
Expand Down

0 comments on commit 66cdc6a

Please sign in to comment.