From 963613a3b6606c28fff4c92c602f6480c885a0dd Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 21 Mar 2023 17:29:44 +0700 Subject: [PATCH] TF-1625 Remove `Rxn` variable and only use `Rxn` variable to listen change (cherry picked from commit 9b56575290cbbf3ed47835117529e0d75346d703) --- .../email_rules/email_rules_controller.dart | 4 +- .../forward/forward_controller.dart | 2 +- .../mailbox_visibility_controller.dart | 4 +- .../manage_account_dashboard_controller.dart | 59 +++++++++---------- .../manage_account_dashboard_view.dart | 6 +- .../menu/manage_account_menu_controller.dart | 8 +-- .../menu/manage_account_menu_view.dart | 2 +- .../settings/settings_first_level_view.dart | 8 +-- .../menu/settings/settings_view.dart | 6 +- .../identities/identities_controller.dart | 10 ++-- 10 files changed, 52 insertions(+), 57 deletions(-) diff --git a/lib/features/manage_account/presentation/email_rules/email_rules_controller.dart b/lib/features/manage_account/presentation/email_rules/email_rules_controller.dart index ac827bcd9..5d696dc91 100644 --- a/lib/features/manage_account/presentation/email_rules/email_rules_controller.dart +++ b/lib/features/manage_account/presentation/email_rules/email_rules_controller.dart @@ -86,7 +86,7 @@ class EmailRulesController extends BaseController { void goToCreateNewRule(BuildContext context) async { final accountId = _accountDashBoardController.accountId.value; - final session = _accountDashBoardController.sessionCurrent.value; + final session = _accountDashBoardController.sessionCurrent; if (accountId != null && session != null) { final arguments = RulesFilterCreatorArguments(accountId, session); @@ -134,7 +134,7 @@ class EmailRulesController extends BaseController { void editEmailRule(BuildContext context, TMailRule rule) async { final accountId = _accountDashBoardController.accountId.value; - final session = _accountDashBoardController.sessionCurrent.value; + final session = _accountDashBoardController.sessionCurrent; if (accountId != null && session != null) { final arguments = RulesFilterCreatorArguments( accountId, diff --git a/lib/features/manage_account/presentation/forward/forward_controller.dart b/lib/features/manage_account/presentation/forward/forward_controller.dart index f49d430f8..b9a99422f 100644 --- a/lib/features/manage_account/presentation/forward/forward_controller.dart +++ b/lib/features/manage_account/presentation/forward/forward_controller.dart @@ -53,7 +53,7 @@ class ForwardController extends BaseController { ForwardController() { recipientController = ForwardRecipientController( accountId: accountDashBoardController.accountId.value, - session: accountDashBoardController.sessionCurrent.value); + session: accountDashBoardController.sessionCurrent); } @override diff --git a/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart b/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart index 2f47694ed..8bdc3f475 100644 --- a/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart +++ b/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart @@ -94,7 +94,7 @@ class MailboxVisibilityController extends BaseMailboxController { @override void onReady() { - final session = _accountDashBoardController.sessionCurrent.value; + final session = _accountDashBoardController.sessionCurrent; final accountId = _accountDashBoardController.accountId.value; if(session != null && accountId != null) { getAllMailbox(session, accountId); @@ -194,7 +194,7 @@ class MailboxVisibilityController extends BaseMailboxController { } void _refreshMailboxChanges(jmap.State? newMailboxState) { - final session = _accountDashBoardController.sessionCurrent.value; + final session = _accountDashBoardController.sessionCurrent; final accountId = _accountDashBoardController.accountId.value; final mailboxState = newMailboxState ?? currentMailboxState; if (session != null && accountId != null && mailboxState != null) { diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart index 80939a8ef..ef38fbaf0 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart @@ -51,10 +51,11 @@ class ManageAccountDashBoardController extends ReloadableController { final accountId = Rxn(); final accountMenuItemSelected = AccountMenuItem.profiles.obs; final settingsPageLevel = SettingsPageLevel.universal.obs; - final sessionCurrent = Rxn(); final vacationResponse = Rxn(); final dashboardSettingAction = Rxn(); + Session? sessionCurrent; + ManageAccountDashBoardController( LogoutOidcInteractor logoutOidcInteractor, DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor, @@ -93,14 +94,14 @@ class ManageAccountDashBoardController extends ReloadableController { @override void handleReloaded(Session session) { + sessionCurrent = session; accountId.value = session.accounts.keys.first; - sessionCurrent.value = session; _getUserProfile(); - injectAutoCompleteBindings(sessionCurrent.value, accountId.value); - injectForwardBindings(sessionCurrent.value, accountId.value); - injectRuleFilterBindings(sessionCurrent.value, accountId.value); + injectAutoCompleteBindings(sessionCurrent, accountId.value); + injectForwardBindings(sessionCurrent, accountId.value); + injectRuleFilterBindings(sessionCurrent, accountId.value); injectMailboxVisibilityBindings(); - injectVacationBindings(sessionCurrent.value, accountId.value); + injectVacationBindings(sessionCurrent, accountId.value); _getVacationResponse(); } @@ -108,14 +109,14 @@ class ManageAccountDashBoardController extends ReloadableController { final arguments = Get.arguments; log('ManageAccountDashBoardController::_getAccountIdAndUserProfile(): $arguments'); if (arguments is ManageAccountArguments) { + sessionCurrent = arguments.session; accountId.value = arguments.session?.accounts.keys.first; - sessionCurrent.value = arguments.session; _getUserProfile(); - injectAutoCompleteBindings(sessionCurrent.value, accountId.value); - injectForwardBindings(sessionCurrent.value, accountId.value); - injectRuleFilterBindings(sessionCurrent.value, accountId.value); + injectAutoCompleteBindings(sessionCurrent, accountId.value); + injectForwardBindings(sessionCurrent, accountId.value); + injectRuleFilterBindings(sessionCurrent, accountId.value); injectMailboxVisibilityBindings(); - injectVacationBindings(sessionCurrent.value, accountId.value); + injectVacationBindings(sessionCurrent, accountId.value); _getVacationResponse(); if (arguments.menuSettingCurrent != null) { _goToSettingMenuCurrent(arguments.menuSettingCurrent!); @@ -154,8 +155,8 @@ class ManageAccountDashBoardController extends ReloadableController { } void _getUserProfile() async { - log('ManageAccountDashBoardController::_getUserProfile(): ${sessionCurrent.value}'); - userProfile.value = sessionCurrent.value != null ? UserProfile(sessionCurrent.value!.username.value) : null; + log('ManageAccountDashBoardController::_getUserProfile(): $sessionCurrent'); + userProfile.value = sessionCurrent != null ? UserProfile(sessionCurrent!.username.value) : null; } void _getVacationResponse() { @@ -211,7 +212,7 @@ class ManageAccountDashBoardController extends ReloadableController { void goToSettings() { pushAndPop(AppRoutes.settings, - arguments: ManageAccountArguments(sessionCurrent.value)); + arguments: ManageAccountArguments(sessionCurrent)); } void backToMailboxDashBoard(BuildContext context) { @@ -225,32 +226,26 @@ class ManageAccountDashBoardController extends ReloadableController { } } - bool checkAvailableVacationInSession() { - try { - requireCapability(sessionCurrent.value!, accountId.value!, [CapabilityIdentifier.jmapVacationResponse]); - return true; - } catch(e) { - logError('ManageAccountDashBoardController::checkAvailableVacationInSession(): exception = $e'); + bool get isVacationCapabilitySupported { + if (accountId.value != null && sessionCurrent != null) { + return [CapabilityIdentifier.jmapVacationResponse].isSupported(sessionCurrent!, accountId.value!); + } else { return false; } } - bool checkAvailableRuleFilterInSession() { - try { - requireCapability(sessionCurrent.value!, accountId.value!, [capabilityRuleFilter]); - return true; - } catch(e) { - logError('ManageAccountDashBoardController::checkAvailableRuleFilterInSession(): exception = $e'); + bool get isRuleFilterCapabilitySupported { + if (accountId.value != null && sessionCurrent != null) { + return [capabilityRuleFilter].isSupported(sessionCurrent!, accountId.value!); + } else { return false; } } - bool checkAvailableForwardInSession() { - try { - requireCapability(sessionCurrent.value!, accountId.value!, [capabilityForward]); - return true; - } catch(e) { - logError('ManageAccountDashBoardController::checkAvailableRuleFilterInSession(): exception = $e'); + bool get isForwardCapabilitySupported { + if (accountId.value != null && sessionCurrent != null) { + return [capabilityForward].isSupported(sessionCurrent!, accountId.value!); + } else { return false; } } diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_view.dart b/lib/features/manage_account/presentation/manage_account_dashboard_view.dart index dc5933161..c1d2377c7 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_view.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_view.dart @@ -141,7 +141,7 @@ class ManageAccountDashBoardView extends GetWidget { child: InkWell( onTap: () { controller.logout( - controller.dashBoardController.sessionCurrent.value, + controller.dashBoardController.sessionCurrent, controller.dashBoardController.accountId.value ); }, diff --git a/lib/features/manage_account/presentation/menu/settings/settings_first_level_view.dart b/lib/features/manage_account/presentation/menu/settings/settings_first_level_view.dart index d9d969810..9b44f11e5 100644 --- a/lib/features/manage_account/presentation/menu/settings/settings_first_level_view.dart +++ b/lib/features/manage_account/presentation/menu/settings/settings_first_level_view.dart @@ -50,7 +50,7 @@ class SettingsFirstLevelView extends GetWidget { endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils) ), Obx(() { - if (controller.manageAccountDashboardController.checkAvailableRuleFilterInSession()) { + if (controller.manageAccountDashboardController.isRuleFilterCapabilitySupported) { return Column(children: [ SettingFirstLevelTileBuilder( AccountMenuItem.emailRules.getName(context), @@ -70,7 +70,7 @@ class SettingsFirstLevelView extends GetWidget { } }), Obx(() { - if (controller.manageAccountDashboardController.checkAvailableForwardInSession()) { + if (controller.manageAccountDashboardController.isForwardCapabilitySupported) { return Column(children: [ SettingFirstLevelTileBuilder( AccountMenuItem.forward.getName(context), @@ -90,7 +90,7 @@ class SettingsFirstLevelView extends GetWidget { } }), Obx(() { - if (controller.manageAccountDashboardController.checkAvailableVacationInSession()) { + if (controller.manageAccountDashboardController.isVacationCapabilitySupported) { return Column(children: [ SettingFirstLevelTileBuilder( AccountMenuItem.vacation.getName(context), @@ -138,7 +138,7 @@ class SettingsFirstLevelView extends GetWidget { AppLocalizations.of(context).sign_out, _imagePaths.icSignOut, () => controller.manageAccountDashboardController.logout( - controller.manageAccountDashboardController.sessionCurrent.value, + controller.manageAccountDashboardController.sessionCurrent, controller.manageAccountDashboardController.accountId.value) ), ]), diff --git a/lib/features/manage_account/presentation/menu/settings/settings_view.dart b/lib/features/manage_account/presentation/menu/settings/settings_view.dart index 9b3b2ab37..fc515c4e4 100644 --- a/lib/features/manage_account/presentation/menu/settings/settings_view.dart +++ b/lib/features/manage_account/presentation/menu/settings/settings_view.dart @@ -194,19 +194,19 @@ class SettingsView extends GetWidget { case AccountMenuItem.languageAndRegion: return LanguageAndRegionView(); case AccountMenuItem.emailRules: - if (controller.manageAccountDashboardController.checkAvailableRuleFilterInSession()) { + if (controller.manageAccountDashboardController.isRuleFilterCapabilitySupported) { return EmailRulesView(); } else { return const SizedBox.shrink(); } case AccountMenuItem.forward: - if (controller.manageAccountDashboardController.checkAvailableForwardInSession()) { + if (controller.manageAccountDashboardController.isForwardCapabilitySupported) { return ForwardView(); } else { return const SizedBox.shrink(); } case AccountMenuItem.vacation: - if (controller.manageAccountDashboardController.checkAvailableVacationInSession()) { + if (controller.manageAccountDashboardController.isVacationCapabilitySupported) { return VacationView(); } else { return const SizedBox.shrink(); diff --git a/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart b/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart index 0ef6556c4..2354dda22 100644 --- a/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart +++ b/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart @@ -101,7 +101,7 @@ class IdentitiesController extends BaseController { void _initWorker() { accountIdWorker = ever(_accountDashBoardController.accountId, (accountId) { if (accountId is AccountId) { - final session = _accountDashBoardController.sessionCurrent.value; + final session = _accountDashBoardController.sessionCurrent; if (session != null) { _getAllIdentities(session, accountId); } @@ -126,7 +126,7 @@ class IdentitiesController extends BaseController { listAllIdentities.clear(); final accountId = _accountDashBoardController.accountId.value; - final session = _accountDashBoardController.sessionCurrent.value; + final session = _accountDashBoardController.sessionCurrent; if (accountId != null && session != null) { _getAllIdentities(session, accountId); } @@ -152,7 +152,7 @@ class IdentitiesController extends BaseController { void goToCreateNewIdentity(BuildContext context) async { final accountId = _accountDashBoardController.accountId.value; final userProfile = _accountDashBoardController.userProfile.value; - final session = _accountDashBoardController.sessionCurrent.value; + final session = _accountDashBoardController.sessionCurrent; if (accountId != null && session != null && userProfile != null) { final arguments = IdentityCreatorArguments(accountId, session, userProfile); @@ -227,7 +227,7 @@ class IdentitiesController extends BaseController { void _deleteIdentityAction(Identity identity) { popBack(); - final session = _accountDashBoardController.sessionCurrent.value; + final session = _accountDashBoardController.sessionCurrent; final accountId = _accountDashBoardController.accountId.value; if (accountId != null && session != null && identity.id != null) { consumeState(_deleteIdentityInteractor.execute(session, accountId, identity.id!)); @@ -272,7 +272,7 @@ class IdentitiesController extends BaseController { void goToEditIdentity(BuildContext context, Identity identity) async { final accountId = _accountDashBoardController.accountId.value; final userProfile = _accountDashBoardController.userProfile.value; - final session = _accountDashBoardController.sessionCurrent.value; + final session = _accountDashBoardController.sessionCurrent; if (accountId != null && session != null && userProfile != null) { final arguments = IdentityCreatorArguments( accountId,