TF-2302 Fix move email to mailbox
(cherry picked from commit 639cba6bf9f5631fd36d0f1a65459beb5803a118)
This commit is contained in:
@@ -365,20 +365,14 @@ class EmailAPI with HandleSetErrorMixin {
|
|||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
MoveToMailboxRequest moveRequest
|
MoveToMailboxRequest moveRequest
|
||||||
) async {
|
) async {
|
||||||
requireCapability(
|
final coreCapability = session.getCapabilityProperties<CoreCapability>(
|
||||||
moveRequest.session,
|
|
||||||
accountId,
|
|
||||||
[CapabilityIdentifier.jmapCore, CapabilityIdentifier.jmapMail]
|
|
||||||
);
|
|
||||||
|
|
||||||
final coreCapability = moveRequest.session.getCapabilityProperties<CoreCapability>(
|
|
||||||
accountId,
|
accountId,
|
||||||
CapabilityIdentifier.jmapCore
|
CapabilityIdentifier.jmapCore
|
||||||
);
|
);
|
||||||
final maxMethodCount = coreCapability.maxCallsInRequest?.value.toInt() ?? CapabilityIdentifierExtension.defaultMaxCallsInRequest;
|
int maxMethodCount = coreCapability?.maxCallsInRequest?.value.toInt() ?? CapabilityIdentifierExtension.defaultMaxCallsInRequest;
|
||||||
|
log('EmailAPI::moveToMailbox:maxMethodCount: $maxMethodCount');
|
||||||
var start = 0;
|
int start = 0;
|
||||||
var end = 0;
|
int end = 0;
|
||||||
|
|
||||||
final List<EmailId> listEmailIdResult = List.empty(growable: true);
|
final List<EmailId> listEmailIdResult = List.empty(growable: true);
|
||||||
final listCurrentMailboxesEntries = moveRequest.currentMailboxes.entries.toList();
|
final listCurrentMailboxesEntries = moveRequest.currentMailboxes.entries.toList();
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
|
|
||||||
import 'package:equatable/equatable.dart';
|
import 'package:equatable/equatable.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/session/session.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/email/email_action_type.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
|
import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
|
||||||
|
|
||||||
class MoveToMailboxRequest with EquatableMixin {
|
class MoveToMailboxRequest with EquatableMixin {
|
||||||
@@ -13,13 +12,11 @@ class MoveToMailboxRequest with EquatableMixin {
|
|||||||
final MoveAction moveAction;
|
final MoveAction moveAction;
|
||||||
final EmailActionType emailActionType;
|
final EmailActionType emailActionType;
|
||||||
final String? destinationPath;
|
final String? destinationPath;
|
||||||
final Session session;
|
|
||||||
|
|
||||||
MoveToMailboxRequest(
|
MoveToMailboxRequest(
|
||||||
this.currentMailboxes,
|
this.currentMailboxes,
|
||||||
this.destinationMailboxId,
|
this.destinationMailboxId,
|
||||||
this.moveAction,
|
this.moveAction,
|
||||||
this.session,
|
|
||||||
this.emailActionType,{
|
this.emailActionType,{
|
||||||
this.destinationPath,
|
this.destinationPath,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -788,7 +788,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
{currentMailbox.id: [emailSelected.id!]},
|
{currentMailbox.id: [emailSelected.id!]},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
|
||||||
EmailActionType.moveToTrash));
|
EmailActionType.moveToTrash));
|
||||||
} else if (destinationMailbox.isSpam) {
|
} else if (destinationMailbox.isSpam) {
|
||||||
_moveToSpamAction(
|
_moveToSpamAction(
|
||||||
@@ -799,7 +798,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
{currentMailbox.id: [emailSelected.id!]},
|
{currentMailbox.id: [emailSelected.id!]},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
|
||||||
EmailActionType.moveToSpam));
|
EmailActionType.moveToSpam));
|
||||||
} else {
|
} else {
|
||||||
_moveToMailbox(
|
_moveToMailbox(
|
||||||
@@ -810,7 +808,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
{currentMailbox.id: [emailSelected.id!]},
|
{currentMailbox.id: [emailSelected.id!]},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
|
||||||
EmailActionType.moveToMailbox,
|
EmailActionType.moveToMailbox,
|
||||||
destinationPath: destinationMailbox.mailboxPath));
|
destinationPath: destinationMailbox.mailboxPath));
|
||||||
}
|
}
|
||||||
@@ -833,7 +830,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
{success.destinationMailboxId: [success.emailId]},
|
{success.destinationMailboxId: [success.emailId]},
|
||||||
success.currentMailboxId,
|
success.currentMailboxId,
|
||||||
MoveAction.undo,
|
MoveAction.undo,
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
success.emailActionType));
|
success.emailActionType));
|
||||||
},
|
},
|
||||||
leadingSVGIcon: imagePaths.icFolderMailbox,
|
leadingSVGIcon: imagePaths.icFolderMailbox,
|
||||||
@@ -868,7 +864,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
{currentMailbox.id: [email.id!]},
|
{currentMailbox.id: [email.id!]},
|
||||||
trashMailboxId,
|
trashMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToTrash)
|
EmailActionType.moveToTrash)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -899,7 +894,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
{currentMailbox.id: [email.id!]},
|
{currentMailbox.id: [email.id!]},
|
||||||
spamMailboxId,
|
spamMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToSpam)
|
EmailActionType.moveToSpam)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -920,7 +914,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
{spamMailboxId: [email.id!]},
|
{spamMailboxId: [email.id!]},
|
||||||
inboxMailboxId,
|
inboxMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.unSpam)
|
EmailActionType.unSpam)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -187,10 +187,8 @@ class MailboxAPI with HandleSetErrorMixin {
|
|||||||
|
|
||||||
Future<Map<Id, SetError>> deleteMultipleMailbox(Session session, AccountId accountId, List<MailboxId> mailboxIds) async {
|
Future<Map<Id, SetError>> deleteMultipleMailbox(Session session, AccountId accountId, List<MailboxId> mailboxIds) async {
|
||||||
final coreCapability = session.getCapabilityProperties<CoreCapability>(
|
final coreCapability = session.getCapabilityProperties<CoreCapability>(
|
||||||
accountId,
|
accountId, CapabilityIdentifier.jmapCore);
|
||||||
CapabilityIdentifier.jmapCore
|
final maxMethodCount = coreCapability?.maxCallsInRequest?.value.toInt() ?? 0;
|
||||||
);
|
|
||||||
final maxMethodCount = coreCapability.maxCallsInRequest?.value.toInt() ?? CapabilityIdentifierExtension.defaultMaxCallsInRequest;
|
|
||||||
|
|
||||||
final Map<Id,SetError> finalDeletedMailboxErrors = {};
|
final Map<Id,SetError> finalDeletedMailboxErrors = {};
|
||||||
var start = 0;
|
var start = 0;
|
||||||
|
|||||||
+1
-12
@@ -683,7 +683,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
{success.destinationMailboxId: [success.emailId]},
|
{success.destinationMailboxId: [success.emailId]},
|
||||||
success.currentMailboxId,
|
success.currentMailboxId,
|
||||||
MoveAction.undo,
|
MoveAction.undo,
|
||||||
sessionCurrent!,
|
|
||||||
success.emailActionType
|
success.emailActionType
|
||||||
));
|
));
|
||||||
},
|
},
|
||||||
@@ -909,7 +908,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
{currentMailbox.id: listEmailIds},
|
{currentMailbox.id: listEmailIds},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
|
||||||
EmailActionType.moveToTrash));
|
EmailActionType.moveToTrash));
|
||||||
} else if (destinationMailbox.isSpam) {
|
} else if (destinationMailbox.isSpam) {
|
||||||
_moveSelectedEmailMultipleToMailboxAction(
|
_moveSelectedEmailMultipleToMailboxAction(
|
||||||
@@ -919,7 +917,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
{currentMailbox.id: listEmailIds},
|
{currentMailbox.id: listEmailIds},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
|
||||||
EmailActionType.moveToSpam));
|
EmailActionType.moveToSpam));
|
||||||
} else {
|
} else {
|
||||||
_moveSelectedEmailMultipleToMailboxAction(
|
_moveSelectedEmailMultipleToMailboxAction(
|
||||||
@@ -929,7 +926,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
{currentMailbox.id: listEmailIds},
|
{currentMailbox.id: listEmailIds},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
|
||||||
EmailActionType.moveToMailbox,
|
EmailActionType.moveToMailbox,
|
||||||
destinationPath: destinationMailbox.mailboxPath));
|
destinationPath: destinationMailbox.mailboxPath));
|
||||||
}
|
}
|
||||||
@@ -973,7 +969,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
mapListEmails,
|
mapListEmails,
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
sessionCurrent!,
|
|
||||||
EmailActionType.moveToTrash,
|
EmailActionType.moveToTrash,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -985,7 +980,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
mapListEmails,
|
mapListEmails,
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
sessionCurrent!,
|
|
||||||
EmailActionType.moveToSpam,
|
EmailActionType.moveToSpam,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -997,7 +991,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
mapListEmails,
|
mapListEmails,
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
sessionCurrent!,
|
|
||||||
EmailActionType.moveToMailbox,
|
EmailActionType.moveToMailbox,
|
||||||
destinationPath: destinationMailbox.mailboxPath,
|
destinationPath: destinationMailbox.mailboxPath,
|
||||||
),
|
),
|
||||||
@@ -1057,7 +1050,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
{newCurrentMailboxId: movedEmailIds},
|
{newCurrentMailboxId: movedEmailIds},
|
||||||
newDestinationMailboxId,
|
newDestinationMailboxId,
|
||||||
MoveAction.undo,
|
MoveAction.undo,
|
||||||
sessionCurrent!,
|
|
||||||
emailActionType!,
|
emailActionType!,
|
||||||
destinationPath: destinationPath
|
destinationPath: destinationPath
|
||||||
));
|
));
|
||||||
@@ -1091,7 +1083,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
{mailboxCurrent.id: listEmails.listEmailIds},
|
{mailboxCurrent.id: listEmails.listEmailIds},
|
||||||
trashMailboxId,
|
trashMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
sessionCurrent!,
|
|
||||||
EmailActionType.moveToTrash)
|
EmailActionType.moveToTrash)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -1107,7 +1098,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
{mailboxCurrent.id: listEmail.listEmailIds},
|
{mailboxCurrent.id: listEmail.listEmailIds},
|
||||||
spamMailboxId,
|
spamMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
sessionCurrent!,
|
|
||||||
EmailActionType.moveToSpam)
|
EmailActionType.moveToSpam)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -1124,7 +1114,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
{spamMailboxId: listEmail.listEmailIds},
|
{spamMailboxId: listEmail.listEmailIds},
|
||||||
inboxMailboxId,
|
inboxMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
sessionCurrent!,
|
|
||||||
EmailActionType.unSpam)
|
EmailActionType.unSpam)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -1306,7 +1295,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
try {
|
try {
|
||||||
if (sessionCurrent != null && accountId.value != null) {
|
if (sessionCurrent != null && accountId.value != null) {
|
||||||
final mailCapability = sessionCurrent!.getCapabilityProperties<MailCapability>(accountId.value!, CapabilityIdentifier.jmapMail);
|
final mailCapability = sessionCurrent!.getCapabilityProperties<MailCapability>(accountId.value!, CapabilityIdentifier.jmapMail);
|
||||||
final maxSizeAttachmentsPerEmail = mailCapability.maxSizeAttachmentsPerEmail;
|
final maxSizeAttachmentsPerEmail = mailCapability?.maxSizeAttachmentsPerEmail;
|
||||||
log('MailboxDashBoardController::maxSizeAttachmentsPerEmail(): $maxSizeAttachmentsPerEmail');
|
log('MailboxDashBoardController::maxSizeAttachmentsPerEmail(): $maxSizeAttachmentsPerEmail');
|
||||||
return maxSizeAttachmentsPerEmail;
|
return maxSizeAttachmentsPerEmail;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,7 +60,6 @@ mixin EmailActionController {
|
|||||||
{mailboxContain.id: email.id != null ? [email.id!] : []},
|
{mailboxContain.id: email.id != null ? [email.id!] : []},
|
||||||
trashMailboxId,
|
trashMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToTrash)
|
EmailActionType.moveToTrash)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -83,7 +82,6 @@ mixin EmailActionController {
|
|||||||
{mailboxContain.id: email.id != null ? [email.id!] : []},
|
{mailboxContain.id: email.id != null ? [email.id!] : []},
|
||||||
spamMailboxId,
|
spamMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToSpam)
|
EmailActionType.moveToSpam)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -103,7 +101,6 @@ mixin EmailActionController {
|
|||||||
{spamMailboxId: email.id != null ? [email.id!] : []},
|
{spamMailboxId: email.id != null ? [email.id!] : []},
|
||||||
inboxMailboxId,
|
inboxMailboxId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.unSpam)
|
EmailActionType.unSpam)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -164,7 +161,6 @@ mixin EmailActionController {
|
|||||||
{currentMailbox.id: emailSelected.id != null ? [emailSelected.id!] : []},
|
{currentMailbox.id: emailSelected.id != null ? [emailSelected.id!] : []},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
|
||||||
EmailActionType.moveToTrash));
|
EmailActionType.moveToTrash));
|
||||||
} else if (destinationMailbox.isSpam) {
|
} else if (destinationMailbox.isSpam) {
|
||||||
moveToSpamAction(
|
moveToSpamAction(
|
||||||
@@ -174,7 +170,6 @@ mixin EmailActionController {
|
|||||||
{currentMailbox.id: emailSelected.id != null ? [emailSelected.id!] : []},
|
{currentMailbox.id: emailSelected.id != null ? [emailSelected.id!] : []},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
|
||||||
EmailActionType.moveToSpam));
|
EmailActionType.moveToSpam));
|
||||||
} else {
|
} else {
|
||||||
_moveToMailboxAction(
|
_moveToMailboxAction(
|
||||||
@@ -184,7 +179,6 @@ mixin EmailActionController {
|
|||||||
{currentMailbox.id: emailSelected.id != null ? [emailSelected.id!] : []},
|
{currentMailbox.id: emailSelected.id != null ? [emailSelected.id!] : []},
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
session,
|
|
||||||
EmailActionType.moveToMailbox,
|
EmailActionType.moveToMailbox,
|
||||||
destinationPath: destinationMailbox.mailboxPath));
|
destinationPath: destinationMailbox.mailboxPath));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,15 +35,19 @@ extension SessionExtension on Session {
|
|||||||
return Uri.parse(uploadUri);
|
return Uri.parse(uploadUri);
|
||||||
}
|
}
|
||||||
|
|
||||||
T getCapabilityProperties<T extends CapabilityProperties>(
|
T? getCapabilityProperties<T extends CapabilityProperties>(
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
CapabilityIdentifier identifier
|
CapabilityIdentifier identifier
|
||||||
) {
|
) {
|
||||||
var capability = accounts[accountId]!.accountCapabilities[identifier];
|
var capability = accounts[accountId]?.accountCapabilities[identifier];
|
||||||
if (capability is EmptyCapability) {
|
if (capability == null || capability is EmptyCapability) {
|
||||||
capability = capabilities[identifier] as T;
|
capability = capabilities[identifier];
|
||||||
|
}
|
||||||
|
if (capability is T) {
|
||||||
|
return capability;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
return (capability as T);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JmapAccount get personalAccount {
|
JmapAccount get personalAccount {
|
||||||
|
|||||||
Reference in New Issue
Block a user