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/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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user