Adding functionality for mails to be unread when moved to spam.
Rebasing (cherry picked from commit 4a907520bc0b53ff42cb7d6cde40771a649629f5)
This commit is contained in:
@@ -38,6 +38,7 @@ import 'package:model/account/account_request.dart';
|
|||||||
import 'package:model/account/authentication_type.dart';
|
import 'package:model/account/authentication_type.dart';
|
||||||
import 'package:model/download/download_task_id.dart';
|
import 'package:model/download/download_task_id.dart';
|
||||||
import 'package:model/email/attachment.dart';
|
import 'package:model/email/attachment.dart';
|
||||||
|
import 'package:model/email/email_action_type.dart';
|
||||||
import 'package:model/email/mark_star_action.dart';
|
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';
|
||||||
@@ -52,6 +53,7 @@ import 'package:tmail_ui_user/features/base/mixin/handle_error_mixin.dart';
|
|||||||
import 'package:tmail_ui_user/features/composer/domain/exceptions/set_method_exception.dart';
|
import 'package:tmail_ui_user/features/composer/domain/exceptions/set_method_exception.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
|
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/exceptions/email_exceptions.dart';
|
import 'package:tmail_ui_user/features/email/domain/exceptions/email_exceptions.dart';
|
||||||
|
import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart';
|
import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/state/download_attachment_for_web_state.dart';
|
import 'package:tmail_ui_user/features/email/domain/state/download_attachment_for_web_state.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
|
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
|
||||||
@@ -388,8 +390,13 @@ class EmailAPI with HandleSetErrorMixin {
|
|||||||
|
|
||||||
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
||||||
final currentSetEmailInvocations = currentExecuteList.map((currentItem) {
|
final currentSetEmailInvocations = currentExecuteList.map((currentItem) {
|
||||||
|
|
||||||
|
final moveProperties = (moveRequest.moveAction == MoveAction.moving && moveRequest.emailActionType == EmailActionType.moveToSpam)
|
||||||
|
? currentItem.value.generateMapUpdateObjectMoveToSpam(currentItem.key, moveRequest.destinationMailboxId)
|
||||||
|
: currentItem.value.generateMapUpdateObjectMoveToMailbox(currentItem.key, moveRequest.destinationMailboxId);
|
||||||
|
|
||||||
return SetEmailMethod(accountId)
|
return SetEmailMethod(accountId)
|
||||||
..addUpdates(currentItem.value.generateMapUpdateObjectMoveToMailbox(currentItem.key, moveRequest.destinationMailboxId));
|
..addUpdates(moveProperties);
|
||||||
}).map(requestBuilder.invocation).toList();
|
}).map(requestBuilder.invocation).toList();
|
||||||
|
|
||||||
final capabilities = {CapabilityIdentifier.jmapCore, CapabilityIdentifier.jmapMail}
|
final capabilities = {CapabilityIdentifier.jmapCore, CapabilityIdentifier.jmapMail}
|
||||||
|
|||||||
@@ -30,10 +30,10 @@ extension ListEmailIdExtension on List<EmailId> {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<Id, PatchObject> generateMapUpdateObjectMarkAsSpam(MailboxId spamMailboxId) {
|
Map<Id, PatchObject> generateMapUpdateObjectMoveToSpam(MailboxId currentMailboxId, MailboxId spamMailboxId) {
|
||||||
return {
|
return {
|
||||||
for (var emailId in this)
|
for (var emailId in this)
|
||||||
emailId.id: spamMailboxId.generateActionPath()
|
emailId.id: currentMailboxId.generateMoveToSpamActionPath(currentMailboxId, spamMailboxId)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import 'package:jmap_dart_client/jmap/core/patch_object.dart';
|
import 'package:jmap_dart_client/jmap/core/patch_object.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/reference_id.dart';
|
import 'package:jmap_dart_client/jmap/core/reference_id.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||||
|
import 'package:model/extensions/keyword_identifier_extension.dart';
|
||||||
|
|
||||||
extension MailboxIdExtension on MailboxId {
|
extension MailboxIdExtension on MailboxId {
|
||||||
String generatePath() {
|
String generatePath() {
|
||||||
@@ -24,5 +26,13 @@ extension MailboxIdExtension on MailboxId {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PatchObject generateMoveToSpamActionPath(MailboxId currentMailboxId, MailboxId spamMailboxId) {
|
||||||
|
return PatchObject({
|
||||||
|
currentMailboxId.generatePath(): null,
|
||||||
|
spamMailboxId.generatePath(): true,
|
||||||
|
KeyWordIdentifier.emailSeen.generatePath(): true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
String get asString => id.value;
|
String get asString => id.value;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user