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/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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user