From 016b75aa5115666297092b53e5ce7eb2028bb9d2 Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 5 Mar 2024 18:47:31 +0700 Subject: [PATCH] TF-2667 Move the creation of mailbox request id to the data layer Signed-off-by: dab246 --- .../domain/extensions/email_request_extension.dart | 1 - .../presentation/destination_picker_controller.dart | 3 --- lib/features/email/data/network/email_api.dart | 11 +++++------ lib/features/mailbox/data/network/mailbox_api.dart | 10 ++++++---- .../domain/model/create_new_mailbox_request.dart | 4 ---- .../mailbox/presentation/mailbox_controller.dart | 3 --- .../sending_email_hive_cache_extension.dart | 2 -- .../offline_mode/model/sending_email_hive_cache.dart | 7 +------ .../work_manager/sending_email_worker.dart | 4 +--- .../presentation/search_mailbox_controller.dart | 3 --- .../domain/extensions/sending_email_extension.dart | 4 ---- .../sending_queue/domain/model/sending_email.dart | 7 ------- .../presentation/sending_queue_controller.dart | 5 +---- 13 files changed, 14 insertions(+), 50 deletions(-) diff --git a/lib/features/composer/domain/extensions/email_request_extension.dart b/lib/features/composer/domain/extensions/email_request_extension.dart index 41591c0c6..83274d99c 100644 --- a/lib/features/composer/domain/extensions/email_request_extension.dart +++ b/lib/features/composer/domain/extensions/email_request_extension.dart @@ -24,7 +24,6 @@ extension EmailRequestExtension on EmailRequest { emailIdAnsweredOrForwarded: emailIdAnsweredOrForwarded, identityId: identityId, mailboxNameRequest: mailboxRequest?.newName, - creationIdRequest: mailboxRequest?.creationId, sendingState: newState, previousEmailId: previousEmailId ); diff --git a/lib/features/destination_picker/presentation/destination_picker_controller.dart b/lib/features/destination_picker/presentation/destination_picker_controller.dart index 4f02e7609..9437b23ea 100644 --- a/lib/features/destination_picker/presentation/destination_picker_controller.dart +++ b/lib/features/destination_picker/presentation/destination_picker_controller.dart @@ -7,7 +7,6 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/error/method/error_method_response.dart'; -import 'package:jmap_dart_client/jmap/core/id.dart'; 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/mail/mailbox/mailbox.dart'; @@ -387,7 +386,6 @@ class DestinationPickerController extends BaseMailboxController { final nameMailbox = newNameMailbox.value; if (nameMailbox != null && nameMailbox.isNotEmpty) { - final generateCreateId = Id(uuid.v1()); final parentId = mailboxDestination.value == PresentationMailbox.unifiedMailbox ? null : mailboxDestination.value?.id; @@ -396,7 +394,6 @@ class DestinationPickerController extends BaseMailboxController { _session!, accountId!, CreateNewMailboxRequest( - generateCreateId, MailboxName(nameMailbox), parentId: parentId)); } diff --git a/lib/features/email/data/network/email_api.dart b/lib/features/email/data/network/email_api.dart index 94c71e57e..55dadc49a 100644 --- a/lib/features/email/data/network/email_api.dart +++ b/lib/features/email/data/network/email_api.dart @@ -113,7 +113,7 @@ class EmailAPI with HandleSetErrorMixin { } } - Future sendEmail( + Future sendEmail( Session session, AccountId accountId, EmailRequest emailRequest, @@ -125,9 +125,10 @@ class EmailAPI with HandleSetErrorMixin { MailboxId? outboxMailboxId; if (mailboxRequest != null) { + final generateCreateId = Id(_uuid.v1()); final setMailboxMethod = SetMailboxMethod(accountId) ..addCreate( - mailboxRequest.creationId, + generateCreateId, Mailbox( name: mailboxRequest.newName, parentId: mailboxRequest.parentId, @@ -139,7 +140,7 @@ class EmailAPI with HandleSetErrorMixin { outboxMailboxId = MailboxId(ReferenceId( ReferencePrefix.defaultPrefix, - mailboxRequest.creationId)); + generateCreateId)); emailNeedsToBeCreated = emailRequest.email.updatedEmail(newMailboxIds: {outboxMailboxId: true}); } else { outboxMailboxId = emailRequest.email.mailboxIds?.keys.first; @@ -222,9 +223,7 @@ class EmailAPI with HandleSetErrorMixin { markAsAnsweredOrForwardedSetResponse ]); - if (emailCreated != null && mapErrors.isEmpty) { - return true; - } else { + if (emailCreated == null || mapErrors.isNotEmpty) { throw SetMethodException(mapErrors); } } diff --git a/lib/features/mailbox/data/network/mailbox_api.dart b/lib/features/mailbox/data/network/mailbox_api.dart index 6d7df8bfe..901a0c473 100644 --- a/lib/features/mailbox/data/network/mailbox_api.dart +++ b/lib/features/mailbox/data/network/mailbox_api.dart @@ -148,9 +148,11 @@ class MailboxAPI with HandleSetErrorMixin { } Future createNewMailbox(Session session, AccountId accountId, CreateNewMailboxRequest request) async { + final generateCreateId = Id(_uuid.v1()); + final setMailboxMethod = SetMailboxMethod(accountId) ..addCreate( - request.creationId, + generateCreateId, Mailbox( name: request.newName, isSubscribed: IsSubscribed(request.isSubscribed), @@ -176,14 +178,14 @@ class MailboxAPI with HandleSetErrorMixin { final mapMailboxCreated = setMailboxResponse?.created; if (mapMailboxCreated != null && - mapMailboxCreated.containsKey(request.creationId)) { - final mailboxCreated = mapMailboxCreated[request.creationId]!; + mapMailboxCreated.containsKey(generateCreateId)) { + final mailboxCreated = mapMailboxCreated[generateCreateId]!; final newMailboxCreated = mailboxCreated.toMailbox( request.newName, parentId: request.parentId); return newMailboxCreated; } else { - throw _parseErrorForSetMailboxResponse(setMailboxResponse, request.creationId); + throw _parseErrorForSetMailboxResponse(setMailboxResponse, generateCreateId); } } diff --git a/lib/features/mailbox/domain/model/create_new_mailbox_request.dart b/lib/features/mailbox/domain/model/create_new_mailbox_request.dart index 3c50807a5..b9273b5cb 100644 --- a/lib/features/mailbox/domain/model/create_new_mailbox_request.dart +++ b/lib/features/mailbox/domain/model/create_new_mailbox_request.dart @@ -1,17 +1,14 @@ import 'package:equatable/equatable.dart'; -import 'package:jmap_dart_client/jmap/core/id.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; class CreateNewMailboxRequest with EquatableMixin { final MailboxName newName; - final Id creationId; final MailboxId? parentId; final bool isSubscribed; CreateNewMailboxRequest( - this.creationId, this.newName, { this.parentId, @@ -21,7 +18,6 @@ class CreateNewMailboxRequest with EquatableMixin { @override List get props => [ - creationId, newName, parentId, isSubscribed diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index 8dd3ff48e..25247f789 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -8,7 +8,6 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/error/method/error_method_response.dart'; -import 'package:jmap_dart_client/jmap/core/id.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; @@ -591,9 +590,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM : await push(AppRoutes.mailboxCreator, arguments: arguments); if (result != null && result is NewMailboxArguments) { - final generateCreateId = Id(uuid.v1()); _createNewMailboxAction(session, accountId, CreateNewMailboxRequest( - generateCreateId, result.newName, parentId: result.mailboxLocation?.id)); } diff --git a/lib/features/offline_mode/extensions/sending_email_hive_cache_extension.dart b/lib/features/offline_mode/extensions/sending_email_hive_cache_extension.dart index e9d2e7e57..3c0418b75 100644 --- a/lib/features/offline_mode/extensions/sending_email_hive_cache_extension.dart +++ b/lib/features/offline_mode/extensions/sending_email_hive_cache_extension.dart @@ -2,7 +2,6 @@ import 'dart:convert'; import 'package:jmap_dart_client/http/converter/email_id_nullable_converter.dart'; -import 'package:jmap_dart_client/http/converter/id_nullable_converter.dart'; import 'package:jmap_dart_client/http/converter/identities/identity_id_nullable_converter.dart'; import 'package:jmap_dart_client/http/converter/mailbox_id_nullable_converter.dart'; import 'package:jmap_dart_client/http/converter/mailbox_name_converter.dart'; @@ -25,7 +24,6 @@ extension SendingEmailHiveCacheExtension on SendingEmailHiveCache { emailIdAnsweredOrForwarded: const EmailIdNullableConverter().fromJson(emailIdAnsweredOrForwarded), identityId: const IdentityIdNullableConverter().fromJson(identityId), mailboxNameRequest: const MailboxNameConverter().fromJson(mailboxNameRequest), - creationIdRequest: const IdNullableConverter().fromJson(creationIdRequest), sendingState: SendingState.values.firstWhere((value) => value.name == sendingState), previousEmailId: const EmailIdNullableConverter().fromJson(previousEmailId), ); diff --git a/lib/features/offline_mode/model/sending_email_hive_cache.dart b/lib/features/offline_mode/model/sending_email_hive_cache.dart index ee8cae8b6..34cdce08d 100644 --- a/lib/features/offline_mode/model/sending_email_hive_cache.dart +++ b/lib/features/offline_mode/model/sending_email_hive_cache.dart @@ -36,12 +36,9 @@ class SendingEmailHiveCache extends HiveObject with EquatableMixin { final String? mailboxNameRequest; @HiveField(9) - final String? creationIdRequest; - - @HiveField(10) final String sendingState; - @HiveField(11) + @HiveField(10) final String? previousEmailId; SendingEmailHiveCache( @@ -54,7 +51,6 @@ class SendingEmailHiveCache extends HiveObject with EquatableMixin { this.emailIdAnsweredOrForwarded, this.identityId, this.mailboxNameRequest, - this.creationIdRequest, this.sendingState, this.previousEmailId, ); @@ -70,7 +66,6 @@ class SendingEmailHiveCache extends HiveObject with EquatableMixin { emailIdAnsweredOrForwarded, identityId, mailboxNameRequest, - creationIdRequest, sendingState, previousEmailId, ]; diff --git a/lib/features/offline_mode/work_manager/sending_email_worker.dart b/lib/features/offline_mode/work_manager/sending_email_worker.dart index 530dfb57f..cc8064914 100644 --- a/lib/features/offline_mode/work_manager/sending_email_worker.dart +++ b/lib/features/offline_mode/work_manager/sending_email_worker.dart @@ -193,10 +193,8 @@ class SendingEmailWorker extends Worker { } CreateNewMailboxRequest? _getMailboxRequest() { - if (_sendingEmail.mailboxNameRequest != null && - _sendingEmail.creationIdRequest != null) { + if (_sendingEmail.mailboxNameRequest != null) { return CreateNewMailboxRequest( - _sendingEmail.creationIdRequest!, _sendingEmail.mailboxNameRequest!); } else { return null; diff --git a/lib/features/search/mailbox/presentation/search_mailbox_controller.dart b/lib/features/search/mailbox/presentation/search_mailbox_controller.dart index 275808a62..a04f10779 100644 --- a/lib/features/search/mailbox/presentation/search_mailbox_controller.dart +++ b/lib/features/search/mailbox/presentation/search_mailbox_controller.dart @@ -11,7 +11,6 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/error/method/error_method_response.dart'; -import 'package:jmap_dart_client/jmap/core/id.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; @@ -676,9 +675,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa : await push(AppRoutes.mailboxCreator, arguments: arguments); if (result != null && result is NewMailboxArguments) { - final generateCreateId = Id(uuid.v1()); _createNewMailboxAction(session, accountId, CreateNewMailboxRequest( - generateCreateId, result.newName, parentId: result.mailboxLocation?.id)); } diff --git a/lib/features/sending_queue/domain/extensions/sending_email_extension.dart b/lib/features/sending_queue/domain/extensions/sending_email_extension.dart index 6b01c6dbf..f907fe2cf 100644 --- a/lib/features/sending_queue/domain/extensions/sending_email_extension.dart +++ b/lib/features/sending_queue/domain/extensions/sending_email_extension.dart @@ -21,7 +21,6 @@ extension SendingEmailExtension on SendingEmail { emailIdAnsweredOrForwarded?.asString, identityId?.asString, mailboxNameRequest?.name, - creationIdRequest?.value, sendingState.name, previousEmailId?.asString, ); @@ -51,7 +50,6 @@ extension SendingEmailExtension on SendingEmail { emailIdAnsweredOrForwarded: emailIdAnsweredOrForwarded, identityId: identityId, mailboxNameRequest: mailboxNameRequest, - creationIdRequest: creationIdRequest, sendingState: sendingState, selectMode: selectMode == SelectMode.INACTIVE ? SelectMode.ACTIVE : SelectMode.INACTIVE, previousEmailId: previousEmailId, @@ -69,7 +67,6 @@ extension SendingEmailExtension on SendingEmail { emailIdAnsweredOrForwarded: emailIdAnsweredOrForwarded, identityId: identityId, mailboxNameRequest: mailboxNameRequest, - creationIdRequest: creationIdRequest, sendingState: sendingState, selectMode: SelectMode.INACTIVE, previousEmailId: previousEmailId, @@ -87,7 +84,6 @@ extension SendingEmailExtension on SendingEmail { emailIdAnsweredOrForwarded: emailIdAnsweredOrForwarded, identityId: identityId, mailboxNameRequest: mailboxNameRequest, - creationIdRequest: creationIdRequest, sendingState: newState, selectMode: selectMode, previousEmailId: previousEmailId, diff --git a/lib/features/sending_queue/domain/model/sending_email.dart b/lib/features/sending_queue/domain/model/sending_email.dart index 13f96059d..1a2af6116 100644 --- a/lib/features/sending_queue/domain/model/sending_email.dart +++ b/lib/features/sending_queue/domain/model/sending_email.dart @@ -5,11 +5,9 @@ import 'package:core/utils/platform_info.dart'; import 'package:equatable/equatable.dart'; import 'package:flutter_date_range_picker/flutter_date_range_picker.dart'; import 'package:jmap_dart_client/http/converter/email_id_nullable_converter.dart'; -import 'package:jmap_dart_client/http/converter/id_nullable_converter.dart'; import 'package:jmap_dart_client/http/converter/identities/identity_id_nullable_converter.dart'; import 'package:jmap_dart_client/http/converter/mailbox_id_nullable_converter.dart'; import 'package:jmap_dart_client/http/converter/mailbox_name_converter.dart'; -import 'package:jmap_dart_client/jmap/core/id.dart'; import 'package:jmap_dart_client/jmap/identities/identity.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; @@ -28,7 +26,6 @@ class SendingEmail with EquatableMixin { final IdentityId? identityId; final EmailActionType emailActionType; final MailboxName? mailboxNameRequest; - final Id? creationIdRequest; final DateTime createTime; final SelectMode selectMode; final SendingState sendingState; @@ -44,7 +41,6 @@ class SendingEmail with EquatableMixin { this.emailIdAnsweredOrForwarded, this.identityId, this.mailboxNameRequest, - this.creationIdRequest, this.selectMode = SelectMode.INACTIVE, this.sendingState = SendingState.waiting, this.previousEmailId, @@ -68,7 +64,6 @@ class SendingEmail with EquatableMixin { writeNotNull('emailIdAnsweredOrForwarded', const EmailIdNullableConverter().toJson(emailIdAnsweredOrForwarded)); writeNotNull('identityId', const IdentityIdNullableConverter().toJson(identityId)); writeNotNull('mailboxNameRequest', mailboxNameRequest?.name); - writeNotNull('creationIdRequest', const IdNullableConverter().toJson(creationIdRequest)); writeNotNull('previousEmailId', const EmailIdNullableConverter().toJson(previousEmailId)); return val; @@ -91,7 +86,6 @@ class SendingEmail with EquatableMixin { emailIdAnsweredOrForwarded: const EmailIdNullableConverter().fromJson(json['emailIdAnsweredOrForwarded'] as String?), identityId: const IdentityIdNullableConverter().fromJson(json['identityId'] as String?), mailboxNameRequest: const MailboxNameConverter().fromJson(json['mailboxNameRequest'] as String?), - creationIdRequest: const IdNullableConverter().fromJson(json['creationIdRequest'] as String?), previousEmailId: const EmailIdNullableConverter().fromJson(json['previousEmailId'] as String?), ); } @@ -134,7 +128,6 @@ class SendingEmail with EquatableMixin { emailIdAnsweredOrForwarded, identityId, mailboxNameRequest, - creationIdRequest, selectMode, sendingState, previousEmailId, diff --git a/lib/features/sending_queue/presentation/sending_queue_controller.dart b/lib/features/sending_queue/presentation/sending_queue_controller.dart index 9ed699ed1..9606ce131 100644 --- a/lib/features/sending_queue/presentation/sending_queue_controller.dart +++ b/lib/features/sending_queue/presentation/sending_queue_controller.dart @@ -283,11 +283,8 @@ class SendingQueueController extends BaseController with MessageDialogActionMixi } CreateNewMailboxRequest? _getMailboxRequest(SendingEmail sendingEmail) { - if (sendingEmail.mailboxNameRequest != null && - sendingEmail.creationIdRequest != null - ) { + if (sendingEmail.mailboxNameRequest != null) { return CreateNewMailboxRequest( - sendingEmail.creationIdRequest!, sendingEmail.mailboxNameRequest! ); } else {