TF-2026 Implement SaveToDraft method

(cherry picked from commit cf03def2f5de115fb9feb64af6686c3957b8f1f2)
This commit is contained in:
dab246
2023-08-31 00:11:42 +07:00
committed by Dat Vu
parent 5f0b27e742
commit 8f7a1aeb10
11 changed files with 144 additions and 33 deletions
@@ -5,7 +5,6 @@ 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/mail/email/email.dart';
import 'package:tmail_ui_user/features/composer/domain/state/update_email_drafts_state.dart';
import 'package:tmail_ui_user/features/email/domain/exceptions/email_exceptions.dart';
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
@@ -27,19 +26,14 @@ class UpdateEmailDraftsInteractor {
final currentMailboxState = listState.first;
final currentEmailState = listState.last;
final newEmailDrafts = await _emailRepository.updateEmailDrafts(session, accountId, newEmail);
final emailDeleted = await _emailRepository.deleteEmailPermanently(session, accountId, oldEmailId);
if (emailDeleted) {
yield Right<Failure, Success>(
UpdateEmailDraftsSuccess(
newEmailDrafts,
currentEmailState: currentEmailState,
currentMailboxState: currentMailboxState
)
);
} else {
yield Left<Failure, Success>(UpdateEmailDraftsFailure(CannotDeleteOldEmailException()));
}
final newEmailDrafts = await _emailRepository.updateEmailDrafts(session, accountId, newEmail, oldEmailId);
yield Right<Failure, Success>(
UpdateEmailDraftsSuccess(
newEmailDrafts,
currentEmailState: currentEmailState,
currentMailboxState: currentMailboxState
)
);
} catch (e) {
yield Left<Failure, Success>(UpdateEmailDraftsFailure(e));
}