TF-1626 Remove id of email when call Email/set method
(cherry picked from commit ce1d27d893fd406aa812d4e4ea9debe1ec265ddb)
This commit is contained in:
@@ -638,11 +638,9 @@ class ComposerController extends BaseController {
|
|||||||
mapKeywords[KeyWordIdentifier.emailSeen] = true;
|
mapKeywords[KeyWordIdentifier.emailSeen] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
final generateEmailId = EmailId(Id(_uuid.v1()));
|
|
||||||
final generatePartId = PartId(_uuid.v1());
|
final generatePartId = PartId(_uuid.v1());
|
||||||
|
|
||||||
return Email(
|
return Email(
|
||||||
generateEmailId,
|
|
||||||
mailboxIds: mailboxIds.isNotEmpty ? mailboxIds : null,
|
mailboxIds: mailboxIds.isNotEmpty ? mailboxIds : null,
|
||||||
from: listFromEmailAddress,
|
from: listFromEmailAddress,
|
||||||
to: listToEmailAddress.toSet(),
|
to: listToEmailAddress.toSet(),
|
||||||
@@ -988,12 +986,16 @@ class ComposerController extends BaseController {
|
|||||||
draftMailboxId: draftMailboxId);
|
draftMailboxId: draftMailboxId);
|
||||||
final oldEmail = arguments.presentationEmail;
|
final oldEmail = arguments.presentationEmail;
|
||||||
|
|
||||||
if (arguments.emailActionType == EmailActionType.edit && oldEmail != null) {
|
if (arguments.emailActionType == EmailActionType.edit && oldEmail != null && oldEmail.id != null) {
|
||||||
mailboxDashBoardController.consumeState(
|
mailboxDashBoardController.consumeState(
|
||||||
_updateEmailDraftsInteractor.execute(accountId, newEmail, oldEmail.id));
|
_updateEmailDraftsInteractor.execute(
|
||||||
|
accountId,
|
||||||
|
newEmail,
|
||||||
|
oldEmail.id!
|
||||||
|
)
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
mailboxDashBoardController.consumeState(
|
mailboxDashBoardController.consumeState(_saveEmailAsDraftsInteractor.execute(accountId, newEmail));
|
||||||
_saveEmailAsDraftsInteractor.execute(accountId, newEmail));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uploadController.clearInlineFileUploaded();
|
uploadController.clearInlineFileUploaded();
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ import 'package:model/email/mark_star_action.dart';
|
|||||||
import 'package:model/email/read_actions.dart';
|
import 'package:model/email/read_actions.dart';
|
||||||
import 'package:model/extensions/email_extension.dart';
|
import 'package:model/extensions/email_extension.dart';
|
||||||
import 'package:model/extensions/keyword_identifier_extension.dart';
|
import 'package:model/extensions/keyword_identifier_extension.dart';
|
||||||
|
import 'package:model/extensions/list_email_extension.dart';
|
||||||
import 'package:model/extensions/list_email_id_extension.dart';
|
import 'package:model/extensions/list_email_id_extension.dart';
|
||||||
import 'package:model/extensions/mailbox_id_extension.dart';
|
import 'package:model/extensions/mailbox_id_extension.dart';
|
||||||
import 'package:model/extensions/session_extension.dart';
|
import 'package:model/extensions/session_extension.dart';
|
||||||
@@ -54,14 +55,16 @@ import 'package:tmail_ui_user/features/email/domain/state/download_attachment_fo
|
|||||||
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
|
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
||||||
import 'package:tmail_ui_user/main/error/capability_validator.dart';
|
import 'package:tmail_ui_user/main/error/capability_validator.dart';
|
||||||
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
class EmailAPI with HandleSetErrorMixin {
|
class EmailAPI with HandleSetErrorMixin {
|
||||||
|
|
||||||
final HttpClient _httpClient;
|
final HttpClient _httpClient;
|
||||||
final DownloadManager _downloadManager;
|
final DownloadManager _downloadManager;
|
||||||
final DioClient _dioClient;
|
final DioClient _dioClient;
|
||||||
|
final Uuid _uuid;
|
||||||
|
|
||||||
EmailAPI(this._httpClient, this._downloadManager, this._dioClient);
|
EmailAPI(this._httpClient, this._downloadManager, this._dioClient, this._uuid);
|
||||||
|
|
||||||
Future<Email> getEmailContent(AccountId accountId, EmailId emailId) async {
|
Future<Email> getEmailContent(AccountId accountId, EmailId emailId) async {
|
||||||
final processingInvocation = ProcessingInvocation();
|
final processingInvocation = ProcessingInvocation();
|
||||||
@@ -129,8 +132,9 @@ class EmailAPI with HandleSetErrorMixin {
|
|||||||
emailNeedsToBeCreated = emailRequest.email;
|
emailNeedsToBeCreated = emailRequest.email;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final idCreateMethod = Id(_uuid.v1());
|
||||||
final setEmailMethod = SetEmailMethod(accountId)
|
final setEmailMethod = SetEmailMethod(accountId)
|
||||||
..addCreate(emailNeedsToBeCreated.id.id, emailNeedsToBeCreated);
|
..addCreate(idCreateMethod, emailNeedsToBeCreated);
|
||||||
|
|
||||||
if (emailRequest.emailIdDestroyed != null) {
|
if (emailRequest.emailIdDestroyed != null) {
|
||||||
setEmailMethod.addDestroy({emailRequest.emailIdDestroyed!.id});
|
setEmailMethod.addDestroy({emailRequest.emailIdDestroyed!.id});
|
||||||
@@ -142,7 +146,7 @@ class EmailAPI with HandleSetErrorMixin {
|
|||||||
emailRequest.submissionCreateId,
|
emailRequest.submissionCreateId,
|
||||||
EmailSubmission(
|
EmailSubmission(
|
||||||
identityId: emailRequest.identity?.id?.id,
|
identityId: emailRequest.identity?.id?.id,
|
||||||
emailId: EmailId(ReferenceId(ReferencePrefix.defaultPrefix, emailNeedsToBeCreated.id.id)),
|
emailId: EmailId(ReferenceId(ReferencePrefix.defaultPrefix, idCreateMethod)),
|
||||||
envelope: Envelope(
|
envelope: Envelope(
|
||||||
Address(emailNeedsToBeCreated.from?.first.email ?? ''),
|
Address(emailNeedsToBeCreated.from?.first.email ?? ''),
|
||||||
emailNeedsToBeCreated.getRecipientEmailAddressList().map((emailAddress) => Address(emailAddress)).toSet()
|
emailNeedsToBeCreated.getRecipientEmailAddressList().map((emailAddress) => Address(emailAddress)).toSet()
|
||||||
@@ -173,7 +177,7 @@ class EmailAPI with HandleSetErrorMixin {
|
|||||||
SetEmailSubmissionResponse.deserialize,
|
SetEmailSubmissionResponse.deserialize,
|
||||||
methodName: setEmailInvocation.methodName);
|
methodName: setEmailInvocation.methodName);
|
||||||
|
|
||||||
final emailCreated = setEmailResponse?.created?[emailNeedsToBeCreated.id.id];
|
final emailCreated = setEmailResponse?.created?[idCreateMethod];
|
||||||
final listEntriesErrors = _handleSetEmailResponse(
|
final listEntriesErrors = _handleSetEmailResponse(
|
||||||
response: setEmailResponse,
|
response: setEmailResponse,
|
||||||
submissionResponse: setEmailSubmissionResponse
|
submissionResponse: setEmailSubmissionResponse
|
||||||
@@ -218,13 +222,11 @@ class EmailAPI with HandleSetErrorMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<List<Email>> markAsRead(AccountId accountId, List<Email> emails, ReadActions readActions) async {
|
Future<List<Email>> markAsRead(AccountId accountId, List<Email> emails, ReadActions readActions) async {
|
||||||
final emailIds = emails.map((email) => email.id).toList();
|
|
||||||
|
|
||||||
final setEmailMethod = SetEmailMethod(accountId)
|
final setEmailMethod = SetEmailMethod(accountId)
|
||||||
..addUpdates(emailIds.generateMapUpdateObjectMarkAsRead(readActions));
|
..addUpdates(emails.listEmailIds.generateMapUpdateObjectMarkAsRead(readActions));
|
||||||
|
|
||||||
final getEmailMethod = GetEmailMethod(accountId)
|
final getEmailMethod = GetEmailMethod(accountId)
|
||||||
..addIds(emailIds.toIds().toSet())
|
..addIds(emails.listEmailIds.toIds().toSet())
|
||||||
..addProperties(Properties({'keywords'}));
|
..addProperties(Properties({'keywords'}));
|
||||||
|
|
||||||
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
||||||
@@ -406,13 +408,11 @@ class EmailAPI with HandleSetErrorMixin {
|
|||||||
|
|
||||||
|
|
||||||
Future<List<Email>> markAsStar(AccountId accountId, List<Email> emails, MarkStarAction markStarAction) async {
|
Future<List<Email>> markAsStar(AccountId accountId, List<Email> emails, MarkStarAction markStarAction) async {
|
||||||
final emailIds = emails.map((email) => email.id).toList();
|
|
||||||
|
|
||||||
final setEmailMethod = SetEmailMethod(accountId)
|
final setEmailMethod = SetEmailMethod(accountId)
|
||||||
..addUpdates(emailIds.generateMapUpdateObjectMarkAsStar(markStarAction));
|
..addUpdates(emails.listEmailIds.generateMapUpdateObjectMarkAsStar(markStarAction));
|
||||||
|
|
||||||
final getEmailMethod = GetEmailMethod(accountId)
|
final getEmailMethod = GetEmailMethod(accountId)
|
||||||
..addIds(emailIds.toIds().toSet())
|
..addIds(emails.listEmailIds.toIds().toSet())
|
||||||
..addProperties(Properties({'keywords'}));
|
..addProperties(Properties({'keywords'}));
|
||||||
|
|
||||||
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
||||||
@@ -438,8 +438,9 @@ class EmailAPI with HandleSetErrorMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<Email> saveEmailAsDrafts(AccountId accountId, Email email) async {
|
Future<Email> saveEmailAsDrafts(AccountId accountId, Email email) async {
|
||||||
|
final idCreateMethod = Id(_uuid.v1());
|
||||||
final setEmailMethod = SetEmailMethod(accountId)
|
final setEmailMethod = SetEmailMethod(accountId)
|
||||||
..addCreate(email.id.id, email);
|
..addCreate(idCreateMethod, email);
|
||||||
|
|
||||||
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
||||||
|
|
||||||
@@ -455,7 +456,7 @@ class EmailAPI with HandleSetErrorMixin {
|
|||||||
SetEmailResponse.deserialize
|
SetEmailResponse.deserialize
|
||||||
);
|
);
|
||||||
|
|
||||||
final emailCreated = setEmailResponse?.created?[email.id.id];
|
final emailCreated = setEmailResponse?.created?[idCreateMethod];
|
||||||
final listEntriesErrors = _handleSetEmailResponse(response: setEmailResponse);
|
final listEntriesErrors = _handleSetEmailResponse(response: setEmailResponse);
|
||||||
final mapErrors = Map.fromEntries(listEntriesErrors);
|
final mapErrors = Map.fromEntries(listEntriesErrors);
|
||||||
|
|
||||||
@@ -491,8 +492,9 @@ class EmailAPI with HandleSetErrorMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<Email> updateEmailDrafts(AccountId accountId, Email newEmail, EmailId oldEmailId) async {
|
Future<Email> updateEmailDrafts(AccountId accountId, Email newEmail, EmailId oldEmailId) async {
|
||||||
|
final idCreateMethod = Id(_uuid.v1());
|
||||||
final setEmailMethod = SetEmailMethod(accountId)
|
final setEmailMethod = SetEmailMethod(accountId)
|
||||||
..addCreate(newEmail.id.id, newEmail)
|
..addCreate(idCreateMethod, newEmail)
|
||||||
..addDestroy({oldEmailId.id});
|
..addDestroy({oldEmailId.id});
|
||||||
|
|
||||||
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
||||||
@@ -509,7 +511,7 @@ class EmailAPI with HandleSetErrorMixin {
|
|||||||
SetEmailResponse.deserialize
|
SetEmailResponse.deserialize
|
||||||
);
|
);
|
||||||
|
|
||||||
final emailUpdated = setEmailResponse?.created?[newEmail.id.id];
|
final emailUpdated = setEmailResponse?.created?[idCreateMethod];
|
||||||
final isEmailDestroyedSuccess = setEmailResponse?.destroyed?.contains(oldEmailId.id) ?? false;
|
final isEmailDestroyedSuccess = setEmailResponse?.destroyed?.contains(oldEmailId.id) ?? false;
|
||||||
final listEntriesErrors = _handleSetEmailResponse(response: setEmailResponse);
|
final listEntriesErrors = _handleSetEmailResponse(response: setEmailResponse);
|
||||||
final mapErrors = Map.fromEntries(listEntriesErrors);
|
final mapErrors = Map.fromEntries(listEntriesErrors);
|
||||||
|
|||||||
@@ -170,9 +170,9 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
_resetToOriginalValue();
|
_resetToOriginalValue();
|
||||||
|
|
||||||
if (isListEmailContainSelectedEmail(selectedEmail)) {
|
if (isListEmailContainSelectedEmail(selectedEmail)) {
|
||||||
_createMultipleEmailViewAsPageView(selectedEmail.id);
|
_createMultipleEmailViewAsPageView(selectedEmail.id!);
|
||||||
} else {
|
} else {
|
||||||
_createSingleEmailView(selectedEmail.id);
|
_createSingleEmailView(selectedEmail.id!);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!selectedEmail.hasRead) {
|
if (!selectedEmail.hasRead) {
|
||||||
@@ -663,21 +663,21 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
) {
|
) {
|
||||||
if (destinationMailbox.isTrash) {
|
if (destinationMailbox.isTrash) {
|
||||||
_moveToTrashAction(context, accountId, MoveToMailboxRequest(
|
_moveToTrashAction(context, accountId, MoveToMailboxRequest(
|
||||||
{currentMailbox.id: [emailSelected.id]},
|
{currentMailbox.id: [emailSelected.id!]},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
session,
|
||||||
EmailActionType.moveToTrash));
|
EmailActionType.moveToTrash));
|
||||||
} else if (destinationMailbox.isSpam) {
|
} else if (destinationMailbox.isSpam) {
|
||||||
_moveToSpamAction(context, accountId, MoveToMailboxRequest(
|
_moveToSpamAction(context, accountId, MoveToMailboxRequest(
|
||||||
{currentMailbox.id: [emailSelected.id]},
|
{currentMailbox.id: [emailSelected.id!]},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
session,
|
||||||
EmailActionType.moveToSpam));
|
EmailActionType.moveToSpam));
|
||||||
} else {
|
} else {
|
||||||
_moveToMailbox(context, accountId, MoveToMailboxRequest(
|
_moveToMailbox(context, accountId, MoveToMailboxRequest(
|
||||||
{currentMailbox.id: [emailSelected.id]},
|
{currentMailbox.id: [emailSelected.id!]},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
session,
|
||||||
@@ -729,7 +729,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
|
|
||||||
if (accountId != null && currentMailbox != null && trashMailboxId != null) {
|
if (accountId != null && currentMailbox != null && trashMailboxId != null) {
|
||||||
_moveToTrashAction(context, accountId, MoveToMailboxRequest(
|
_moveToTrashAction(context, accountId, MoveToMailboxRequest(
|
||||||
{currentMailbox.id: [email.id]},
|
{currentMailbox.id: [email.id!]},
|
||||||
trashMailboxId,
|
trashMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
mailboxDashBoardController.sessionCurrent!,
|
||||||
@@ -750,7 +750,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
|
|
||||||
if (accountId != null && currentMailbox != null && spamMailboxId != null) {
|
if (accountId != null && currentMailbox != null && spamMailboxId != null) {
|
||||||
_moveToSpamAction(context, accountId, MoveToMailboxRequest(
|
_moveToSpamAction(context, accountId, MoveToMailboxRequest(
|
||||||
{currentMailbox.id: [email.id]},
|
{currentMailbox.id: [email.id!]},
|
||||||
spamMailboxId,
|
spamMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
mailboxDashBoardController.sessionCurrent!,
|
||||||
@@ -766,7 +766,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
|
|
||||||
if (accountId != null && spamMailboxId != null && inboxMailboxId != null) {
|
if (accountId != null && spamMailboxId != null && inboxMailboxId != null) {
|
||||||
_moveToSpamAction(context, accountId, MoveToMailboxRequest(
|
_moveToSpamAction(context, accountId, MoveToMailboxRequest(
|
||||||
{spamMailboxId: [email.id]},
|
{spamMailboxId: [email.id!]},
|
||||||
inboxMailboxId,
|
inboxMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
mailboxDashBoardController.sessionCurrent!,
|
||||||
|
|||||||
+12
-13
@@ -235,7 +235,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
final ComposerArguments composerArguments = ComposerArguments(
|
final ComposerArguments composerArguments = ComposerArguments(
|
||||||
emailActionType: EmailActionType.edit,
|
emailActionType: EmailActionType.edit,
|
||||||
presentationEmail: PresentationEmail(
|
presentationEmail: PresentationEmail(
|
||||||
success.composerCache.id,
|
id: success.composerCache.id,
|
||||||
subject: success.composerCache.subject,
|
subject: success.composerCache.subject,
|
||||||
from: success.composerCache.from,
|
from: success.composerCache.from,
|
||||||
to: success.composerCache.to,
|
to: success.composerCache.to,
|
||||||
@@ -519,7 +519,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
dispatchRoute(DashboardRoutes.emailDetailed);
|
dispatchRoute(DashboardRoutes.emailDetailed);
|
||||||
if (BuildUtils.isWeb && presentationEmail.routeWeb != null) {
|
if (BuildUtils.isWeb && presentationEmail.routeWeb != null) {
|
||||||
RouteUtils.updateRouteOnBrowser(
|
RouteUtils.updateRouteOnBrowser(
|
||||||
'Email-${presentationEmail.id.id.value}',
|
'Email-${presentationEmail.id?.id.value ?? ''}',
|
||||||
presentationEmail.routeWeb!
|
presentationEmail.routeWeb!
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -628,15 +628,15 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
|
|
||||||
void _discardEmail(Email email) {
|
void _discardEmail(Email email) {
|
||||||
final currentAccountId = accountId.value;
|
final currentAccountId = accountId.value;
|
||||||
if (currentAccountId != null) {
|
if (currentAccountId != null && email.id != null) {
|
||||||
consumeState(_removeEmailDraftsInteractor.execute(currentAccountId, email.id));
|
consumeState(_removeEmailDraftsInteractor.execute(currentAccountId, email.id!));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void deleteEmailPermanently(PresentationEmail email) {
|
void deleteEmailPermanently(PresentationEmail email) {
|
||||||
final currentAccountId = accountId.value;
|
final currentAccountId = accountId.value;
|
||||||
if (currentAccountId != null) {
|
if (currentAccountId != null && email.id != null) {
|
||||||
consumeState(_deleteEmailPermanentlyInteractor.execute(currentAccountId, email.id));
|
consumeState(_deleteEmailPermanentlyInteractor.execute(currentAccountId, email.id!));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -825,22 +825,21 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
List<PresentationEmail> listEmails,
|
List<PresentationEmail> listEmails,
|
||||||
PresentationMailbox destinationMailbox,
|
PresentationMailbox destinationMailbox,
|
||||||
) {
|
) {
|
||||||
if(searchController.isSearchEmailRunning){
|
if (searchController.isSearchEmailRunning){
|
||||||
final Map<MailboxId,List<EmailId>> mapListEmailSelectedByMailBoxId = {};
|
final Map<MailboxId,List<EmailId>> mapListEmailSelectedByMailBoxId = {};
|
||||||
for (var element in listEmails) {
|
for (var element in listEmails) {
|
||||||
final mailbox = element.findMailboxContain(mapMailboxById);
|
final mailbox = element.findMailboxContain(mapMailboxById);
|
||||||
if(mailbox != null) {
|
if (mailbox != null && element.id != null) {
|
||||||
if(mapListEmailSelectedByMailBoxId.containsKey(mailbox.id)) {
|
if (mapListEmailSelectedByMailBoxId.containsKey(mailbox.id)) {
|
||||||
mapListEmailSelectedByMailBoxId[mailbox.id]?.add(element.id);
|
mapListEmailSelectedByMailBoxId[mailbox.id]?.add(element.id!);
|
||||||
} else {
|
} else {
|
||||||
mapListEmailSelectedByMailBoxId.addAll({mailbox.id: [element.id]});
|
mapListEmailSelectedByMailBoxId.addAll({mailbox.id: [element.id!]});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_handleDragSelectedMultipleEmailToMailboxAction(mapListEmailSelectedByMailBoxId, destinationMailbox);
|
_handleDragSelectedMultipleEmailToMailboxAction(mapListEmailSelectedByMailBoxId, destinationMailbox);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if(selectedMailbox.value != null) {
|
if (selectedMailbox.value != null) {
|
||||||
_handleDragSelectedMultipleEmailToMailboxAction({selectedMailbox.value!.id: listEmails.listEmailIds}, destinationMailbox);
|
_handleDragSelectedMultipleEmailToMailboxAction({selectedMailbox.value!.id: listEmails.listEmailIds}, destinationMailbox);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ class EmailChangeListener extends ChangeListener {
|
|||||||
final notificationPayload = NotificationPayload(emailId: presentationEmail.id);
|
final notificationPayload = NotificationPayload(emailId: presentationEmail.id);
|
||||||
log('EmailChangeListener::_showLocalNotification():notificationPayload: $notificationPayload');
|
log('EmailChangeListener::_showLocalNotification():notificationPayload: $notificationPayload');
|
||||||
LocalNotificationManager.instance.showPushNotification(
|
LocalNotificationManager.instance.showPushNotification(
|
||||||
id: presentationEmail.id.id.value,
|
id: presentationEmail.id?.id.value ?? '',
|
||||||
title: presentationEmail.subject ?? '',
|
title: presentationEmail.subject ?? '',
|
||||||
message: presentationEmail.preview,
|
message: presentationEmail.preview,
|
||||||
emailAddress: presentationEmail.from?.first,
|
emailAddress: presentationEmail.from?.first,
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import 'package:tmail_ui_user/features/thread/data/extensions/email_address_hive
|
|||||||
extension EmailCacheExtension on EmailCache {
|
extension EmailCacheExtension on EmailCache {
|
||||||
Email toEmail() {
|
Email toEmail() {
|
||||||
return Email(
|
return Email(
|
||||||
EmailId(Id(id)),
|
id: EmailId(Id(id)),
|
||||||
keywords: keywords != null
|
keywords: keywords != null
|
||||||
? Map.fromIterables(keywords!.keys.map((value) => KeyWordIdentifier(value)), keywords!.values)
|
? Map.fromIterables(keywords!.keys.map((value) => KeyWordIdentifier(value)), keywords!.values)
|
||||||
: null,
|
: null,
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ extension EmailExtension on Email {
|
|||||||
|
|
||||||
EmailCache toEmailCache() {
|
EmailCache toEmailCache() {
|
||||||
return EmailCache(
|
return EmailCache(
|
||||||
id.id.value,
|
id!.id.value,
|
||||||
keywords: keywords?.toMapString(),
|
keywords: keywords?.toMapString(),
|
||||||
size: size?.value.round(),
|
size: size?.value.round(),
|
||||||
receivedAt: receivedAt?.value,
|
receivedAt: receivedAt?.value,
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import 'package:jmap_dart_client/jmap/mail/email/email_comparator_property.dart'
|
|||||||
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.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:tmail_ui_user/features/email/data/network/email_api.dart';
|
import 'package:tmail_ui_user/features/email/data/network/email_api.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/data/model/empty_trash_folder_arguments.dart';
|
import 'package:tmail_ui_user/features/thread/data/model/empty_trash_folder_arguments.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart';
|
import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart';
|
||||||
@@ -68,11 +69,9 @@ class ThreadIsolateWorker {
|
|||||||
if (newEmailList.isNotEmpty) {
|
if (newEmailList.isNotEmpty) {
|
||||||
lastEmail = newEmailList.last;
|
lastEmail = newEmailList.last;
|
||||||
hasEmails = true;
|
hasEmails = true;
|
||||||
final emailIds = newEmailList.map((email) => email.id).toList();
|
final listEmailIdDeleted = await args.emailAPI.deleteMultipleEmailsPermanently(args.accountId, newEmailList.listEmailIds);
|
||||||
|
|
||||||
final listEmailIdDeleted = await args.emailAPI.deleteMultipleEmailsPermanently(args.accountId, emailIds);
|
if (listEmailIdDeleted.isNotEmpty && listEmailIdDeleted.length == newEmailList.listEmailIds.length) {
|
||||||
|
|
||||||
if (listEmailIdDeleted.isNotEmpty && listEmailIdDeleted.length == emailIds.length) {
|
|
||||||
sendPort.send(listEmailIdDeleted);
|
sendPort.send(listEmailIdDeleted);
|
||||||
}
|
}
|
||||||
emailListCompleted.addAll(listEmailIdDeleted);
|
emailListCompleted.addAll(listEmailIdDeleted);
|
||||||
@@ -117,11 +116,9 @@ class ThreadIsolateWorker {
|
|||||||
if (newEmailList.isNotEmpty) {
|
if (newEmailList.isNotEmpty) {
|
||||||
lastEmail = newEmailList.last;
|
lastEmail = newEmailList.last;
|
||||||
hasEmails = true;
|
hasEmails = true;
|
||||||
final emailIds = newEmailList.map((email) => email.id).toList();
|
final listEmailIdDeleted = await _emailAPI.deleteMultipleEmailsPermanently(accountId, newEmailList.listEmailIds);
|
||||||
|
|
||||||
final listEmailIdDeleted = await _emailAPI.deleteMultipleEmailsPermanently(accountId, emailIds);
|
if (listEmailIdDeleted.isNotEmpty && listEmailIdDeleted.length == newEmailList.listEmailIds.length) {
|
||||||
|
|
||||||
if (listEmailIdDeleted.isNotEmpty && listEmailIdDeleted.length == emailIds.length) {
|
|
||||||
await updateDestroyedEmailCache(listEmailIdDeleted);
|
await updateDestroyedEmailCache(listEmailIdDeleted);
|
||||||
}
|
}
|
||||||
emailListCompleted.addAll(listEmailIdDeleted);
|
emailListCompleted.addAll(listEmailIdDeleted);
|
||||||
|
|||||||
@@ -157,7 +157,9 @@ class ThreadRepositoryImpl extends ThreadRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dartz.Tuple2<Email, Email?> _combineUpdatedWithEmailInCache(Email updatedEmail, List<Email>? emailCacheList) {
|
dartz.Tuple2<Email, Email?> _combineUpdatedWithEmailInCache(Email updatedEmail, List<Email>? emailCacheList) {
|
||||||
final emailOld = emailCacheList?.findEmailById(updatedEmail.id);
|
final emailOld = updatedEmail.id != null
|
||||||
|
? emailCacheList?.findEmailById(updatedEmail.id!)
|
||||||
|
: null;
|
||||||
if (emailOld != null) {
|
if (emailOld != null) {
|
||||||
log('ThreadRepositoryImpl::_combineUpdatedWithEmailInCache(): cache hit');
|
log('ThreadRepositoryImpl::_combineUpdatedWithEmailInCache(): cache hit');
|
||||||
return dartz.Tuple2(updatedEmail, emailOld);
|
return dartz.Tuple2(updatedEmail, emailOld);
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ mixin EmailActionController on ViewAsDialogActionMixin {
|
|||||||
|
|
||||||
if (mailboxContain != null && accountId != null && trashMailboxId != null) {
|
if (mailboxContain != null && accountId != null && trashMailboxId != null) {
|
||||||
_moveToTrashAction(accountId, MoveToMailboxRequest(
|
_moveToTrashAction(accountId, MoveToMailboxRequest(
|
||||||
{mailboxContain.id: [email.id]},
|
{mailboxContain.id: email.id != null ? [email.id!] : []},
|
||||||
trashMailboxId,
|
trashMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
mailboxDashBoardController.sessionCurrent!,
|
||||||
@@ -75,7 +75,7 @@ mixin EmailActionController on ViewAsDialogActionMixin {
|
|||||||
|
|
||||||
if (mailboxContain != null && accountId != null && spamMailboxId != null) {
|
if (mailboxContain != null && accountId != null && spamMailboxId != null) {
|
||||||
moveToSpamAction(accountId, MoveToMailboxRequest(
|
moveToSpamAction(accountId, MoveToMailboxRequest(
|
||||||
{mailboxContain.id: [email.id]},
|
{mailboxContain.id: email.id != null ? [email.id!] : []},
|
||||||
spamMailboxId,
|
spamMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
mailboxDashBoardController.sessionCurrent!,
|
||||||
@@ -91,7 +91,7 @@ mixin EmailActionController on ViewAsDialogActionMixin {
|
|||||||
|
|
||||||
if (inboxMailboxId != null && accountId != null && spamMailboxId != null) {
|
if (inboxMailboxId != null && accountId != null && spamMailboxId != null) {
|
||||||
moveToSpamAction(accountId, MoveToMailboxRequest(
|
moveToSpamAction(accountId, MoveToMailboxRequest(
|
||||||
{spamMailboxId: [email.id]},
|
{spamMailboxId: email.id != null ? [email.id!] : []},
|
||||||
inboxMailboxId,
|
inboxMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
mailboxDashBoardController.sessionCurrent!,
|
||||||
@@ -161,21 +161,21 @@ mixin EmailActionController on ViewAsDialogActionMixin {
|
|||||||
) {
|
) {
|
||||||
if (destinationMailbox.isTrash) {
|
if (destinationMailbox.isTrash) {
|
||||||
moveToSpamAction(accountId, MoveToMailboxRequest(
|
moveToSpamAction(accountId, MoveToMailboxRequest(
|
||||||
{currentMailbox.id: [emailSelected.id]},
|
{currentMailbox.id: emailSelected.id != null ? [emailSelected.id!] : []},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
session,
|
||||||
EmailActionType.moveToTrash));
|
EmailActionType.moveToTrash));
|
||||||
} else if (destinationMailbox.isSpam) {
|
} else if (destinationMailbox.isSpam) {
|
||||||
moveToSpamAction(accountId, MoveToMailboxRequest(
|
moveToSpamAction(accountId, MoveToMailboxRequest(
|
||||||
{currentMailbox.id: [emailSelected.id]},
|
{currentMailbox.id: emailSelected.id != null ? [emailSelected.id!] : []},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
session,
|
||||||
EmailActionType.moveToSpam));
|
EmailActionType.moveToSpam));
|
||||||
} else {
|
} else {
|
||||||
_moveToMailboxAction(accountId, MoveToMailboxRequest(
|
_moveToMailboxAction(accountId, MoveToMailboxRequest(
|
||||||
{currentMailbox.id: [emailSelected.id]},
|
{currentMailbox.id: emailSelected.id != null ? [emailSelected.id!] : []},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
session,
|
||||||
|
|||||||
@@ -887,8 +887,8 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void calculateDragValue(PresentationEmail? currentPresentationEmail) {
|
void calculateDragValue(PresentationEmail? currentPresentationEmail) {
|
||||||
if(currentPresentationEmail != null) {
|
if (currentPresentationEmail != null) {
|
||||||
if(mailboxDashBoardController.listEmailSelected.findEmail(currentPresentationEmail.id) != null){
|
if (currentPresentationEmail.id != null && mailboxDashBoardController.listEmailSelected.findEmail(currentPresentationEmail.id!) != null){
|
||||||
listEmailDrag.clear();
|
listEmailDrag.clear();
|
||||||
listEmailDrag.addAll(mailboxDashBoardController.listEmailSelected);
|
listEmailDrag.addAll(mailboxDashBoardController.listEmailSelected);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import 'package:tmail_ui_user/features/quotas/data/network/quotas_api.dart';
|
|||||||
import 'package:tmail_ui_user/features/session/data/network/session_api.dart';
|
import 'package:tmail_ui_user/features/session/data/network/session_api.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart';
|
import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart';
|
||||||
import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart';
|
import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart';
|
||||||
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
class NetworkBindings extends Bindings {
|
class NetworkBindings extends Bindings {
|
||||||
|
|
||||||
@@ -82,7 +83,9 @@ class NetworkBindings extends Bindings {
|
|||||||
Get.put(EmailAPI(
|
Get.put(EmailAPI(
|
||||||
Get.find<HttpClient>(),
|
Get.find<HttpClient>(),
|
||||||
Get.find<DownloadManager>(),
|
Get.find<DownloadManager>(),
|
||||||
Get.find<DioClient>()));
|
Get.find<DioClient>(),
|
||||||
|
Get.find<Uuid>(),
|
||||||
|
));
|
||||||
Get.put(RuleFilterAPI(Get.find<HttpClient>()));
|
Get.put(RuleFilterAPI(Get.find<HttpClient>()));
|
||||||
Get.put(VacationAPI(Get.find<HttpClient>()));
|
Get.put(VacationAPI(Get.find<HttpClient>()));
|
||||||
Get.put(ContactAPI(Get.find<HttpClient>()));
|
Get.put(ContactAPI(Get.find<HttpClient>()));
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_isolate_work
|
|||||||
import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart';
|
import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/data/network/thread_isolate_worker.dart';
|
import 'package:tmail_ui_user/features/thread/data/network/thread_isolate_worker.dart';
|
||||||
import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart';
|
import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart';
|
||||||
|
import 'package:uuid/uuid.dart';
|
||||||
import 'package:worker_manager/worker_manager.dart';
|
import 'package:worker_manager/worker_manager.dart';
|
||||||
|
|
||||||
class NetworkIsolateBindings extends Bindings {
|
class NetworkIsolateBindings extends Bindings {
|
||||||
@@ -51,7 +52,9 @@ class NetworkIsolateBindings extends Bindings {
|
|||||||
Get.put(EmailAPI(
|
Get.put(EmailAPI(
|
||||||
httpClient,
|
httpClient,
|
||||||
Get.find<DownloadManager>(tag: BindingTag.isolateTag),
|
Get.find<DownloadManager>(tag: BindingTag.isolateTag),
|
||||||
Get.find<DioClient>(tag: BindingTag.isolateTag)), tag: BindingTag.isolateTag);
|
Get.find<DioClient>(tag: BindingTag.isolateTag),
|
||||||
|
Get.find<Uuid>()
|
||||||
|
), tag: BindingTag.isolateTag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _bindingIsolateWorker() {
|
void _bindingIsolateWorker() {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import 'package:model/mailbox/select_mode.dart';
|
|||||||
|
|
||||||
class PresentationEmail with EquatableMixin {
|
class PresentationEmail with EquatableMixin {
|
||||||
|
|
||||||
final EmailId id;
|
final EmailId? id;
|
||||||
final Map<KeyWordIdentifier, bool>? keywords;
|
final Map<KeyWordIdentifier, bool>? keywords;
|
||||||
final UnsignedInt? size;
|
final UnsignedInt? size;
|
||||||
final UTCDate? receivedAt;
|
final UTCDate? receivedAt;
|
||||||
@@ -32,28 +32,26 @@ class PresentationEmail with EquatableMixin {
|
|||||||
final Uri? routeWeb;
|
final Uri? routeWeb;
|
||||||
final PresentationMailbox? mailboxContain;
|
final PresentationMailbox? mailboxContain;
|
||||||
|
|
||||||
PresentationEmail(
|
PresentationEmail({
|
||||||
this.id,
|
this.id,
|
||||||
{
|
this.keywords,
|
||||||
this.keywords,
|
this.size,
|
||||||
this.size,
|
this.receivedAt,
|
||||||
this.receivedAt,
|
this.hasAttachment,
|
||||||
this.hasAttachment,
|
this.preview,
|
||||||
this.preview,
|
this.subject,
|
||||||
this.subject,
|
this.sentAt,
|
||||||
this.sentAt,
|
this.from,
|
||||||
this.from,
|
this.to,
|
||||||
this.to,
|
this.cc,
|
||||||
this.cc,
|
this.bcc,
|
||||||
this.bcc,
|
this.replyTo,
|
||||||
this.replyTo,
|
this.mailboxIds,
|
||||||
this.mailboxIds,
|
this.mailboxNames,
|
||||||
this.mailboxNames,
|
this.selectMode = SelectMode.INACTIVE,
|
||||||
this.selectMode = SelectMode.INACTIVE,
|
this.routeWeb,
|
||||||
this.routeWeb,
|
this.mailboxContain
|
||||||
this.mailboxContain
|
});
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
String getSenderName() {
|
String getSenderName() {
|
||||||
if (from?.isNotEmpty == true) {
|
if (from?.isNotEmpty == true) {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ extension EmailExtension on Email {
|
|||||||
|
|
||||||
Email updatedEmail({Map<KeyWordIdentifier, bool>? newKeywords, Map<MailboxId, bool>? newMailboxIds}) {
|
Email updatedEmail({Map<KeyWordIdentifier, bool>? newKeywords, Map<MailboxId, bool>? newMailboxIds}) {
|
||||||
return Email(
|
return Email(
|
||||||
id,
|
id: id,
|
||||||
keywords: newKeywords ?? keywords,
|
keywords: newKeywords ?? keywords,
|
||||||
size: size,
|
size: size,
|
||||||
receivedAt: receivedAt,
|
receivedAt: receivedAt,
|
||||||
@@ -57,7 +57,7 @@ extension EmailExtension on Email {
|
|||||||
|
|
||||||
PresentationEmail toPresentationEmail({SelectMode selectMode = SelectMode.INACTIVE}) {
|
PresentationEmail toPresentationEmail({SelectMode selectMode = SelectMode.INACTIVE}) {
|
||||||
return PresentationEmail(
|
return PresentationEmail(
|
||||||
id,
|
id: id,
|
||||||
keywords: keywords,
|
keywords: keywords,
|
||||||
size: size,
|
size: size,
|
||||||
receivedAt: receivedAt,
|
receivedAt: receivedAt,
|
||||||
@@ -77,7 +77,7 @@ extension EmailExtension on Email {
|
|||||||
|
|
||||||
Email combineEmail(Email newEmail, Properties updatedProperties) {
|
Email combineEmail(Email newEmail, Properties updatedProperties) {
|
||||||
return Email(
|
return Email(
|
||||||
newEmail.id,
|
id: newEmail.id,
|
||||||
keywords: updatedProperties.contain(EmailProperty.keywords) ? newEmail.keywords : keywords,
|
keywords: updatedProperties.contain(EmailProperty.keywords) ? newEmail.keywords : keywords,
|
||||||
size: updatedProperties.contain(EmailProperty.size) ? newEmail.size : size,
|
size: updatedProperties.contain(EmailProperty.size) ? newEmail.size : size,
|
||||||
receivedAt: updatedProperties.contain(EmailProperty.receivedAt) ? newEmail.receivedAt : receivedAt,
|
receivedAt: updatedProperties.contain(EmailProperty.receivedAt) ? newEmail.receivedAt : receivedAt,
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
|
|
||||||
|
import 'package:collection/collection.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/core/sort/comparator.dart';
|
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email_comparator_property.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email_comparator_property.dart';
|
||||||
@@ -8,6 +9,8 @@ import 'package:jmap_dart_client/jmap/core/extensions/unsigned_int_extension.dar
|
|||||||
|
|
||||||
extension ListEmailExtension on List<Email> {
|
extension ListEmailExtension on List<Email> {
|
||||||
|
|
||||||
|
List<EmailId> get listEmailIds => map((email) => email.id).whereNotNull().toList();
|
||||||
|
|
||||||
Email? findEmailById(EmailId emailId) {
|
Email? findEmailById(EmailId emailId) {
|
||||||
try {
|
try {
|
||||||
return firstWhere((email) => email.id == emailId);
|
return firstWhere((email) => email.id == emailId);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
|
|
||||||
|
import 'package:collection/collection.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/mailbox/mailbox.dart';
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
@@ -18,7 +19,7 @@ extension ListPresentationEmailExtension on List<PresentationEmail> {
|
|||||||
return where((email) => email.selectMode == SelectMode.ACTIVE).toList();
|
return where((email) => email.selectMode == SelectMode.ACTIVE).toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
List<EmailId> get listEmailIds => map((email) => email.id).toList();
|
List<EmailId> get listEmailIds => map((email) => email.id).whereNotNull().toList();
|
||||||
|
|
||||||
bool isAllCanDeletePermanently(Map<MailboxId, PresentationMailbox> mapMailbox) {
|
bool isAllCanDeletePermanently(Map<MailboxId, PresentationMailbox> mapMailbox) {
|
||||||
final listMailboxContain = map((email) => email.findMailboxContain(mapMailbox))
|
final listMailboxContain = map((email) => email.findMailboxContain(mapMailbox))
|
||||||
@@ -88,9 +89,13 @@ extension ListPresentationEmailExtension on List<PresentationEmail> {
|
|||||||
|
|
||||||
List<PresentationEmail> combine(List<PresentationEmail> listEmailBefore) {
|
List<PresentationEmail> combine(List<PresentationEmail> listEmailBefore) {
|
||||||
return map((presentationEmail) {
|
return map((presentationEmail) {
|
||||||
final emailBefore = listEmailBefore.findEmail(presentationEmail.id);
|
if (presentationEmail.id != null) {
|
||||||
if (emailBefore != null) {
|
final emailBefore = listEmailBefore.findEmail(presentationEmail.id!);
|
||||||
return presentationEmail.toSelectedEmail(selectMode: emailBefore.selectMode);
|
if (emailBefore != null) {
|
||||||
|
return presentationEmail.toSelectedEmail(selectMode: emailBefore.selectMode);
|
||||||
|
} else {
|
||||||
|
return presentationEmail;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return presentationEmail;
|
return presentationEmail;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ extension PresentationEmailExtension on PresentationEmail {
|
|||||||
|
|
||||||
PresentationEmail toggleSelect() {
|
PresentationEmail toggleSelect() {
|
||||||
return PresentationEmail(
|
return PresentationEmail(
|
||||||
this.id,
|
id: this.id,
|
||||||
keywords: keywords,
|
keywords: keywords,
|
||||||
size: size,
|
size: size,
|
||||||
receivedAt: receivedAt,
|
receivedAt: receivedAt,
|
||||||
@@ -58,7 +58,7 @@ extension PresentationEmailExtension on PresentationEmail {
|
|||||||
|
|
||||||
PresentationEmail toSelectedEmail({required SelectMode selectMode}) {
|
PresentationEmail toSelectedEmail({required SelectMode selectMode}) {
|
||||||
return PresentationEmail(
|
return PresentationEmail(
|
||||||
this.id,
|
id: this.id,
|
||||||
keywords: keywords,
|
keywords: keywords,
|
||||||
size: size,
|
size: size,
|
||||||
receivedAt: receivedAt,
|
receivedAt: receivedAt,
|
||||||
@@ -81,7 +81,7 @@ extension PresentationEmailExtension on PresentationEmail {
|
|||||||
|
|
||||||
Email toEmail() {
|
Email toEmail() {
|
||||||
return Email(
|
return Email(
|
||||||
this.id,
|
id: this.id,
|
||||||
keywords: keywords,
|
keywords: keywords,
|
||||||
size: size,
|
size: size,
|
||||||
receivedAt: receivedAt,
|
receivedAt: receivedAt,
|
||||||
@@ -141,7 +141,7 @@ extension PresentationEmailExtension on PresentationEmail {
|
|||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
return PresentationEmail(
|
return PresentationEmail(
|
||||||
this.id,
|
id: this.id,
|
||||||
keywords: keywords,
|
keywords: keywords,
|
||||||
size: size,
|
size: size,
|
||||||
receivedAt: receivedAt,
|
receivedAt: receivedAt,
|
||||||
@@ -177,7 +177,7 @@ extension PresentationEmailExtension on PresentationEmail {
|
|||||||
|
|
||||||
PresentationEmail withRouteWeb(Uri routeWeb) {
|
PresentationEmail withRouteWeb(Uri routeWeb) {
|
||||||
return PresentationEmail(
|
return PresentationEmail(
|
||||||
this.id,
|
id: this.id,
|
||||||
keywords: keywords,
|
keywords: keywords,
|
||||||
size: size,
|
size: size,
|
||||||
receivedAt: receivedAt,
|
receivedAt: receivedAt,
|
||||||
@@ -200,7 +200,7 @@ extension PresentationEmailExtension on PresentationEmail {
|
|||||||
|
|
||||||
PresentationEmail updateKeywords(Map<KeyWordIdentifier, bool>? newKeywords) {
|
PresentationEmail updateKeywords(Map<KeyWordIdentifier, bool>? newKeywords) {
|
||||||
return PresentationEmail(
|
return PresentationEmail(
|
||||||
this.id,
|
id: this.id,
|
||||||
keywords: newKeywords,
|
keywords: newKeywords,
|
||||||
size: size,
|
size: size,
|
||||||
receivedAt: receivedAt,
|
receivedAt: receivedAt,
|
||||||
@@ -223,7 +223,7 @@ extension PresentationEmailExtension on PresentationEmail {
|
|||||||
|
|
||||||
PresentationEmail syncPresentationEmail({PresentationMailbox? mailboxContain, Uri? routeWeb}) {
|
PresentationEmail syncPresentationEmail({PresentationMailbox? mailboxContain, Uri? routeWeb}) {
|
||||||
return PresentationEmail(
|
return PresentationEmail(
|
||||||
this.id,
|
id: this.id,
|
||||||
keywords: keywords,
|
keywords: keywords,
|
||||||
size: size,
|
size: size,
|
||||||
receivedAt: receivedAt,
|
receivedAt: receivedAt,
|
||||||
|
|||||||
Vendored
+5
-5
@@ -8,7 +8,7 @@ import 'mailbox_fixtures.dart';
|
|||||||
|
|
||||||
class EmailFixtures {
|
class EmailFixtures {
|
||||||
static final email1 = Email(
|
static final email1 = Email(
|
||||||
EmailId(Id("382312d0-fa5c-11eb-b647-2fef1ee78d9e")),
|
id: EmailId(Id("382312d0-fa5c-11eb-b647-2fef1ee78d9e")),
|
||||||
preview: "Dear QA,I attached image here",
|
preview: "Dear QA,I attached image here",
|
||||||
hasAttachment: false,
|
hasAttachment: false,
|
||||||
subject: "test inline image",
|
subject: "test inline image",
|
||||||
@@ -21,7 +21,7 @@ class EmailFixtures {
|
|||||||
);
|
);
|
||||||
|
|
||||||
static final email2 = Email(
|
static final email2 = Email(
|
||||||
EmailId(Id("bc8a5320-fa58-11eb-b647-2fef1ee78d9e")),
|
id: EmailId(Id("bc8a5320-fa58-11eb-b647-2fef1ee78d9e")),
|
||||||
preview: "This event is about to begin Noti check TimeFriday 23 October 2020 12:00 - 12:30 Europe/Paris (See in Calendar)Location1 thai ha (See in Map)Attendees - User A <usera@qa.open-paas.org> (Organizer) - Lê Nguyễn <userb@qa.open-paas.org> - User C <userc@qa.ope",
|
preview: "This event is about to begin Noti check TimeFriday 23 October 2020 12:00 - 12:30 Europe/Paris (See in Calendar)Location1 thai ha (See in Map)Attendees - User A <usera@qa.open-paas.org> (Organizer) - Lê Nguyễn <userb@qa.open-paas.org> - User C <userc@qa.ope",
|
||||||
hasAttachment: false,
|
hasAttachment: false,
|
||||||
subject: "Notification: Noti check",
|
subject: "Notification: Noti check",
|
||||||
@@ -33,7 +33,7 @@ class EmailFixtures {
|
|||||||
);
|
);
|
||||||
|
|
||||||
static final email3 = Email(
|
static final email3 = Email(
|
||||||
EmailId(Id("ba7e0860-fa58-11eb-b647-2fef1ee78d9e")),
|
id: EmailId(Id("ba7e0860-fa58-11eb-b647-2fef1ee78d9e")),
|
||||||
preview: "This event is about to begin Recurrencr TimeWednesday 26 August 2020 05:30 - 06:30 Europe/Paris (See in Calendar)Location1 thai ha (See in Map)Attendees - userb@qa.open-paas.org <userb@qa.open-paas.org> (Organizer) - User A <usera@qa.open-paas.org> Resourc",
|
preview: "This event is about to begin Recurrencr TimeWednesday 26 August 2020 05:30 - 06:30 Europe/Paris (See in Calendar)Location1 thai ha (See in Map)Attendees - userb@qa.open-paas.org <userb@qa.open-paas.org> (Organizer) - User A <usera@qa.open-paas.org> Resourc",
|
||||||
hasAttachment: false,
|
hasAttachment: false,
|
||||||
subject: "Notification: Recurrencr",
|
subject: "Notification: Recurrencr",
|
||||||
@@ -46,7 +46,7 @@ class EmailFixtures {
|
|||||||
);
|
);
|
||||||
|
|
||||||
static final email4 = Email(
|
static final email4 = Email(
|
||||||
EmailId(Id("d9b3b880-fa6f-11eb-b647-2fef1ee78d9e")),
|
id: EmailId(Id("d9b3b880-fa6f-11eb-b647-2fef1ee78d9e")),
|
||||||
preview: "alo -- desktop signature",
|
preview: "alo -- desktop signature",
|
||||||
hasAttachment: true,
|
hasAttachment: true,
|
||||||
subject: "test attachment",
|
subject: "test attachment",
|
||||||
@@ -59,7 +59,7 @@ class EmailFixtures {
|
|||||||
);
|
);
|
||||||
|
|
||||||
static final email5 = Email(
|
static final email5 = Email(
|
||||||
EmailId(Id("637f1ef0-fa5d-11eb-b647-2fef1ee78d9e")),
|
id: EmailId(Id("637f1ef0-fa5d-11eb-b647-2fef1ee78d9e")),
|
||||||
preview: "Dear, test inline Thanks and BRs-- desktop signature",
|
preview: "Dear, test inline Thanks and BRs-- desktop signature",
|
||||||
hasAttachment: false,
|
hasAttachment: false,
|
||||||
subject: "test inline image",
|
subject: "test inline image",
|
||||||
|
|||||||
Reference in New Issue
Block a user