TF-1432 Handle undo action after subscribe mailbox

This commit is contained in:
dab246
2023-02-10 18:43:12 +07:00
committed by Dat Vu
parent 8ad54aca5c
commit 9c48893a49
@@ -1290,7 +1290,10 @@ class MailboxController extends BaseMailboxController {
void _handleUnsubscribeMultipleMailboxAllSuccess(SubscribeMultipleMailboxAllSuccess success) { void _handleUnsubscribeMultipleMailboxAllSuccess(SubscribeMultipleMailboxAllSuccess success) {
if(success.subscribeAction == MailboxSubscribeAction.unSubscribe) { if(success.subscribeAction == MailboxSubscribeAction.unSubscribe) {
_showToastSubscribeMailboxSuccess(success.parentMailboxId); _showToastSubscribeMailboxSuccess(
success.parentMailboxId,
listDescendantMailboxIds: success.mailboxIdsSubscribe
);
if (success.mailboxIdsSubscribe.contains(selectedMailbox?.id)) { if (success.mailboxIdsSubscribe.contains(selectedMailbox?.id)) {
_switchBackToMailboxDefault(); _switchBackToMailboxDefault();
@@ -1303,7 +1306,10 @@ class MailboxController extends BaseMailboxController {
void _handleUnsubscribeMultipleMailboxHasSomeSuccess(SubscribeMultipleMailboxHasSomeSuccess success) { void _handleUnsubscribeMultipleMailboxHasSomeSuccess(SubscribeMultipleMailboxHasSomeSuccess success) {
if(success.subscribeAction == MailboxSubscribeAction.unSubscribe) { if(success.subscribeAction == MailboxSubscribeAction.unSubscribe) {
_showToastSubscribeMailboxSuccess(success.parentMailboxId); _showToastSubscribeMailboxSuccess(
success.parentMailboxId,
listDescendantMailboxIds: success.mailboxIdsSubscribe
);
if (success.mailboxIdsSubscribe.contains(selectedMailbox?.id)) { if (success.mailboxIdsSubscribe.contains(selectedMailbox?.id)) {
_switchBackToMailboxDefault(); _switchBackToMailboxDefault();
@@ -1326,13 +1332,19 @@ class MailboxController extends BaseMailboxController {
} }
} }
void _showToastSubscribeMailboxSuccess(MailboxId mailboxId) { void _showToastSubscribeMailboxSuccess(
MailboxId mailboxIdSubscribed,
{List<MailboxId>? listDescendantMailboxIds}
) {
if (currentOverlayContext != null && currentContext != null) { if (currentOverlayContext != null && currentContext != null) {
_appToast.showBottomToast( _appToast.showBottomToast(
currentOverlayContext!, currentOverlayContext!,
AppLocalizations.of(currentContext!).toastMsgHideMailboxSuccess, AppLocalizations.of(currentContext!).toastMsgHideMailboxSuccess,
actionName: AppLocalizations.of(currentContext!).undo, actionName: AppLocalizations.of(currentContext!).undo,
onActionClick: () => _undoUnsubscribeMailboxAction(mailboxId), onActionClick: () => _undoUnsubscribeMailboxAction(
mailboxIdSubscribed,
listDescendantMailboxIds: listDescendantMailboxIds
),
leadingIcon: SvgPicture.asset( leadingIcon: SvgPicture.asset(
_imagePaths.icFolderMailbox, _imagePaths.icFolderMailbox,
width: 24, width: 24,
@@ -1349,15 +1361,29 @@ class MailboxController extends BaseMailboxController {
} }
} }
void _undoUnsubscribeMailboxAction(MailboxId mailboxId) { void _undoUnsubscribeMailboxAction(
MailboxId mailboxIdSubscribed,
{List<MailboxId>? listDescendantMailboxIds}
) {
final _accountId = mailboxDashBoardController.accountId.value; final _accountId = mailboxDashBoardController.accountId.value;
if (_accountId != null) { if (_accountId != null) {
final subscribeRequest = _generateSubscribeRequest( SubscribeRequest? subscribeRequest;
mailboxId,
MailboxSubscribeState.enabled, if (listDescendantMailboxIds != null) {
MailboxSubscribeAction.undo subscribeRequest = SubscribeMultipleMailboxRequest(
); mailboxIdSubscribed,
listDescendantMailboxIds,
MailboxSubscribeState.enabled,
MailboxSubscribeAction.undo
);
} else {
subscribeRequest = SubscribeMailboxRequest(
mailboxIdSubscribed,
MailboxSubscribeState.enabled,
MailboxSubscribeAction.undo
);
}
if (subscribeRequest is SubscribeMultipleMailboxRequest) { if (subscribeRequest is SubscribeMultipleMailboxRequest) {
consumeState(_subscribeMultipleMailboxInteractor.execute(_accountId, subscribeRequest)); consumeState(_subscribeMultipleMailboxInteractor.execute(_accountId, subscribeRequest));