TF-2528 Sorting emails by order ids list of Email/query

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2024-01-31 12:45:27 +07:00
committed by Dat H. Pham
parent d834a512c1
commit a5665416b1
3 changed files with 50 additions and 9 deletions
@@ -1,5 +1,6 @@
import 'dart:async';
import 'package:core/utils/app_logger.dart';
import 'package:jmap_dart_client/http/http_client.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
@@ -16,6 +17,9 @@ import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/email/get/get_email_method.dart';
import 'package:jmap_dart_client/jmap/mail/email/get/get_email_response.dart';
import 'package:jmap_dart_client/jmap/mail/email/query/query_email_method.dart';
import 'package:jmap_dart_client/jmap/mail/email/query/query_email_response.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/thread/data/extensions/list_email_extension.dart';
import 'package:tmail_ui_user/features/thread/data/model/email_change_response.dart';
import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart';
import 'package:tmail_ui_user/main/error/capability_validator.dart';
@@ -71,16 +75,30 @@ class ThreadAPI {
.build()
.execute();
final resultList = result.parse<GetEmailResponse>(
getEmailInvocation.methodCallId, GetEmailResponse.deserialize);
final responseOfGetEmailMethod = result.parse<GetEmailResponse>(
getEmailInvocation.methodCallId,
GetEmailResponse.deserialize);
if (sort != null && resultList != null) {
for (var comparator in sort) {
resultList.sortEmails(comparator);
}
final responseOfQueryEmailMethod = result.parse<QueryEmailResponse>(
queryEmailInvocation.methodCallId,
QueryEmailResponse.deserialize);
List<Email>? emailList;
if (responseOfGetEmailMethod?.list.isNotEmpty == true &&
responseOfQueryEmailMethod?.ids.isNotEmpty == true) {
log('ThreadAPI::getAllEmail: QUERY_EMAIL_IDS = ${responseOfQueryEmailMethod?.ids}');
final listSortedEmail = responseOfGetEmailMethod!.list
.sortingByOrderOfIdList(responseOfQueryEmailMethod!.ids.toList());
emailList = listSortedEmail;
} else {
emailList = responseOfGetEmailMethod?.list;
}
return EmailsResponse(emailList: resultList?.list, state: resultList?.state);
log('ThreadAPI::getAllEmail: EMAIL_DISPLAYED_IDS = ${emailList?.listEmailIds}');
return EmailsResponse(
emailList: emailList,
state: responseOfGetEmailMethod?.state
);
}
Future<EmailChangeResponse> getChanges(