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 b1892fa31..8d5f0cdd8 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart @@ -24,8 +24,8 @@ import 'package:tmail_ui_user/features/manage_account/presentation/extensions/va import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_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/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/settings_page_level.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/routes/app_routes.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; @@ -200,4 +200,8 @@ class ManageAccountDashBoardController extends ReloadableController { log('ManageAccountDashBoardController::_handleUpdateVacationSuccess(): $vacationResponse'); } } + + bool inVacationSettings() { + return accountMenuItemSelected.value == AccountMenuItem.vacation; + } } \ No newline at end of file diff --git a/lib/features/manage_account/presentation/menu/settings/settings_controller.dart b/lib/features/manage_account/presentation/menu/settings/settings_controller.dart index 07822e1f5..110deb829 100644 --- a/lib/features/manage_account/presentation/menu/settings/settings_controller.dart +++ b/lib/features/manage_account/presentation/menu/settings/settings_controller.dart @@ -15,6 +15,7 @@ class SettingsController extends GetxController { void backToUniversalSettings() { log('SettingsController::backToUniversalSettings()'); + manageAccountDashboardController.selectAccountMenuItem(AccountMenuItem.none); manageAccountDashboardController.settingsPageLevel.value = SettingsPageLevel.universal; } } \ No newline at end of file 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 048a3cab2..de3a56e5c 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 @@ -106,6 +106,11 @@ class SettingsFirstLevelView extends GetWidget { indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils), endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils) ), + SettingFirstLevelTileBuilder( + AppLocalizations.of(context).sign_out, + _imagePaths.icSignOut, + controller.manageAccountDashboardController.logoutAction + ), ]); } } 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 829522cb9..389afd8b8 100644 --- a/lib/features/manage_account/presentation/menu/settings/settings_view.dart +++ b/lib/features/manage_account/presentation/menu/settings/settings_view.dart @@ -3,12 +3,12 @@ import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/views/button/icon_button_web.dart'; -import 'package:core/utils/app_logger.dart'; import 'package:core/utils/build_utils.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/email_rules/email_rules_view.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/forward_view.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/language_and_region/language_and_region_view.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_controller.dart'; @@ -18,6 +18,7 @@ import 'package:tmail_ui_user/features/manage_account/presentation/model/account 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_view.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_view.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/vacation/widgets/vacation_notification_message_widget.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; typedef CloseSettingsViewAction = void Function(); @@ -31,7 +32,6 @@ class SettingsView extends GetWidget { @override Widget build(BuildContext context) { - log('SettingsView::build(): ${controller.manageAccountDashboardController.userProfile.value}'); return SafeArea( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -42,6 +42,35 @@ class SettingsView extends GetWidget { padding: SettingsUtils.getPaddingInFirstLevel(context, _responsiveUtils), child: _buildAppbar(context))), const Divider(color: AppColor.colorDividerComposer, height: 1), + Obx(() { + if (controller.manageAccountDashboardController.vacationResponse.value?.vacationResponderIsValid == true) { + return VacationNotificationMessageWidget( + margin: const EdgeInsets.only( + left: BuildUtils.isWeb ? 24 : 16, + right: BuildUtils.isWeb ? 24 : 16, + top: 16), + vacationResponse: controller.manageAccountDashboardController.vacationResponse.value!, + action: () => controller.manageAccountDashboardController.disableVacationResponder()); + } else if ((controller.manageAccountDashboardController.vacationResponse.value?.vacationResponderIsWaiting == true + || controller.manageAccountDashboardController.vacationResponse.value?.vacationResponderIsStopped == true) + && controller.manageAccountDashboardController.inVacationSettings()) { + return VacationNotificationMessageWidget( + margin: const EdgeInsets.only( + left: BuildUtils.isWeb ? 24 : 16, + right: BuildUtils.isWeb ? 24 : 16, + top: 16), + vacationResponse: controller.manageAccountDashboardController.vacationResponse.value!, + padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 16), + fontWeight: FontWeight.normal, + backgroundColor: Colors.yellow, + leadingIcon: const Padding( + padding: EdgeInsets.only(right: 16), + child: Icon(Icons.timer, size: 20), + )); + } else { + return const SizedBox.shrink(); + } + }), Expanded(child: Padding( padding: !BuildUtils.isWeb && _responsiveUtils.isPortraitMobile(context) ? const EdgeInsets.only(left: 8) diff --git a/lib/features/manage_account/presentation/model/account_menu_item.dart b/lib/features/manage_account/presentation/model/account_menu_item.dart index e0a64ee39..fef3d31b5 100644 --- a/lib/features/manage_account/presentation/model/account_menu_item.dart +++ b/lib/features/manage_account/presentation/model/account_menu_item.dart @@ -8,7 +8,8 @@ enum AccountMenuItem { languageAndRegion, emailRules, forward, - vacation; + vacation, + none; String getIcon(ImagePaths imagePaths) { switch(this) { @@ -22,6 +23,8 @@ enum AccountMenuItem { return imagePaths.icForward; case AccountMenuItem.vacation: return imagePaths.icVacation; + case AccountMenuItem.none: + return imagePaths.icProfiles; } } @@ -37,6 +40,8 @@ enum AccountMenuItem { return AppLocalizations.of(context).forwarding; case AccountMenuItem.vacation: return AppLocalizations.of(context).vacation; + case AccountMenuItem.none: + return AppLocalizations.of(context).profiles; } } } \ No newline at end of file