TF-788 Integrate Vacation settings to Settings screen

This commit is contained in:
Dat PHAM HOANG
2022-08-24 15:48:07 +07:00
committed by Dat H. Pham
parent 38a1b6e642
commit 998aa23958
5 changed files with 48 additions and 4 deletions
@@ -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/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/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/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/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/app_routes.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart';
@@ -200,4 +200,8 @@ class ManageAccountDashBoardController extends ReloadableController {
log('ManageAccountDashBoardController::_handleUpdateVacationSuccess(): $vacationResponse'); log('ManageAccountDashBoardController::_handleUpdateVacationSuccess(): $vacationResponse');
} }
} }
bool inVacationSettings() {
return accountMenuItemSelected.value == AccountMenuItem.vacation;
}
} }
@@ -15,6 +15,7 @@ class SettingsController extends GetxController {
void backToUniversalSettings() { void backToUniversalSettings() {
log('SettingsController::backToUniversalSettings()'); log('SettingsController::backToUniversalSettings()');
manageAccountDashboardController.selectAccountMenuItem(AccountMenuItem.none);
manageAccountDashboardController.settingsPageLevel.value = SettingsPageLevel.universal; manageAccountDashboardController.settingsPageLevel.value = SettingsPageLevel.universal;
} }
} }
@@ -106,6 +106,11 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils), indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils),
endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils) endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils)
), ),
SettingFirstLevelTileBuilder(
AppLocalizations.of(context).sign_out,
_imagePaths.icSignOut,
controller.manageAccountDashboardController.logoutAction
),
]); ]);
} }
} }
@@ -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/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/button/icon_button_web.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:core/utils/build_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.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/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/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/language_and_region/language_and_region_view.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_controller.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/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/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/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'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
typedef CloseSettingsViewAction = void Function(); typedef CloseSettingsViewAction = void Function();
@@ -31,7 +32,6 @@ class SettingsView extends GetWidget<SettingsController> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
log('SettingsView::build(): ${controller.manageAccountDashboardController.userProfile.value}');
return SafeArea( return SafeArea(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@@ -42,6 +42,35 @@ class SettingsView extends GetWidget<SettingsController> {
padding: SettingsUtils.getPaddingInFirstLevel(context, _responsiveUtils), padding: SettingsUtils.getPaddingInFirstLevel(context, _responsiveUtils),
child: _buildAppbar(context))), child: _buildAppbar(context))),
const Divider(color: AppColor.colorDividerComposer, height: 1), 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( Expanded(child: Padding(
padding: !BuildUtils.isWeb && _responsiveUtils.isPortraitMobile(context) padding: !BuildUtils.isWeb && _responsiveUtils.isPortraitMobile(context)
? const EdgeInsets.only(left: 8) ? const EdgeInsets.only(left: 8)
@@ -8,7 +8,8 @@ enum AccountMenuItem {
languageAndRegion, languageAndRegion,
emailRules, emailRules,
forward, forward,
vacation; vacation,
none;
String getIcon(ImagePaths imagePaths) { String getIcon(ImagePaths imagePaths) {
switch(this) { switch(this) {
@@ -22,6 +23,8 @@ enum AccountMenuItem {
return imagePaths.icForward; return imagePaths.icForward;
case AccountMenuItem.vacation: case AccountMenuItem.vacation:
return imagePaths.icVacation; return imagePaths.icVacation;
case AccountMenuItem.none:
return imagePaths.icProfiles;
} }
} }
@@ -37,6 +40,8 @@ enum AccountMenuItem {
return AppLocalizations.of(context).forwarding; return AppLocalizations.of(context).forwarding;
case AccountMenuItem.vacation: case AccountMenuItem.vacation:
return AppLocalizations.of(context).vacation; return AppLocalizations.of(context).vacation;
case AccountMenuItem.none:
return AppLocalizations.of(context).profiles;
} }
} }
} }