TF-788 Change Dashboard View with SettingsView and Settings details view (Rules, Identity, Language, ...) in the case of mobile/tablet

This commit is contained in:
Dat PHAM HOANG
2022-08-24 12:16:56 +07:00
committed by Dat H. Pham
parent 87f02ef7fd
commit 606f94d60f
5 changed files with 29 additions and 68 deletions
@@ -31,6 +31,7 @@ import 'package:tmail_ui_user/features/manage_account/domain/usecases/update_vac
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/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/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/manage_account_menu_bindings.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_bindings.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/profiles_bindings.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_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_bindings.dart';
@@ -39,6 +40,7 @@ class ManageAccountDashBoardBindings extends BaseBindings {
@override @override
void dependencies() { void dependencies() {
super.dependencies(); super.dependencies();
SettingsBindings().dependencies();
ManageAccountMenuBindings().dependencies(); ManageAccountMenuBindings().dependencies();
ProfileBindings().dependencies(); ProfileBindings().dependencies();
LanguageAndRegionBindings().dependencies(); LanguageAndRegionBindings().dependencies();
@@ -25,6 +25,7 @@ import 'package:tmail_ui_user/features/manage_account/presentation/forward/forwa
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/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/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';
@@ -42,6 +43,8 @@ class ManageAccountDashBoardController extends ReloadableController {
final userProfile = Rxn<UserProfile>(); final userProfile = Rxn<UserProfile>();
final accountId = Rxn<AccountId>(); final accountId = Rxn<AccountId>();
final accountMenuItemSelected = AccountMenuItem.profiles.obs; final accountMenuItemSelected = AccountMenuItem.profiles.obs;
final settingsPageLevel = SettingsPageLevel.universal.obs;
final sessionCurrent = Rxn<Session>(); final sessionCurrent = Rxn<Session>();
final vacationResponse = Rxn<VacationResponse>(); final vacationResponse = Rxn<VacationResponse>();
@@ -118,6 +121,7 @@ class ManageAccountDashBoardController extends ReloadableController {
} }
void _getUserProfile() async { void _getUserProfile() async {
log('ManageAccountDashBoardController::_getUserProfile(): ${sessionCurrent.value}');
userProfile.value = sessionCurrent.value != null ? UserProfile(sessionCurrent.value!.username.value) : null; userProfile.value = sessionCurrent.value != null ? UserProfile(sessionCurrent.value!.username.value) : null;
} }
@@ -12,6 +12,7 @@ import 'package:tmail_ui_user/features/manage_account/presentation/forward/forwa
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/manage_account_dashboard_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/menu/manage_account_menu_view.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/menu/manage_account_menu_view.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_view.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/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';
@@ -40,12 +41,7 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
Scaffold( Scaffold(
key: controller.menuDrawerKey, key: controller.menuDrawerKey,
backgroundColor: Colors.white, backgroundColor: Colors.white,
drawer: ResponsiveWidget( drawerEnableOpenDragGesture: false,
responsiveUtils: _responsiveUtils,
mobile: SizedBox(child: ManageAccountMenuView(), width: ResponsiveUtils.defaultSizeDrawer),
desktop: const SizedBox.shrink()
),
drawerEnableOpenDragGesture: !_responsiveUtils.isDesktop(context),
body: GestureDetector( body: GestureDetector(
onTap: () => FocusScope.of(context).unfocus(), onTap: () => FocusScope.of(context).unfocus(),
child: ResponsiveWidget( child: ResponsiveWidget(
@@ -123,57 +119,14 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
], ],
)) ))
]), ]),
mobile: SafeArea( mobile: SettingsView(closeAction: () => controller.backToMailboxDashBoard(context))
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
Padding(
padding: !BuildUtils.isWeb && _responsiveUtils.isPortraitMobile(context)
? const EdgeInsets.only(left: 4, right: 8)
: const EdgeInsets.only(top: 16, left: 24, right: 32),
child: _buildAppbar(context)),
Obx(() {
if (controller.vacationResponse.value?.vacationResponderIsValid == true) {
return VacationNotificationMessageWidget(
margin: const EdgeInsets.only(
left: BuildUtils.isWeb ? 24 : 16,
right: BuildUtils.isWeb ? 24 : 16,
top: BuildUtils.isWeb ? 16 : 0),
vacationResponse: controller.vacationResponse.value!,
action: () => controller.disableVacationResponder());
} else if ((controller.vacationResponse.value?.vacationResponderIsWaiting == true
|| controller.vacationResponse.value?.vacationResponderIsStopped == true)
&& controller.accountMenuItemSelected.value == AccountMenuItem.vacation) {
return VacationNotificationMessageWidget(
margin: const EdgeInsets.only(
left: BuildUtils.isWeb ? 24 : 16,
right: BuildUtils.isWeb ? 24 : 16,
top: BuildUtils.isWeb ? 16 : 0),
vacationResponse: controller.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)
: const EdgeInsets.only(left: 24),
child: _viewDisplayedOfAccountMenuItem()))
])
)
), ),
), ),
), ),
if(controller.emailsForwardCreatorIsActive.isTrue) if(controller.emailsForwardCreatorIsActive.isTrue)
EmailsForwardCreatorView(), EmailsForwardCreatorView()
] , ]
), ));
);
} }
Widget _buildRightHeader(BuildContext context) { Widget _buildRightHeader(BuildContext context) {
@@ -205,20 +158,6 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
]); ]);
} }
Widget _buildAppbar(BuildContext context) {
return Row(children: [
buildIconWeb(
icon: SvgPicture.asset(_imagePaths.icMenuDrawer, fit: BoxFit.fill),
onTap:() => controller.openMenuDrawer()),
const SizedBox(width: 12),
Expanded(child: Text(
AppLocalizations.of(context).manage_account,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: const TextStyle(fontSize: 21, color: Colors.black, fontWeight: FontWeight.bold))),
]);
}
Widget _viewDisplayedOfAccountMenuItem() { Widget _viewDisplayedOfAccountMenuItem() {
return Obx(() { return Obx(() {
switch(controller.accountMenuItemSelected.value) { switch(controller.accountMenuItemSelected.value) {
@@ -9,6 +9,7 @@ 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/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';
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_first_level_view.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_first_level_view.dart';
@@ -16,6 +17,7 @@ import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings
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/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/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
typedef CloseSettingsViewAction = void Function(); typedef CloseSettingsViewAction = void Function();
@@ -135,6 +137,14 @@ class SettingsView extends GetWidget<SettingsController> {
} else { } else {
return const SizedBox.shrink(); return const SizedBox.shrink();
} }
case AccountMenuItem.forward:
if(controller.manageAccountDashboardController.checkAvailableForwardInSession()){
return ForwardView();
} else {
return const SizedBox.shrink();
}
case AccountMenuItem.vacation:
return VacationView();
default: default:
return const SizedBox.shrink(); return const SizedBox.shrink();
} }
+7 -1
View File
@@ -1,5 +1,5 @@
{ {
"@@last_modified": "2022-08-21T10:21:05.186351", "@@last_modified": "2022-08-24T12:13:35.492924",
"initializing_data": "Initializing data...", "initializing_data": "Initializing data...",
"@initializing_data": { "@initializing_data": {
"type": "text", "type": "text",
@@ -2101,5 +2101,11 @@
"type": "text", "type": "text",
"placeholders_order": [], "placeholders_order": [],
"placeholders": {} "placeholders": {}
},
"emailRuleSettingExplanation": "Creating rules to handle incoming messages. You choose both the condition that triggers a rule and the actions the rule will take.",
"@emailRuleSettingExplanation": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
} }
} }