TF-2667 Move the creation of mailbox request id to the data layer

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2024-03-05 18:47:31 +07:00
committed by Dat H. Pham
parent 61687b60e0
commit 016b75aa51
13 changed files with 14 additions and 50 deletions
@@ -24,7 +24,6 @@ extension EmailRequestExtension on EmailRequest {
emailIdAnsweredOrForwarded: emailIdAnsweredOrForwarded,
identityId: identityId,
mailboxNameRequest: mailboxRequest?.newName,
creationIdRequest: mailboxRequest?.creationId,
sendingState: newState,
previousEmailId: previousEmailId
);
@@ -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));
}
@@ -113,7 +113,7 @@ class EmailAPI with HandleSetErrorMixin {
}
}
Future<bool> sendEmail(
Future<void> 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);
}
}
@@ -148,9 +148,11 @@ class MailboxAPI with HandleSetErrorMixin {
}
Future<Mailbox?> 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);
}
}
@@ -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<Object?> get props => [
creationId,
newName,
parentId,
isSubscribed
@@ -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));
}
@@ -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),
);
@@ -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,
];
@@ -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;
@@ -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));
}
@@ -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,
@@ -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,
@@ -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 {