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/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/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/vacation/vacation_bindings.dart';
@@ -39,6 +40,7 @@ class ManageAccountDashBoardBindings extends BaseBindings {
@override
void dependencies() {
super.dependencies();
SettingsBindings().dependencies();
ManageAccountMenuBindings().dependencies();
ProfileBindings().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/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/routes/app_routes.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
@@ -42,6 +43,8 @@ class ManageAccountDashBoardController extends ReloadableController {
final userProfile = Rxn<UserProfile>();
final accountId = Rxn<AccountId>();
final accountMenuItemSelected = AccountMenuItem.profiles.obs;
final settingsPageLevel = SettingsPageLevel.universal.obs;
final sessionCurrent = Rxn<Session>();
final vacationResponse = Rxn<VacationResponse>();
@@ -118,6 +121,7 @@ class ManageAccountDashBoardController extends ReloadableController {
}
void _getUserProfile() async {
log('ManageAccountDashBoardController::_getUserProfile(): ${sessionCurrent.value}');
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/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/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/profiles/profiles_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(
key: controller.menuDrawerKey,
backgroundColor: Colors.white,
drawer: ResponsiveWidget(
responsiveUtils: _responsiveUtils,
mobile: SizedBox(child: ManageAccountMenuView(), width: ResponsiveUtils.defaultSizeDrawer),
desktop: const SizedBox.shrink()
),
drawerEnableOpenDragGesture: !_responsiveUtils.isDesktop(context),
drawerEnableOpenDragGesture: false,
body: GestureDetector(
onTap: () => FocusScope.of(context).unfocus(),
child: ResponsiveWidget(
@@ -123,57 +119,14 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
],
))
]),
mobile: SafeArea(
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()))
])
)
mobile: SettingsView(closeAction: () => controller.backToMailboxDashBoard(context))
),
),
),
if(controller.emailsForwardCreatorIsActive.isTrue)
EmailsForwardCreatorView(),
] ,
),
);
EmailsForwardCreatorView()
]
));
}
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() {
return Obx(() {
switch(controller.accountMenuItemSelected.value) {
@@ -9,6 +9,7 @@ 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/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';
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/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/main/localizations/app_localizations.dart';
typedef CloseSettingsViewAction = void Function();
@@ -135,6 +137,14 @@ class SettingsView extends GetWidget<SettingsController> {
} else {
return const SizedBox.shrink();
}
case AccountMenuItem.forward:
if(controller.manageAccountDashboardController.checkAvailableForwardInSession()){
return ForwardView();
} else {
return const SizedBox.shrink();
}
case AccountMenuItem.vacation:
return VacationView();
default:
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": {
"type": "text",
@@ -2101,5 +2101,11 @@
"type": "text",
"placeholders_order": [],
"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": {}
}
}