Hot fix cannot send email on cyrus server when the first open app
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -4,8 +4,8 @@ import 'package:core/utils/app_logger.dart';
|
||||
import 'package:dartz/dartz.dart' as dartz;
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/exceptions/set_mailbox_method_exception.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/state/create_default_mailbox_state.dart';
|
||||
|
||||
@@ -19,32 +19,48 @@ class CreateDefaultMailboxInteractor {
|
||||
AccountId accountId,
|
||||
List<Role> listRole
|
||||
) async* {
|
||||
final currentMailboxState = await _getCurrentMailboxState(session, accountId);
|
||||
try {
|
||||
yield dartz.Right<Failure, Success>(CreateDefaultMailboxLoading());
|
||||
final listMailboxCreated = await _mailboxRepository.createDefaultMailbox(
|
||||
final mailboxesRecord = await _mailboxRepository.createDefaultMailbox(
|
||||
session,
|
||||
accountId,
|
||||
listRole
|
||||
);
|
||||
await _mailboxRepository.setRoleDefaultMailbox(
|
||||
|
||||
final listMailboxCreated = mailboxesRecord.$1;
|
||||
log('CreateDefaultMailboxInteractor::execute:listMailboxCreated = $listMailboxCreated');
|
||||
if (listMailboxCreated.isEmpty) {
|
||||
yield dartz.Left<Failure, Success>(CreateDefaultMailboxFailure(NotFoundMailboxCreatedException()));
|
||||
return;
|
||||
}
|
||||
|
||||
final listMailboxUpdated = await _updateRoleToListMailbox(
|
||||
session,
|
||||
accountId,
|
||||
listMailboxCreated
|
||||
listMailboxCreated,
|
||||
);
|
||||
yield dartz.Right<Failure, Success>(CreateDefaultMailboxAllSuccess(currentMailboxState: currentMailboxState));
|
||||
|
||||
yield dartz.Right<Failure, Success>(CreateDefaultMailboxAllSuccess(listMailboxUpdated));
|
||||
} catch (e) {
|
||||
yield dartz.Left<Failure, Success>(CreateDefaultMailboxFailure(currentMailboxState, e));
|
||||
yield dartz.Left<Failure, Success>(CreateDefaultMailboxFailure(e));
|
||||
}
|
||||
}
|
||||
|
||||
Future<State?> _getCurrentMailboxState(Session session, AccountId accountId) async {
|
||||
Future<List<Mailbox>> _updateRoleToListMailbox(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<Mailbox> mailboxes,
|
||||
) async {
|
||||
try {
|
||||
final currentMailboxState = await _mailboxRepository.getMailboxState(session, accountId);
|
||||
log('CreateDefaultMailboxInteractor::_getCurrentMailboxState:currentMailboxState: $currentMailboxState');
|
||||
return currentMailboxState;
|
||||
final mailboxUpdatedRecord = await _mailboxRepository.setRoleDefaultMailbox(
|
||||
session,
|
||||
accountId,
|
||||
mailboxes,
|
||||
);
|
||||
return mailboxUpdatedRecord.$1;
|
||||
} catch (e) {
|
||||
return null;
|
||||
logError('CreateDefaultMailboxInteractor::_updateRoleToListMailbox:Exception = $e');
|
||||
return mailboxes;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user