TF-788 Integrate Vacation settings to Settings screen
This commit is contained in:
committed by
Dat H. Pham
parent
38a1b6e642
commit
998aa23958
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,7 @@ class SettingsController extends GetxController {
|
||||
|
||||
void backToUniversalSettings() {
|
||||
log('SettingsController::backToUniversalSettings()');
|
||||
manageAccountDashboardController.selectAccountMenuItem(AccountMenuItem.none);
|
||||
manageAccountDashboardController.settingsPageLevel.value = SettingsPageLevel.universal;
|
||||
}
|
||||
}
|
||||
@@ -106,6 +106,11 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
||||
indent: 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/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<SettingsController> {
|
||||
|
||||
@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<SettingsController> {
|
||||
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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user