TF-2611 Get for maximum 5 latest email in Email/changes on FCM
Signed-off-by: dab246 <tdvu@linagora.com> clea# Please enter the commit message for your changes. Lines starting
This commit is contained in:
@@ -10,6 +10,8 @@ import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
|||||||
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
||||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/mail/email/email_comparator.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/mail/email/email_comparator_property.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
||||||
import 'package:model/email/email_property.dart';
|
import 'package:model/email/email_property.dart';
|
||||||
import 'package:model/extensions/list_email_extension.dart';
|
import 'package:model/extensions/list_email_extension.dart';
|
||||||
@@ -189,34 +191,33 @@ class FCMRepositoryImpl extends FCMRepository {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<EmailId>> getNewReceiveEmailFromNotification(Session session, AccountId accountId, jmap.State currentState) async {
|
Future<List<EmailId>> getNewReceiveEmailFromNotification(Session session, AccountId accountId, jmap.State currentState) async {
|
||||||
EmailChangeResponse? emailChangeResponse;
|
final changesResponse = await _threadDataSource.getChanges(
|
||||||
bool hasMoreChanges = true;
|
session,
|
||||||
jmap.State? sinceState = currentState;
|
accountId,
|
||||||
|
currentState,
|
||||||
|
propertiesCreated: Properties({
|
||||||
|
EmailProperty.id,
|
||||||
|
EmailProperty.receivedAt
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
while (hasMoreChanges && sinceState != null) {
|
if (changesResponse.created?.isNotEmpty == true) {
|
||||||
final changesResponse = await _threadDataSource.getChanges(
|
return _validateMaximumNewEmailsRetrieved(changesResponse.created!);
|
||||||
session,
|
|
||||||
accountId,
|
|
||||||
sinceState,
|
|
||||||
propertiesCreated: Properties({EmailProperty.id}));
|
|
||||||
|
|
||||||
hasMoreChanges = changesResponse.hasMoreChanges;
|
|
||||||
sinceState = changesResponse.newStateChanges;
|
|
||||||
|
|
||||||
if (emailChangeResponse != null) {
|
|
||||||
emailChangeResponse.union(changesResponse);
|
|
||||||
} else {
|
|
||||||
emailChangeResponse = changesResponse;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (emailChangeResponse?.created?.isNotEmpty == true) {
|
|
||||||
return emailChangeResponse!.created!.listEmailIds;
|
|
||||||
} else {
|
} else {
|
||||||
throw NotFoundNewReceiveEmailException();
|
throw NotFoundNewReceiveEmailException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<EmailId> _validateMaximumNewEmailsRetrieved(List<Email> listEmails) {
|
||||||
|
listEmails.sortBy(EmailComparator(EmailComparatorProperty.receivedAt));
|
||||||
|
if (listEmails.length > FcmConstants.MAX_NUMBER_NEW_EMAILS_RETRIEVED) {
|
||||||
|
final newListEmails = listEmails.sublist(0, FcmConstants.MAX_NUMBER_NEW_EMAILS_RETRIEVED);
|
||||||
|
return newListEmails.listEmailIds;
|
||||||
|
} else {
|
||||||
|
return listEmails.listEmailIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> updateFirebaseRegistrationToken(UpdateTokenExpiredTimeRequest expiredTimeRequest) {
|
Future<void> updateFirebaseRegistrationToken(UpdateTokenExpiredTimeRequest expiredTimeRequest) {
|
||||||
return _fcmDatasource[DataSourceType.network]!.updateFirebaseRegistrationToken(expiredTimeRequest);
|
return _fcmDatasource[DataSourceType.network]!.updateFirebaseRegistrationToken(expiredTimeRequest);
|
||||||
|
|||||||
@@ -12,4 +12,6 @@ class FcmConstants {
|
|||||||
];
|
];
|
||||||
|
|
||||||
static const String firebaseRegistrationExpiredTimeProperty = 'expires';
|
static const String firebaseRegistrationExpiredTimeProperty = 'expires';
|
||||||
|
|
||||||
|
static const int MAX_NUMBER_NEW_EMAILS_RETRIEVED = 5;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user