TF-1311: [Presentation]: Handle show toastMsg when hide mailbox

This commit is contained in:
HuyNguyen
2023-02-08 11:09:29 +07:00
committed by Dat Vu
parent 6f32bf4ba3
commit b2af558790
12 changed files with 118 additions and 36 deletions
@@ -0,0 +1,4 @@
enum MailboxSubscribeStateAction {
subscribing,
undo
}
@@ -1,14 +1,19 @@
import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_action_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_state.dart';
class SubscribeMailboxRequest with EquatableMixin {
final MailboxId mailboxId;
final PresentationMailbox mailbox;
final MailboxSubscribeState newState;
final MailboxSubscribeStateAction mailboxSubscribeStateAction;
SubscribeMailboxRequest(this.mailboxId, this.newState);
SubscribeMailboxRequest(
this.mailbox,
this.newState,
this.mailboxSubscribeStateAction);
@override
List<Object?> get props => [mailboxId, newState];
List<Object?> get props => [mailbox, newState, mailboxSubscribeStateAction];
}
@@ -1,19 +1,31 @@
import 'package:core/core.dart';
import 'package:model/mailbox/presentation_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;
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_action_state.dart';
class LoadingSubscribeMailbox extends UIState {}
class SubscribeMailboxSuccess extends UIActionState {
final PresentationMailbox mailbox;
final MailboxSubscribeStateAction mailboxSubscribeStateAction;
SubscribeMailboxSuccess({
jmap.State? currentEmailState,
jmap.State? currentMailboxState,
}) : super(currentEmailState, currentMailboxState);
SubscribeMailboxSuccess(
this.mailbox,
this.mailboxSubscribeStateAction,
{
jmap.State? currentEmailState,
jmap.State? currentMailboxState,
}
) : super(currentEmailState, currentMailboxState);
@override
List<Object?> get props => [];
List<Object?> get props => [
mailbox,
currentEmailState,
currentMailboxState,
mailboxSubscribeStateAction
];
}
class SubscribeMailboxFailure extends FeatureFailure {
@@ -20,7 +20,10 @@ class SubscribeMailboxInteractor {
final result = await _mailboxRepository.subscribeMailbox(accountId, request);
if (result) {
yield Right<Failure, Success>(SubscribeMailboxSuccess(currentMailboxState: currentMailboxState));
yield Right<Failure, Success>(SubscribeMailboxSuccess(
request.mailbox,
currentMailboxState: currentMailboxState,
request.mailboxSubscribeStateAction));
} else {
yield Left<Failure, Success>(SubscribeMailboxFailure(null));
}