diff --git a/lib/features/base/base_controller.dart b/lib/features/base/base_controller.dart index f5d191f3f..05a47874c 100644 --- a/lib/features/base/base_controller.dart +++ b/lib/features/base/base_controller.dart @@ -32,7 +32,6 @@ import 'package:tmail_ui_user/features/manage_account/domain/state/log_out_oidc_ import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/bindings/email_rules_interactor_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/forward/bindings/forwarding_interactors_bindings.dart'; -import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/bindings/mailbox_visibility_interactor_bindings.dart'; import 'package:tmail_ui_user/features/push_notification/domain/exceptions/fcm_exception.dart'; import 'package:tmail_ui_user/features/push_notification/domain/state/destroy_subscription_state.dart'; import 'package:tmail_ui_user/features/push_notification/domain/state/get_fcm_subscription_local.dart'; @@ -222,10 +221,6 @@ abstract class BaseController extends GetxController } } - void injectMailboxVisibilityBindings() { - MailboxVisibilityInteractorBindings().dependencies(); - } - void injectFCMBindings(Session? session, AccountId? accountId) async { try { requireCapability(session!, accountId!, [FirebaseCapability.fcmIdentifier]); diff --git a/lib/features/manage_account/presentation/forward/forward_controller.dart b/lib/features/manage_account/presentation/forward/forward_controller.dart index b9a99422f..65d044311 100644 --- a/lib/features/manage_account/presentation/forward/forward_controller.dart +++ b/lib/features/manage_account/presentation/forward/forward_controller.dart @@ -48,7 +48,6 @@ class ForwardController extends BaseController { bool get currentForwardLocalCopyState => currentForward.value?.localCopy ?? false; late ForwardRecipientController recipientController; - late Worker dashboardActionWorker; ForwardController() { recipientController = ForwardRecipientController( @@ -73,7 +72,6 @@ class ForwardController extends BaseController { @override void onClose() { recipientController.onClose(); - unregisterListenerWorker(); super.onClose(); } @@ -291,7 +289,7 @@ class ForwardController extends BaseController { } void registerListenerWorker() { - dashboardActionWorker = ever( + ever( accountDashBoardController.dashboardSettingAction, (action) { if (action is ClearAllInputForwarding) { @@ -301,8 +299,4 @@ class ForwardController extends BaseController { } ); } - - void unregisterListenerWorker() { - dashboardActionWorker.dispose(); - } } \ No newline at end of file diff --git a/lib/features/manage_account/presentation/mailbox_visibility/bindings/mailbox_visibility_bindings.dart b/lib/features/manage_account/presentation/mailbox_visibility/bindings/mailbox_visibility_bindings.dart index f18e443a3..442ad8566 100644 --- a/lib/features/manage_account/presentation/mailbox_visibility/bindings/mailbox_visibility_bindings.dart +++ b/lib/features/manage_account/presentation/mailbox_visibility/bindings/mailbox_visibility_bindings.dart @@ -3,19 +3,23 @@ import 'package:tmail_ui_user/features/mailbox/domain/usecases/get_all_mailbox_i import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree_builder.dart'; import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_name_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/bindings/mailbox_visibility_interactor_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart'; class MailboxVisibilityBindings extends Bindings { @override void dependencies() { + MailboxVisibilityInteractorBindings().dependencies(); + + _bindingsUtils(); + Get.lazyPut(() => MailboxVisibilityController( Get.find(), Get.find(), Get.find(), Get.find(), )); - _bindingsUtils(); } void _bindingsUtils() { diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart b/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart index b6a20c910..84a1eba34 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart @@ -25,7 +25,6 @@ import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_ import 'package:tmail_ui_user/features/manage_account/data/repository/manage_account_repository_impl.dart'; import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart'; -import 'package:tmail_ui_user/features/manage_account/presentation/language_and_region/language_and_region_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/menu/manage_account_menu_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_bindings.dart'; @@ -41,16 +40,15 @@ class ManageAccountDashBoardBindings extends BaseBindings { SettingsBindings().dependencies(); ManageAccountMenuBindings().dependencies(); ProfileBindings().dependencies(); - LanguageAndRegionBindings().dependencies(); } @override void bindingsController() { - Get.lazyPut(() => ManageAccountDashBoardController( - Get.find(), - Get.find(), - Get.find(), - Get.find() + Get.put(ManageAccountDashBoardController( + Get.find(), + Get.find(), + Get.find(), + Get.find() )); } 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 ef38fbaf0..e9cdaab38 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart @@ -26,10 +26,12 @@ import 'package:tmail_ui_user/features/manage_account/presentation/action/dashbo import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/bindings/email_rules_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/extensions/vacation_response_extension.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/forward/bindings/forward_bindings.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/language_and_region/language_and_region_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/bindings/mailbox_visibility_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/manage_account_arguments.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/settings_page_level.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/profiles/profiles_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_controller_bindings.dart'; import 'package:tmail_ui_user/main/error/capability_validator.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; @@ -68,9 +70,9 @@ class ManageAccountDashBoardController extends ReloadableController { @override void onReady() { + _initialPageLevel(); _getArguments(); _getAppVersion(); - _initialPageLevel(); super.onReady(); } @@ -97,26 +99,18 @@ class ManageAccountDashBoardController extends ReloadableController { sessionCurrent = session; accountId.value = session.accounts.keys.first; _getUserProfile(); - injectAutoCompleteBindings(sessionCurrent, accountId.value); - injectForwardBindings(sessionCurrent, accountId.value); - injectRuleFilterBindings(sessionCurrent, accountId.value); - injectMailboxVisibilityBindings(); - injectVacationBindings(sessionCurrent, accountId.value); + _bindingInteractorForMenuItemView(sessionCurrent, accountId.value); _getVacationResponse(); } void _getArguments() { final arguments = Get.arguments; - log('ManageAccountDashBoardController::_getAccountIdAndUserProfile(): $arguments'); + log('ManageAccountDashBoardController::_getArguments(): $arguments'); if (arguments is ManageAccountArguments) { sessionCurrent = arguments.session; accountId.value = arguments.session?.accounts.keys.first; _getUserProfile(); - injectAutoCompleteBindings(sessionCurrent, accountId.value); - injectForwardBindings(sessionCurrent, accountId.value); - injectRuleFilterBindings(sessionCurrent, accountId.value); - injectMailboxVisibilityBindings(); - injectVacationBindings(sessionCurrent, accountId.value); + _bindingInteractorForMenuItemView(sessionCurrent, accountId.value); _getVacationResponse(); if (arguments.menuSettingCurrent != null) { _goToSettingMenuCurrent(arguments.menuSettingCurrent!); @@ -136,6 +130,13 @@ class ManageAccountDashBoardController extends ReloadableController { } } + void _bindingInteractorForMenuItemView(Session? session, AccountId? accountId) { + injectAutoCompleteBindings(session, accountId); + injectVacationBindings(session, accountId); + injectForwardBindings(session, accountId); + injectRuleFilterBindings(session, accountId); + } + @override void injectVacationBindings(Session? session, AccountId? accountId) { try { @@ -170,19 +171,38 @@ class ManageAccountDashBoardController extends ReloadableController { } void selectAccountMenuItem(AccountMenuItem newAccountMenuItem) { + settingsPageLevel.value = newAccountMenuItem == AccountMenuItem.none + ? SettingsPageLevel.universal + : SettingsPageLevel.level1; + clearInputFormView(); - if (newAccountMenuItem == AccountMenuItem.emailRules) { - EmailRulesBindings().dependencies(); - } - if (newAccountMenuItem == AccountMenuItem.forward) { - ForwardBindings().dependencies(); - } - if (newAccountMenuItem == AccountMenuItem.mailboxVisibility) { - MailboxVisibilityBindings().dependencies(); - } + _bindingControllerMenuItemView(newAccountMenuItem); accountMenuItemSelected.value = newAccountMenuItem; } + void _bindingControllerMenuItemView(AccountMenuItem item) { + switch (item) { + case AccountMenuItem.profiles: + ProfileBindings().dependencies(); + break; + case AccountMenuItem.languageAndRegion: + LanguageAndRegionBindings().dependencies(); + break; + case AccountMenuItem.emailRules: + EmailRulesBindings().dependencies(); + break; + case AccountMenuItem.forward: + ForwardBindings().dependencies(); + break; + case AccountMenuItem.mailboxVisibility: + MailboxVisibilityBindings().dependencies(); + break; + case AccountMenuItem.vacation: + case AccountMenuItem.none: + break; + } + } + void clearInputFormView() { switch(accountMenuItemSelected.value) { case AccountMenuItem.forward: @@ -194,20 +214,7 @@ class ManageAccountDashBoardController extends ReloadableController { } void _goToSettingMenuCurrent(AccountMenuItem accountMenuItem) { - if (accountMenuItem == AccountMenuItem.emailRules) { - EmailRulesBindings().dependencies(); - } - if (accountMenuItem == AccountMenuItem.forward) { - ForwardBindings().dependencies(); - } - if (accountMenuItem == AccountMenuItem.mailboxVisibility) { - MailboxVisibilityBindings().dependencies(); - } - accountMenuItemSelected.value = accountMenuItem; - if (currentContext != null && - !_responsiveUtils.isDesktop(currentContext!)) { - settingsPageLevel.value = SettingsPageLevel.level1; - } + selectAccountMenuItem(accountMenuItem); } void goToSettings() { diff --git a/lib/features/manage_account/presentation/menu/manage_account_menu_bindings.dart b/lib/features/manage_account/presentation/menu/manage_account_menu_bindings.dart index 037b0ab21..b5d1b9231 100644 --- a/lib/features/manage_account/presentation/menu/manage_account_menu_bindings.dart +++ b/lib/features/manage_account/presentation/menu/manage_account_menu_bindings.dart @@ -1,31 +1,10 @@ import 'package:get/get.dart'; -import 'package:tmail_ui_user/features/base/base_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/menu/manage_account_menu_controller.dart'; -class ManageAccountMenuBindings extends BaseBindings { +class ManageAccountMenuBindings extends Bindings { @override - void bindingsController() { - Get.lazyPut(() => ManageAccountMenuController()); - } - - @override - void bindingsDataSource() { - } - - @override - void bindingsDataSourceImpl() { - } - - @override - void bindingsInteractor() { - } - - @override - void bindingsRepository() { - } - - @override - void bindingsRepositoryImpl() { + void dependencies() { + Get.put(ManageAccountMenuController()); } } \ No newline at end of file diff --git a/lib/features/manage_account/presentation/menu/manage_account_menu_controller.dart b/lib/features/manage_account/presentation/menu/manage_account_menu_controller.dart index 1cfa6a16a..b31c483b8 100644 --- a/lib/features/manage_account/presentation/menu/manage_account_menu_controller.dart +++ b/lib/features/manage_account/presentation/menu/manage_account_menu_controller.dart @@ -1,68 +1,59 @@ +import 'package:core/core.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:tmail_ui_user/features/base/base_controller.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart'; +import 'package:tmail_ui_user/main/routes/route_navigation.dart'; -class ManageAccountMenuController extends BaseController { +class ManageAccountMenuController extends GetxController { final dashBoardController = Get.find(); - - late Worker sessionWorker; + final _responsiveUtils = Get.find(); final listAccountMenuItem = RxList([ AccountMenuItem.profiles, - AccountMenuItem.vacation, + AccountMenuItem.mailboxVisibility, AccountMenuItem.languageAndRegion, ]); - void _initWorker() { - sessionWorker = ever(dashBoardController.accountId, (_) { - _createListAccountMenu(); + void _registerObxStreamListener() { + ever(dashBoardController.accountId, (accountId) { + if (accountId != null) { + _createListAccountMenu(); + } }); } - void _clearWorker() { - sessionWorker.call(); - } - @override void onInit() { - _initWorker(); - _createListAccountMenu(); + _registerObxStreamListener(); super.onInit(); } - void _createListAccountMenu(){ - listAccountMenuItem.clear(); - listAccountMenuItem.add(AccountMenuItem.profiles); - if (dashBoardController.isRuleFilterCapabilitySupported) { - listAccountMenuItem.add(AccountMenuItem.emailRules); - } - if (dashBoardController.isForwardCapabilitySupported) { - listAccountMenuItem.add(AccountMenuItem.forward); - } - if (dashBoardController.isVacationCapabilitySupported) { - listAccountMenuItem.add(AccountMenuItem.vacation); - } - listAccountMenuItem.addAll( - [ - AccountMenuItem.mailboxVisibility, - AccountMenuItem.languageAndRegion - ] - ); - } + void _createListAccountMenu() { + final newListMenuSetting = [ + AccountMenuItem.profiles, + if (dashBoardController.isRuleFilterCapabilitySupported) + AccountMenuItem.emailRules, + if (dashBoardController.isForwardCapabilitySupported) + AccountMenuItem.forward, + if (dashBoardController.isVacationCapabilitySupported) + AccountMenuItem.vacation, + AccountMenuItem.mailboxVisibility, + AccountMenuItem.languageAndRegion + ]; + listAccountMenuItem.value = newListMenuSetting; - @override - void onClose() { - _clearWorker(); - super.onClose(); + if (listAccountMenuItem.isNotEmpty) { + if (currentContext != null && _responsiveUtils.isWebDesktop(currentContext!)) { + selectAccountMenuItem(listAccountMenuItem.first); + } else { + selectAccountMenuItem(AccountMenuItem.none); + } + } } - @override - void onDone() {} - void selectAccountMenuItem(AccountMenuItem newAccountMenuItem) { dashBoardController.selectAccountMenuItem(newAccountMenuItem); } diff --git a/lib/features/manage_account/presentation/menu/manage_account_menu_view.dart b/lib/features/manage_account/presentation/menu/manage_account_menu_view.dart index 7bdd7cc8a..ed6562ff8 100644 --- a/lib/features/manage_account/presentation/menu/manage_account_menu_view.dart +++ b/lib/features/manage_account/presentation/menu/manage_account_menu_view.dart @@ -89,24 +89,29 @@ class ManageAccountMenuView extends GetWidget { AppLocalizations.of(context).manage_account, style: const TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 17))), const SizedBox(height: 12), - Obx( - () => ListView.builder( + Obx(() { + if (controller.listAccountMenuItem.isNotEmpty) { + return ListView.builder( + key: const Key('list_manage_account_menu_item'), padding: EdgeInsets.only( left: AppUtils.isDirectionRTL(context) ? 8 : 16, right: AppUtils.isDirectionRTL(context) ? 16 : 8 ), - key: const Key('list_manage_account_property'), shrinkWrap: true, itemCount: controller.listAccountMenuItem.length, - itemBuilder: (context, index) => Obx(() => AccountMenuItemTileBuilder( - context, - _imagePaths, - _responsiveUtils, - controller.listAccountMenuItem[index], + itemBuilder: (context, index) => Obx(() { + final menuItem = controller.listAccountMenuItem[index]; + return AccountMenuItemTileBuilder( + menuItem, controller.dashBoardController.accountMenuItemSelected.value, - onSelectAccountMenuItemAction: (newAccountMenuItem) => - controller.selectAccountMenuItem(newAccountMenuItem)))), - ), + onSelectAccountMenuItemAction: controller.selectAccountMenuItem + ); + }) + ); + } else { + return const SizedBox.shrink(); + } + }), const Padding( padding: EdgeInsets.symmetric(vertical: 16), child: Divider(color: AppColor.lineItemListColor, height: 0.5, thickness: 0.2)), @@ -117,7 +122,7 @@ class ManageAccountMenuView extends GetWidget { ), child: InkWell( onTap: () { - controller.logout( + controller.dashBoardController.logout( controller.dashBoardController.sessionCurrent, controller.dashBoardController.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 fc515c4e4..33469dfff 100644 --- a/lib/features/manage_account/presentation/menu/settings/settings_view.dart +++ b/lib/features/manage_account/presentation/menu/settings/settings_view.dart @@ -55,6 +55,9 @@ class SettingsView extends GetWidget { top: 16), fromAccountDashBoard: true, vacationResponse: controller.manageAccountDashboardController.vacationResponse.value!, + actionGotoVacationSetting: !controller.manageAccountDashboardController.inVacationSettings() + ? () => controller.manageAccountDashboardController.selectAccountMenuItem(AccountMenuItem.vacation) + : null, actionEndNow: () => controller.manageAccountDashboardController.disableVacationResponder()); } else if ((controller.manageAccountDashboardController.vacationResponse.value?.vacationResponderIsWaiting == true || controller.manageAccountDashboardController.vacationResponse.value?.vacationResponderIsStopped == true) diff --git a/lib/features/manage_account/presentation/menu/widgets/account_menu_item_tile_builder.dart b/lib/features/manage_account/presentation/menu/widgets/account_menu_item_tile_builder.dart index a48b7466b..95945da86 100644 --- a/lib/features/manage_account/presentation/menu/widgets/account_menu_item_tile_builder.dart +++ b/lib/features/manage_account/presentation/menu/widgets/account_menu_item_tile_builder.dart @@ -1,61 +1,71 @@ import 'package:core/core.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:get/get.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart'; typedef OnSelectAccountMenuItemAction = void Function(AccountMenuItem); class AccountMenuItemTileBuilder extends StatelessWidget { - final BuildContext _context; - final ImagePaths _imagePaths; - final ResponsiveUtils _responsiveUtils; final AccountMenuItem _menuItem; - final AccountMenuItem _menuItemSelected; + final AccountMenuItem? _menuItemSelected; final OnSelectAccountMenuItemAction? onSelectAccountMenuItemAction; const AccountMenuItemTileBuilder( - this._context, - this._imagePaths, - this._responsiveUtils, this._menuItem, this._menuItemSelected, - {Key? key, this.onSelectAccountMenuItemAction} + { + Key? key, + this.onSelectAccountMenuItemAction + } ) : super(key: key); @override Widget build(BuildContext context) { + final imagePaths = Get.find(); + return Padding( padding: const EdgeInsets.only(top: 6), child: InkWell( onTap: () => onSelectAccountMenuItemAction?.call(_menuItem), child: Container( - key: const Key('account_menu_item_tile'), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), - color: backgroundColorItem), - padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), - child: Column(children: [ - Row(children: [ - SvgPicture.asset(_menuItem.getIcon(_imagePaths), - width: 20, - height: 20, - fit: BoxFit.fill), - const SizedBox(width: 12), - Expanded(child: Text(_menuItem.getName(context), - style: const TextStyle(fontWeight: FontWeight.normal, fontSize: 15, color: Colors.black))) - ]), - ]) + key: const Key('account_menu_item_tile'), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: _getBackgroundColorItem(context)), + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + child: Column(children: [ + Row(children: [ + SvgPicture.asset( + _menuItem.getIcon(imagePaths), + width: 20, + height: 20, + fit: BoxFit.fill), + const SizedBox(width: 12), + Expanded(child: Text( + _menuItem.getName(context), + style: const TextStyle( + fontWeight: FontWeight.normal, + fontSize: 15, + color: Colors.black + ) + )) + ]), + ]) )), ); } - Color get backgroundColorItem { + Color _getBackgroundColorItem(BuildContext context) { + final responsiveUtils = Get.find(); + if (_menuItemSelected == _menuItem) { return AppColor.colorBgMailboxSelected; - } - return _responsiveUtils.isWebDesktop(_context) + } else { + return responsiveUtils.isWebDesktop(context) ? AppColor.colorBgDesktop : Colors.white; + } } } \ No newline at end of file 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 2354dda22..3b7a1ae73 100644 --- a/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart +++ b/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart @@ -28,7 +28,6 @@ import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_ident import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/identity_action_type.dart'; -import 'package:tmail_ui_user/features/manage_account/presentation/model/settings_page_level.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/widgets/delete_identity_dialog_builder.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/routes/app_routes.dart'; @@ -51,8 +50,6 @@ class IdentitiesController extends BaseController { final identitySelected = Rxn(); final listAllIdentities = [].obs; - late Worker accountIdWorker; - IdentitiesController( this._getAllIdentitiesInteractor, this._deleteIdentityInteractor, @@ -64,16 +61,10 @@ class IdentitiesController extends BaseController { @override void onInit() { - _initWorker(); + _registerObxStreamListener(); super.onInit(); } - @override - void onClose() { - _clearWorker(); - super.onClose(); - } - @override void onDone() { viewState.value.fold( @@ -98,23 +89,13 @@ class IdentitiesController extends BaseController { ); } - void _initWorker() { - accountIdWorker = ever(_accountDashBoardController.accountId, (accountId) { - if (accountId is AccountId) { - final session = _accountDashBoardController.sessionCurrent; - if (session != null) { - _getAllIdentities(session, accountId); - } + void _registerObxStreamListener() { + ever(_accountDashBoardController.accountId, (accountId) { + final session = _accountDashBoardController.sessionCurrent; + if (accountId != null && session != null) { + _getAllIdentities(session, accountId); } }); - - if (_accountDashBoardController.settingsPageLevel.value == SettingsPageLevel.level1) { - _accountDashBoardController.accountId.refresh(); - } - } - - void _clearWorker() { - accountIdWorker.call(); } void _getAllIdentities(Session session, AccountId accountId) { diff --git a/lib/features/manage_account/presentation/profiles/identities/identity_bindings.dart b/lib/features/manage_account/presentation/profiles/identities/identity_bindings.dart index 6cfc2de22..dde20f9c5 100644 --- a/lib/features/manage_account/presentation/profiles/identities/identity_bindings.dart +++ b/lib/features/manage_account/presentation/profiles/identities/identity_bindings.dart @@ -14,7 +14,7 @@ class IdentityBindings extends Bindings { void dependencies() { IdentityInteractorsBindings().dependencies(); - Get.lazyPut(() => IdentitiesController( + Get.put(IdentitiesController( Get.find(), Get.find(), Get.find(), diff --git a/lib/features/manage_account/presentation/profiles/profiles_bindings.dart b/lib/features/manage_account/presentation/profiles/profiles_bindings.dart index c180c9e45..e2b4f5477 100644 --- a/lib/features/manage_account/presentation/profiles/profiles_bindings.dart +++ b/lib/features/manage_account/presentation/profiles/profiles_bindings.dart @@ -1,38 +1,10 @@ import 'package:get/get.dart'; -import 'package:tmail_ui_user/features/base/base_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identity_bindings.dart'; -import 'package:tmail_ui_user/features/manage_account/presentation/profiles/profiles_controller.dart'; -class ProfileBindings extends BaseBindings { +class ProfileBindings extends Bindings { @override void dependencies() { - super.dependencies(); IdentityBindings().dependencies(); } - - @override - void bindingsController() { - Get.lazyPut(() => ProfilesController()); - } - - @override - void bindingsDataSource() { - } - - @override - void bindingsDataSourceImpl() { - } - - @override - void bindingsInteractor() { - } - - @override - void bindingsRepository() { - } - - @override - void bindingsRepositoryImpl() { - } } \ No newline at end of file diff --git a/lib/features/manage_account/presentation/profiles/profiles_controller.dart b/lib/features/manage_account/presentation/profiles/profiles_controller.dart deleted file mode 100644 index e7c4436db..000000000 --- a/lib/features/manage_account/presentation/profiles/profiles_controller.dart +++ /dev/null @@ -1,8 +0,0 @@ - -import 'package:tmail_ui_user/features/base/base_controller.dart'; - -class ProfilesController extends BaseController { - - @override - void onDone() {} -} \ No newline at end of file diff --git a/lib/features/manage_account/presentation/profiles/profiles_view.dart b/lib/features/manage_account/presentation/profiles/profiles_view.dart index f46c045e2..b743916ca 100644 --- a/lib/features/manage_account/presentation/profiles/profiles_view.dart +++ b/lib/features/manage_account/presentation/profiles/profiles_view.dart @@ -6,10 +6,9 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/base/setting_detail_view_builder.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identities_view.dart'; -import 'package:tmail_ui_user/features/manage_account/presentation/profiles/profiles_controller.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/profiles/widgets/profiles_header_widget.dart'; -class ProfilesView extends GetWidget { +class ProfilesView extends StatelessWidget { final _responsiveUtils = Get.find(); final _imagePaths = Get.find(); diff --git a/lib/features/manage_account/presentation/vacation/vacation_controller.dart b/lib/features/manage_account/presentation/vacation/vacation_controller.dart index c0cf034ca..1166f81fc 100644 --- a/lib/features/manage_account/presentation/vacation/vacation_controller.dart +++ b/lib/features/manage_account/presentation/vacation/vacation_controller.dart @@ -21,8 +21,6 @@ import 'package:tmail_ui_user/features/manage_account/presentation/model/vacatio import 'package:tmail_ui_user/features/manage_account/presentation/model/vacation/vacation_message_type.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/vacation/vacation_presentation.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/vacation/vacation_responder_status.dart'; -import 'package:tmail_ui_user/features/manage_account/presentation/vacation/utils/vacation_utils.dart'; -import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_controller_bindings.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; @@ -31,11 +29,11 @@ class VacationController extends BaseController { final _accountDashBoardController = Get.find(); final _appToast = Get.find(); final _settingController = Get.find(); - final _richTextControllerForWeb = Get.find(tag: VacationUtils.vacationTagName); final GetAllVacationInteractor _getAllVacationInteractor; final UpdateVacationInteractor _updateVacationInteractor; final VerifyNameInteractor _verifyNameInteractor; + final RichTextWebController _richTextControllerForWeb; final vacationPresentation = VacationPresentation.initialize().obs; final errorMessageBody = Rxn(); @@ -51,14 +49,13 @@ class VacationController extends BaseController { VacationResponse? currentVacation; String? _vacationMessageHtmlText; - late Worker vacationWorker; - final ScrollController scrollController = ScrollController(); VacationController( this._getAllVacationInteractor, this._updateVacationInteractor, - this._verifyNameInteractor + this._verifyNameInteractor, + this._richTextControllerForWeb ); String? get vacationMessageHtmlText => _vacationMessageHtmlText; @@ -92,7 +89,7 @@ class VacationController extends BaseController { } void _initWorker() { - vacationWorker = ever(_accountDashBoardController.vacationResponse, (vacation) { + ever(_accountDashBoardController.vacationResponse, (vacation) { if (vacation is VacationResponse) { currentVacation = vacation; final newVacationPresentation = currentVacation?.toVacationPresentation(); @@ -387,9 +384,7 @@ class VacationController extends BaseController { messageTextController.dispose(); subjectTextController.dispose(); richTextControllerForMobile.dispose(); - vacationWorker.dispose(); scrollController.dispose(); - VacationControllerBindings().dispose(); super.onClose(); } } \ No newline at end of file diff --git a/lib/features/manage_account/presentation/vacation/vacation_controller_bindings.dart b/lib/features/manage_account/presentation/vacation/vacation_controller_bindings.dart index 1288fd15a..9721a3efd 100644 --- a/lib/features/manage_account/presentation/vacation/vacation_controller_bindings.dart +++ b/lib/features/manage_account/presentation/vacation/vacation_controller_bindings.dart @@ -1,5 +1,4 @@ import 'package:get/get.dart'; -import 'package:tmail_ui_user/features/base/base_bindings.dart'; import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_web_controller.dart'; import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_name_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_vacation_interactor.dart'; @@ -7,39 +6,17 @@ import 'package:tmail_ui_user/features/manage_account/domain/usecases/update_vac import 'package:tmail_ui_user/features/manage_account/presentation/vacation/utils/vacation_utils.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_controller.dart'; -class VacationControllerBindings extends BaseBindings { +class VacationControllerBindings extends Bindings { @override - void bindingsController() { - Get.lazyPut(() => RichTextWebController(), tag: VacationUtils.vacationTagName); - Get.lazyPut(() => VacationController( - Get.find(), - Get.find(), - Get.find())); - } - - @override - void bindingsDataSource() { - } - - @override - void bindingsDataSourceImpl() { - } - - @override - void bindingsInteractor() { + void dependencies() { Get.lazyPut(() => VerifyNameInteractor()); - } - - @override - void bindingsRepository() { - } - - @override - void bindingsRepositoryImpl() { - } - - void dispose() { - Get.delete(tag: VacationUtils.vacationTagName); + Get.lazyPut(() => RichTextWebController(), tag: VacationUtils.vacationTagName); + Get.put(VacationController( + Get.find(), + Get.find(), + Get.find(), + Get.find(tag: VacationUtils.vacationTagName), + )); } } \ No newline at end of file diff --git a/lib/features/quotas/presentation/widget/quotas_warning_banner_widget.dart b/lib/features/quotas/presentation/widget/quotas_warning_banner_widget.dart index f8359f5cd..a87e049ea 100644 --- a/lib/features/quotas/presentation/widget/quotas_warning_banner_widget.dart +++ b/lib/features/quotas/presentation/widget/quotas_warning_banner_widget.dart @@ -6,7 +6,7 @@ import 'package:tmail_ui_user/features/quotas/presentation/quotas_controller.dar class QuotasWarningBannerWidget extends GetWidget { const QuotasWarningBannerWidget({this.margin ,Key? key}) : super(key: key); - final EdgeInsetsGeometry? margin; + final EdgeInsets? margin; @override Widget build(BuildContext context) { @@ -14,7 +14,7 @@ class QuotasWarningBannerWidget extends GetWidget { () => controller.enableShowWarningQuotas ? Container( padding: const EdgeInsets.all(16), - margin: margin ?? const EdgeInsets.only(left: 12, right: 12, top: 8), + margin: margin ?? const EdgeInsets.only(left: 12, right: 12, bottom: 12), decoration: BoxDecoration( color: controller.quotasState.value.getBackgroundColorWarningBanner(), borderRadius: const BorderRadius.all(Radius.circular(10)), diff --git a/lib/features/thread/presentation/thread_view.dart b/lib/features/thread/presentation/thread_view.dart index 549e5a09f..e86f14fb4 100644 --- a/lib/features/thread/presentation/thread_view.dart +++ b/lib/features/thread/presentation/thread_view.dart @@ -108,13 +108,11 @@ class ThreadView extends GetWidget return Obx(() { final vacation = controller.mailboxDashBoardController.vacationResponse.value; if (vacation?.vacationResponderIsValid == true) { - return Padding( - padding: const EdgeInsets.only(bottom: 8, top: 4), - child: VacationNotificationMessageWidget( - vacationResponse: vacation!, - actionGotoVacationSetting: () => controller.mailboxDashBoardController.goToVacationSetting(), - actionEndNow: () => controller.mailboxDashBoardController.disableVacationResponder()), - ); + return VacationNotificationMessageWidget( + margin: const EdgeInsets.only(bottom: 12, left: 12, right: 12), + vacationResponse: vacation!, + actionGotoVacationSetting: controller.mailboxDashBoardController.goToVacationSetting, + actionEndNow: controller.mailboxDashBoardController.disableVacationResponder); } else { return const SizedBox.shrink(); } diff --git a/lib/features/thread/presentation/widgets/spam_report_banner_widget.dart b/lib/features/thread/presentation/widgets/spam_report_banner_widget.dart index e6e66e155..26b4afbd8 100644 --- a/lib/features/thread/presentation/widgets/spam_report_banner_widget.dart +++ b/lib/features/thread/presentation/widgets/spam_report_banner_widget.dart @@ -20,7 +20,7 @@ class SpamReportBannerWidget extends StatelessWidget { } return Container( height: 124, - margin: const EdgeInsets.only(left: 16, right: 16, bottom: 16), + margin: const EdgeInsets.only(left: 12, right: 12, bottom: 12), decoration: BoxDecoration( borderRadius: BorderRadius.circular(12), border: Border.all(color: AppColor.colorBorderBodyThread, width: 1),