TF-474 Use Ever/Worker to listen Obx object

This commit is contained in:
dab246
2022-05-06 18:05:36 +07:00
committed by Dat H. Pham
parent 5cc5ff9761
commit 275fe6faf9
6 changed files with 165 additions and 128 deletions
@@ -92,6 +92,8 @@ class MailboxController extends BaseMailboxController {
jmap_state.State? currentMailboxState;
List<String> listMailboxNameAsStringExist = <String>[];
late Worker accountIdWorker, viewStateWorker;
MailboxController(
this._getAllMailboxInteractor,
this._refreshAllMailboxInteractor,
@@ -106,7 +108,7 @@ class MailboxController extends BaseMailboxController {
@override
void onInit() {
_onMailboxDashBoardListener();
_initWorker();
super.onInit();
}
@@ -122,10 +124,11 @@ class MailboxController extends BaseMailboxController {
@override
void onClose() {
mailboxDashBoardController.accountId.close();
mailboxDashBoardController.viewState.close();
searchInputController.dispose();
searchFocus.dispose();
_openMailboxEventController.close();
mailboxListScrollController.dispose();
_clearWorker();
super.onClose();
}
@@ -176,50 +179,55 @@ class MailboxController extends BaseMailboxController {
@override
void onError(error) {}
void _onMailboxDashBoardListener() {
mailboxDashBoardController.accountId.listen((accountId) {
log('MailboxController::_onMailboxDashBoardListener(): accountId: $accountId');
if (accountId != null) {
void _initWorker() {
accountIdWorker = ever(mailboxDashBoardController.accountId, (accountId) {
if (accountId is AccountId) {
getAllMailboxAction(accountId);
}
});
mailboxDashBoardController.viewState.listen((state) {
log('MailboxController::_onMailboxDashBoardListener(): viewState: $viewState');
state.fold((failure) {
if (failure is EmptyTrashFolderFailure) {
mailboxDashBoardController.clearState();
refreshMailboxChanges();
}
}, (success) {
if (success is MarkAsMultipleEmailReadAllSuccess ||
success is MarkAsMultipleEmailReadHasSomeEmailFailure) {
mailboxDashBoardController.clearState();
refreshMailboxChanges();
} else if (success is MoveMultipleEmailToMailboxAllSuccess ||
success is MoveMultipleEmailToMailboxHasSomeEmailFailure) {
mailboxDashBoardController.clearState();
refreshMailboxChanges();
} else if (success is DeleteMultipleEmailsPermanentlyAllSuccess ||
success is DeleteMultipleEmailsPermanentlyHasSomeEmailFailure) {
mailboxDashBoardController.clearState();
refreshMailboxChanges();
} else if (success is EmptyTrashFolderSuccess) {
mailboxDashBoardController.clearState();
refreshMailboxChanges();
} else if (success is MarkAsEmailReadSuccess ||
success is MoveToMailboxSuccess ||
success is DeleteEmailPermanentlySuccess ||
success is SaveEmailAsDraftsSuccess ||
success is RemoveEmailDraftsSuccess ||
success is SendEmailSuccess ||
success is UpdateEmailDraftsSuccess) {
refreshMailboxChanges();
}
});
viewStateWorker = ever(mailboxDashBoardController.viewState, (state) {
if (state is Either) {
state.fold((failure) {
if (failure is EmptyTrashFolderFailure) {
mailboxDashBoardController.clearState();
refreshMailboxChanges();
}
}, (success) {
if (success is MarkAsMultipleEmailReadAllSuccess ||
success is MarkAsMultipleEmailReadHasSomeEmailFailure) {
mailboxDashBoardController.clearState();
refreshMailboxChanges();
} else if (success is MoveMultipleEmailToMailboxAllSuccess ||
success is MoveMultipleEmailToMailboxHasSomeEmailFailure) {
mailboxDashBoardController.clearState();
refreshMailboxChanges();
} else if (success is DeleteMultipleEmailsPermanentlyAllSuccess ||
success is DeleteMultipleEmailsPermanentlyHasSomeEmailFailure) {
mailboxDashBoardController.clearState();
refreshMailboxChanges();
} else if (success is EmptyTrashFolderSuccess) {
mailboxDashBoardController.clearState();
refreshMailboxChanges();
} else if (success is MarkAsEmailReadSuccess ||
success is MoveToMailboxSuccess ||
success is DeleteEmailPermanentlySuccess ||
success is SaveEmailAsDraftsSuccess ||
success is RemoveEmailDraftsSuccess ||
success is SendEmailSuccess ||
success is UpdateEmailDraftsSuccess) {
refreshMailboxChanges();
}
});
}
});
}
void _clearWorker() {
accountIdWorker.call();
viewStateWorker.call();
}
void _initCollapseMailboxCategories() {
if (kIsWeb && currentContext != null
&& (_responsiveUtils.isMobile(currentContext!) || _responsiveUtils.isTablet(currentContext!))) {
@@ -680,10 +688,4 @@ class MailboxController extends BaseMailboxController {
_cancelSelectMailbox();
mailboxDashBoardController.closeMailboxMenuDrawer();
}
@override
void dispose() {
_openMailboxEventController.close();
super.dispose();
}
}