Fix can not refresh change list mailbox and email after take actions with email in succession

This commit is contained in:
dab246
2023-01-18 14:08:08 +07:00
committed by Dat H. Pham
parent 8587b9e8bd
commit 0f675c2270
20 changed files with 40 additions and 7 deletions
@@ -3,6 +3,8 @@ import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
class LoadingDeleteMultipleEmailsPermanentlyAll extends UIState {}
class DeleteMultipleEmailsPermanentlyAllSuccess extends UIActionState {
List<EmailId> emailIds;
@@ -6,6 +6,8 @@ import 'package:model/model.dart';
import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
class LoadingMoveToMailbox extends UIState {}
class MoveToMailboxSuccess extends UIActionState {
final EmailId emailId;
final MailboxId currentMailboxId;
@@ -14,6 +14,8 @@ class DeleteMultipleEmailsPermanentlyInteractor {
Stream<Either<Failure, Success>> execute(AccountId accountId, List<EmailId> emailIds) async* {
try {
yield Right<Failure, Success>(LoadingDeleteMultipleEmailsPermanentlyAll());
final listState = await Future.wait([
_mailboxRepository.getMailboxState(),
_emailRepository.getEmailState(),
@@ -14,6 +14,8 @@ class MoveToMailboxInteractor {
Stream<Either<Failure, Success>> execute(AccountId accountId, MoveToMailboxRequest moveRequest) async* {
try {
yield Right(LoadingMoveToMailbox());
final listState = await Future.wait([
_mailboxRepository.getMailboxState(),
_emailRepository.getEmailState(),
@@ -3,6 +3,8 @@ import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
class LoadingCreateNewMailbox extends UIState {}
class CreateNewMailboxSuccess extends UIActionState {
final Mailbox newMailbox;
@@ -1,8 +1,11 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
class LoadingDeleteMultipleMailboxAll extends UIState {}
class DeleteMultipleMailboxAllSuccess extends UIActionState {
final List<MailboxId> listMailboxIdDeleted;
@@ -4,13 +4,7 @@ import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
class MoveMailboxLoading extends UIState {
MoveMailboxLoading();
@override
List<Object?> get props => [];
}
class LoadingMoveMailbox extends UIState {}
class MoveMailboxSuccess extends UIActionState {
@@ -2,6 +2,8 @@ import 'package:core/core.dart';
import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
class LoadingRenameMailbox extends UIState {}
class RenameMailboxSuccess extends UIActionState {
RenameMailboxSuccess({
@@ -1,6 +1,8 @@
import 'package:core/core.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
class LoadingSearchMailbox extends UIState {}
class SearchMailboxSuccess extends UIState {
final List<PresentationMailbox> mailboxesSearched;
@@ -12,6 +12,8 @@ class CreateNewMailboxInteractor {
Stream<Either<Failure, Success>> execute(AccountId accountId, CreateNewMailboxRequest newMailboxRequest) async* {
try {
yield Right<Failure, Success>(LoadingCreateNewMailbox());
final currentMailboxState = await _mailboxRepository.getMailboxState();
final newMailbox = await _mailboxRepository.createNewMailbox(accountId, newMailboxRequest);
if (newMailbox != null) {
@@ -20,6 +20,8 @@ class DeleteMultipleMailboxInteractor {
List<MailboxId> listMailboxIdToDelete
) async* {
try {
yield Right<Failure, Success>(LoadingDeleteMultipleMailboxAll());
final currentMailboxState = await _mailboxRepository.getMailboxState();
final listResult = await Future.wait(
@@ -12,6 +12,8 @@ class MoveMailboxInteractor {
Stream<Either<Failure, Success>> execute(AccountId accountId, MoveMailboxRequest request) async* {
try {
yield Right<Failure, Success>(LoadingMoveMailbox());
final currentMailboxState = await _mailboxRepository.getMailboxState();
final result = await _mailboxRepository.moveMailbox(accountId, request);
if (result) {
@@ -12,6 +12,8 @@ class RenameMailboxInteractor {
Stream<Either<Failure, Success>> execute(AccountId accountId, RenameMailboxRequest request) async* {
try {
yield Right<Failure, Success>(LoadingRenameMailbox());
final currentMailboxState = await _mailboxRepository.getMailboxState();
final result = await _mailboxRepository.renameMailbox(accountId, request);
@@ -9,6 +9,8 @@ class SearchMailboxInteractor {
Stream<Either<Failure, Success>> execute(List<PresentationMailbox> mailboxes, SearchQuery searchQuery) async* {
try {
yield Right<Failure, Success>(LoadingSearchMailbox());
final resultList = mailboxes
.where((mailbox) => mailbox.name?.name.toLowerCase().contains(searchQuery.value.toLowerCase()) == true)
.toList();
@@ -3,6 +3,8 @@ import 'package:model/email/read_actions.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
class LoadingMarkAsMultipleEmailReadAll extends UIState {}
class MarkAsMultipleEmailReadAllSuccess extends UIActionState {
final int countMarkAsReadSuccess;
final ReadActions readActions;
@@ -3,6 +3,8 @@ import 'package:model/model.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
class LoadingMarkAsStarMultipleEmailAll extends UIState {}
class MarkAsStarMultipleEmailAllSuccess extends UIActionState {
final int countMarkStarSuccess;
final MarkStarAction markStarAction;
@@ -6,6 +6,8 @@ import 'package:model/email/email_action_type.dart';
import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
class LoadingMoveMultipleEmailToMailboxAll extends UIState {}
class MoveMultipleEmailToMailboxAllSuccess extends UIActionState {
final List<EmailId> movedListEmailId;
final MailboxId currentMailboxId;
@@ -19,6 +19,8 @@ class MarkAsMultipleEmailReadInteractor {
ReadActions readAction
) async* {
try {
yield Right(LoadingMarkAsMultipleEmailReadAll());
final listState = await Future.wait([
_mailboxRepository.getMailboxState(),
_emailRepository.getEmailState(),
@@ -17,6 +17,8 @@ class MarkAsStarMultipleEmailInteractor {
MarkStarAction markStarAction
) async* {
try {
yield Right(LoadingMarkAsStarMultipleEmailAll());
final currentEmailState = await _emailRepository.getEmailState();
final listEmailNeedMarkStar = emails
@@ -16,6 +16,8 @@ class MoveMultipleEmailToMailboxInteractor {
Stream<Either<Failure, Success>> execute(AccountId accountId, MoveToMailboxRequest moveRequest) async* {
try {
yield Right(LoadingMoveMultipleEmailToMailboxAll());
final listState = await Future.wait([
_mailboxRepository.getMailboxState(),
_emailRepository.getEmailState(),