TF-1194: create new default identity: add function getSmallestIdentities and sortListIdentities

This commit is contained in:
sherlockvn
2023-01-16 16:55:01 +07:00
committed by Dat Vu
parent cfea102f09
commit 9147eed30c
2 changed files with 178 additions and 0 deletions
@@ -0,0 +1,46 @@
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
import 'package:jmap_dart_client/jmap/identities/identity.dart';
class IdentityUtils {
List<Identity>? getSmallestOrderedIdentity(List<Identity>? identities) {
if (identities == null || identities.isEmpty) {
return identities;
}
final initialIdentity = Identity(sortOrder: UnsignedInt(9007199254740991));
final smallestIdentity = identities.fold<Identity>(
initialIdentity,
(previousIdentity, nextIdentity) {
if (previousIdentity.sortOrder == null && nextIdentity.sortOrder == null) {
return initialIdentity;
} else if (previousIdentity.sortOrder == null) {
return nextIdentity;
} else if (nextIdentity.sortOrder == null) {
return previousIdentity;
}
return previousIdentity.sortOrder!.value < nextIdentity.sortOrder!.value
? previousIdentity : nextIdentity;
});
if (smallestIdentity == initialIdentity) {
return identities;
}
return identities.where((element) => element.sortOrder == smallestIdentity.sortOrder).toList();
}
void sortListIdentities(List<Identity> identities) {
identities.sort((identity1, identity2) {
var sortOrder1 = identity1.sortOrder;
var sortOrder2 = identity2.sortOrder;
if (identity1.sortOrder == null) {
sortOrder1 = UnsignedInt(2147483647); // 2^31 - 1
}
if (identity2.sortOrder == null) {
sortOrder2 = UnsignedInt(2147483647);
}
return sortOrder1!.value < sortOrder2!.value ? -1 : 1 ;
});
}
}