TF-2528 Sorting emails by order ids list of Email/query
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:model/extensions/account_id_extensions.dart';
|
||||
@@ -15,4 +16,26 @@ extension ListEmailExtension on List<Email> {
|
||||
TupleKey(email.id!.asString, accountId.asString, userName.value).encodeKey : email.toEmailCache()
|
||||
};
|
||||
}
|
||||
|
||||
List<Email> sortingByOrderOfIdList(List<Id> ids) {
|
||||
if (ids.length != length) {
|
||||
return this;
|
||||
}
|
||||
|
||||
sort((email1, email2) {
|
||||
final id1 = email1.id?.id;
|
||||
final id2 = email2.id?.id;
|
||||
|
||||
if (id1 == null || id2 == null) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
final index1 = ids.indexWhere((id) => id == id1);
|
||||
final index2 = ids.indexWhere((id) => id == id2);
|
||||
|
||||
return index1.compareTo(index2);
|
||||
});
|
||||
|
||||
return this;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user