From 9c48893a49a77ba4f8e0948d158a56805e592c50 Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 10 Feb 2023 18:43:12 +0700 Subject: [PATCH] TF-1432 Handle `undo` action after subscribe mailbox --- .../presentation/mailbox_controller.dart | 46 +++++++++++++++---- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index 367d09d37..0edbae77b 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -1290,7 +1290,10 @@ class MailboxController extends BaseMailboxController { void _handleUnsubscribeMultipleMailboxAllSuccess(SubscribeMultipleMailboxAllSuccess success) { if(success.subscribeAction == MailboxSubscribeAction.unSubscribe) { - _showToastSubscribeMailboxSuccess(success.parentMailboxId); + _showToastSubscribeMailboxSuccess( + success.parentMailboxId, + listDescendantMailboxIds: success.mailboxIdsSubscribe + ); if (success.mailboxIdsSubscribe.contains(selectedMailbox?.id)) { _switchBackToMailboxDefault(); @@ -1303,7 +1306,10 @@ class MailboxController extends BaseMailboxController { void _handleUnsubscribeMultipleMailboxHasSomeSuccess(SubscribeMultipleMailboxHasSomeSuccess success) { if(success.subscribeAction == MailboxSubscribeAction.unSubscribe) { - _showToastSubscribeMailboxSuccess(success.parentMailboxId); + _showToastSubscribeMailboxSuccess( + success.parentMailboxId, + listDescendantMailboxIds: success.mailboxIdsSubscribe + ); if (success.mailboxIdsSubscribe.contains(selectedMailbox?.id)) { _switchBackToMailboxDefault(); @@ -1326,13 +1332,19 @@ class MailboxController extends BaseMailboxController { } } - void _showToastSubscribeMailboxSuccess(MailboxId mailboxId) { + void _showToastSubscribeMailboxSuccess( + MailboxId mailboxIdSubscribed, + {List? listDescendantMailboxIds} + ) { if (currentOverlayContext != null && currentContext != null) { _appToast.showBottomToast( currentOverlayContext!, AppLocalizations.of(currentContext!).toastMsgHideMailboxSuccess, actionName: AppLocalizations.of(currentContext!).undo, - onActionClick: () => _undoUnsubscribeMailboxAction(mailboxId), + onActionClick: () => _undoUnsubscribeMailboxAction( + mailboxIdSubscribed, + listDescendantMailboxIds: listDescendantMailboxIds + ), leadingIcon: SvgPicture.asset( _imagePaths.icFolderMailbox, width: 24, @@ -1349,15 +1361,29 @@ class MailboxController extends BaseMailboxController { } } - void _undoUnsubscribeMailboxAction(MailboxId mailboxId) { + void _undoUnsubscribeMailboxAction( + MailboxId mailboxIdSubscribed, + {List? listDescendantMailboxIds} + ) { final _accountId = mailboxDashBoardController.accountId.value; if (_accountId != null) { - final subscribeRequest = _generateSubscribeRequest( - mailboxId, - MailboxSubscribeState.enabled, - MailboxSubscribeAction.undo - ); + SubscribeRequest? subscribeRequest; + + if (listDescendantMailboxIds != null) { + subscribeRequest = SubscribeMultipleMailboxRequest( + mailboxIdSubscribed, + listDescendantMailboxIds, + MailboxSubscribeState.enabled, + MailboxSubscribeAction.undo + ); + } else { + subscribeRequest = SubscribeMailboxRequest( + mailboxIdSubscribed, + MailboxSubscribeState.enabled, + MailboxSubscribeAction.undo + ); + } if (subscribeRequest is SubscribeMultipleMailboxRequest) { consumeState(_subscribeMultipleMailboxInteractor.execute(_accountId, subscribeRequest));