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:
committed by
Dat H. Pham
parent
87f02ef7fd
commit
606f94d60f
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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": {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user