TF-1611 Fix can not display correctly menu screen when open setting view

(cherry picked from commit 2ba04f782ef17dac3b93930dccd3723f13d6836d)
This commit is contained in:
dab246
2023-03-24 01:13:51 +07:00
committed by Dat Vu
parent bc01ab9b0f
commit fed514e40b
20 changed files with 174 additions and 274 deletions
-5
View File
@@ -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]);
@@ -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();
}
}
@@ -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<TreeBuilder>(),
Get.find<VerifyNameInteractor>(),
Get.find<GetAllMailboxInteractor>(),
Get.find<RefreshAllMailboxInteractor>(),
));
_bindingsUtils();
}
void _bindingsUtils() {
@@ -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<LogoutOidcInteractor>(),
Get.find<DeleteAuthorityOidcInteractor>(),
Get.find<GetAuthenticatedAccountInteractor>(),
Get.find<UpdateAuthenticationAccountInteractor>()
Get.put(ManageAccountDashBoardController(
Get.find<LogoutOidcInteractor>(),
Get.find<DeleteAuthorityOidcInteractor>(),
Get.find<GetAuthenticatedAccountInteractor>(),
Get.find<UpdateAuthenticationAccountInteractor>()
));
}
@@ -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() {
@@ -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());
}
}
@@ -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<ManageAccountDashBoardController>();
late Worker sessionWorker;
final _responsiveUtils = Get.find<ResponsiveUtils>();
final listAccountMenuItem = RxList<AccountMenuItem>([
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);
}
@@ -89,24 +89,29 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
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<ManageAccountMenuController> {
),
child: InkWell(
onTap: () {
controller.logout(
controller.dashBoardController.logout(
controller.dashBoardController.sessionCurrent,
controller.dashBoardController.accountId.value
);
@@ -55,6 +55,9 @@ class SettingsView extends GetWidget<SettingsController> {
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)
@@ -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<ImagePaths>();
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<ResponsiveUtils>();
if (_menuItemSelected == _menuItem) {
return AppColor.colorBgMailboxSelected;
}
return _responsiveUtils.isWebDesktop(_context)
} else {
return responsiveUtils.isWebDesktop(context)
? AppColor.colorBgDesktop
: Colors.white;
}
}
}
@@ -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<Identity>();
final listAllIdentities = <Identity>[].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) {
@@ -14,7 +14,7 @@ class IdentityBindings extends Bindings {
void dependencies() {
IdentityInteractorsBindings().dependencies();
Get.lazyPut(() => IdentitiesController(
Get.put(IdentitiesController(
Get.find<GetAllIdentitiesInteractor>(),
Get.find<DeleteIdentityInteractor>(),
Get.find<CreateNewIdentityInteractor>(),
@@ -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() {
}
}
@@ -1,8 +0,0 @@
import 'package:tmail_ui_user/features/base/base_controller.dart';
class ProfilesController extends BaseController {
@override
void onDone() {}
}
@@ -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<ProfilesController> {
class ProfilesView extends StatelessWidget {
final _responsiveUtils = Get.find<ResponsiveUtils>();
final _imagePaths = Get.find<ImagePaths>();
@@ -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<ManageAccountDashBoardController>();
final _appToast = Get.find<AppToast>();
final _settingController = Get.find<SettingsController>();
final _richTextControllerForWeb = Get.find<RichTextWebController>(tag: VacationUtils.vacationTagName);
final GetAllVacationInteractor _getAllVacationInteractor;
final UpdateVacationInteractor _updateVacationInteractor;
final VerifyNameInteractor _verifyNameInteractor;
final RichTextWebController _richTextControllerForWeb;
final vacationPresentation = VacationPresentation.initialize().obs;
final errorMessageBody = Rxn<String>();
@@ -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();
}
}
@@ -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<GetAllVacationInteractor>(),
Get.find<UpdateVacationInteractor>(),
Get.find<VerifyNameInteractor>()));
}
@override
void bindingsDataSource() {
}
@override
void bindingsDataSourceImpl() {
}
@override
void bindingsInteractor() {
void dependencies() {
Get.lazyPut(() => VerifyNameInteractor());
}
@override
void bindingsRepository() {
}
@override
void bindingsRepositoryImpl() {
}
void dispose() {
Get.delete<RichTextWebController>(tag: VacationUtils.vacationTagName);
Get.lazyPut(() => RichTextWebController(), tag: VacationUtils.vacationTagName);
Get.put(VacationController(
Get.find<GetAllVacationInteractor>(),
Get.find<UpdateVacationInteractor>(),
Get.find<VerifyNameInteractor>(),
Get.find<RichTextWebController>(tag: VacationUtils.vacationTagName),
));
}
}
@@ -6,7 +6,7 @@ import 'package:tmail_ui_user/features/quotas/presentation/quotas_controller.dar
class QuotasWarningBannerWidget extends GetWidget<QuotasController> {
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<QuotasController> {
() => 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)),
@@ -108,13 +108,11 @@ class ThreadView extends GetWidget<ThreadController>
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();
}
@@ -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),