TF-2948 Apply new identity view for web

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-07-30 19:09:33 +07:00
committed by Dat H. Pham
parent 02a7adc64a
commit 23ecdfbf11
61 changed files with 963 additions and 804 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 ;
});
}
}