TF-1611 Fix can not display correctly menu screen when open setting view
(cherry picked from commit 2ba04f782ef17dac3b93930dccd3723f13d6836d)
This commit is contained in:
@@ -32,7 +32,6 @@ import 'package:tmail_ui_user/features/manage_account/domain/state/log_out_oidc_
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/bindings/email_rules_interactor_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/forward/bindings/forwarding_interactors_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/bindings/mailbox_visibility_interactor_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/domain/exceptions/fcm_exception.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/domain/state/destroy_subscription_state.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/domain/state/get_fcm_subscription_local.dart';
|
||||
@@ -222,10 +221,6 @@ abstract class BaseController extends GetxController
|
||||
}
|
||||
}
|
||||
|
||||
void injectMailboxVisibilityBindings() {
|
||||
MailboxVisibilityInteractorBindings().dependencies();
|
||||
}
|
||||
|
||||
void injectFCMBindings(Session? session, AccountId? accountId) async {
|
||||
try {
|
||||
requireCapability(session!, accountId!, [FirebaseCapability.fcmIdentifier]);
|
||||
|
||||
@@ -48,7 +48,6 @@ class ForwardController extends BaseController {
|
||||
bool get currentForwardLocalCopyState => currentForward.value?.localCopy ?? false;
|
||||
|
||||
late ForwardRecipientController recipientController;
|
||||
late Worker dashboardActionWorker;
|
||||
|
||||
ForwardController() {
|
||||
recipientController = ForwardRecipientController(
|
||||
@@ -73,7 +72,6 @@ class ForwardController extends BaseController {
|
||||
@override
|
||||
void onClose() {
|
||||
recipientController.onClose();
|
||||
unregisterListenerWorker();
|
||||
super.onClose();
|
||||
}
|
||||
|
||||
@@ -291,7 +289,7 @@ class ForwardController extends BaseController {
|
||||
}
|
||||
|
||||
void registerListenerWorker() {
|
||||
dashboardActionWorker = ever(
|
||||
ever(
|
||||
accountDashBoardController.dashboardSettingAction,
|
||||
(action) {
|
||||
if (action is ClearAllInputForwarding) {
|
||||
@@ -301,8 +299,4 @@ class ForwardController extends BaseController {
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
void unregisterListenerWorker() {
|
||||
dashboardActionWorker.dispose();
|
||||
}
|
||||
}
|
||||
+5
-1
@@ -3,19 +3,23 @@ import 'package:tmail_ui_user/features/mailbox/domain/usecases/get_all_mailbox_i
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_name_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/bindings/mailbox_visibility_interactor_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart';
|
||||
|
||||
class MailboxVisibilityBindings extends Bindings {
|
||||
|
||||
@override
|
||||
void dependencies() {
|
||||
MailboxVisibilityInteractorBindings().dependencies();
|
||||
|
||||
_bindingsUtils();
|
||||
|
||||
Get.lazyPut(() => MailboxVisibilityController(
|
||||
Get.find<TreeBuilder>(),
|
||||
Get.find<VerifyNameInteractor>(),
|
||||
Get.find<GetAllMailboxInteractor>(),
|
||||
Get.find<RefreshAllMailboxInteractor>(),
|
||||
));
|
||||
_bindingsUtils();
|
||||
}
|
||||
|
||||
void _bindingsUtils() {
|
||||
|
||||
@@ -25,7 +25,6 @@ import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_
|
||||
import 'package:tmail_ui_user/features/manage_account/data/repository/manage_account_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.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/menu/manage_account_menu_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_bindings.dart';
|
||||
@@ -41,16 +40,15 @@ class ManageAccountDashBoardBindings extends BaseBindings {
|
||||
SettingsBindings().dependencies();
|
||||
ManageAccountMenuBindings().dependencies();
|
||||
ProfileBindings().dependencies();
|
||||
LanguageAndRegionBindings().dependencies();
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsController() {
|
||||
Get.lazyPut(() => ManageAccountDashBoardController(
|
||||
Get.find<LogoutOidcInteractor>(),
|
||||
Get.find<DeleteAuthorityOidcInteractor>(),
|
||||
Get.find<GetAuthenticatedAccountInteractor>(),
|
||||
Get.find<UpdateAuthenticationAccountInteractor>()
|
||||
Get.put(ManageAccountDashBoardController(
|
||||
Get.find<LogoutOidcInteractor>(),
|
||||
Get.find<DeleteAuthorityOidcInteractor>(),
|
||||
Get.find<GetAuthenticatedAccountInteractor>(),
|
||||
Get.find<UpdateAuthenticationAccountInteractor>()
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
@@ -26,10 +26,12 @@ import 'package:tmail_ui_user/features/manage_account/presentation/action/dashbo
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/bindings/email_rules_bindings.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/bindings/forward_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/mailbox_visibility/bindings/mailbox_visibility_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/manage_account_arguments.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_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_controller_bindings.dart';
|
||||
import 'package:tmail_ui_user/main/error/capability_validator.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
@@ -68,9 +70,9 @@ class ManageAccountDashBoardController extends ReloadableController {
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
_initialPageLevel();
|
||||
_getArguments();
|
||||
_getAppVersion();
|
||||
_initialPageLevel();
|
||||
super.onReady();
|
||||
}
|
||||
|
||||
@@ -97,26 +99,18 @@ class ManageAccountDashBoardController extends ReloadableController {
|
||||
sessionCurrent = session;
|
||||
accountId.value = session.accounts.keys.first;
|
||||
_getUserProfile();
|
||||
injectAutoCompleteBindings(sessionCurrent, accountId.value);
|
||||
injectForwardBindings(sessionCurrent, accountId.value);
|
||||
injectRuleFilterBindings(sessionCurrent, accountId.value);
|
||||
injectMailboxVisibilityBindings();
|
||||
injectVacationBindings(sessionCurrent, accountId.value);
|
||||
_bindingInteractorForMenuItemView(sessionCurrent, accountId.value);
|
||||
_getVacationResponse();
|
||||
}
|
||||
|
||||
void _getArguments() {
|
||||
final arguments = Get.arguments;
|
||||
log('ManageAccountDashBoardController::_getAccountIdAndUserProfile(): $arguments');
|
||||
log('ManageAccountDashBoardController::_getArguments(): $arguments');
|
||||
if (arguments is ManageAccountArguments) {
|
||||
sessionCurrent = arguments.session;
|
||||
accountId.value = arguments.session?.accounts.keys.first;
|
||||
_getUserProfile();
|
||||
injectAutoCompleteBindings(sessionCurrent, accountId.value);
|
||||
injectForwardBindings(sessionCurrent, accountId.value);
|
||||
injectRuleFilterBindings(sessionCurrent, accountId.value);
|
||||
injectMailboxVisibilityBindings();
|
||||
injectVacationBindings(sessionCurrent, accountId.value);
|
||||
_bindingInteractorForMenuItemView(sessionCurrent, accountId.value);
|
||||
_getVacationResponse();
|
||||
if (arguments.menuSettingCurrent != null) {
|
||||
_goToSettingMenuCurrent(arguments.menuSettingCurrent!);
|
||||
@@ -136,6 +130,13 @@ class ManageAccountDashBoardController extends ReloadableController {
|
||||
}
|
||||
}
|
||||
|
||||
void _bindingInteractorForMenuItemView(Session? session, AccountId? accountId) {
|
||||
injectAutoCompleteBindings(session, accountId);
|
||||
injectVacationBindings(session, accountId);
|
||||
injectForwardBindings(session, accountId);
|
||||
injectRuleFilterBindings(session, accountId);
|
||||
}
|
||||
|
||||
@override
|
||||
void injectVacationBindings(Session? session, AccountId? accountId) {
|
||||
try {
|
||||
@@ -170,19 +171,38 @@ class ManageAccountDashBoardController extends ReloadableController {
|
||||
}
|
||||
|
||||
void selectAccountMenuItem(AccountMenuItem newAccountMenuItem) {
|
||||
settingsPageLevel.value = newAccountMenuItem == AccountMenuItem.none
|
||||
? SettingsPageLevel.universal
|
||||
: SettingsPageLevel.level1;
|
||||
|
||||
clearInputFormView();
|
||||
if (newAccountMenuItem == AccountMenuItem.emailRules) {
|
||||
EmailRulesBindings().dependencies();
|
||||
}
|
||||
if (newAccountMenuItem == AccountMenuItem.forward) {
|
||||
ForwardBindings().dependencies();
|
||||
}
|
||||
if (newAccountMenuItem == AccountMenuItem.mailboxVisibility) {
|
||||
MailboxVisibilityBindings().dependencies();
|
||||
}
|
||||
_bindingControllerMenuItemView(newAccountMenuItem);
|
||||
accountMenuItemSelected.value = newAccountMenuItem;
|
||||
}
|
||||
|
||||
void _bindingControllerMenuItemView(AccountMenuItem item) {
|
||||
switch (item) {
|
||||
case AccountMenuItem.profiles:
|
||||
ProfileBindings().dependencies();
|
||||
break;
|
||||
case AccountMenuItem.languageAndRegion:
|
||||
LanguageAndRegionBindings().dependencies();
|
||||
break;
|
||||
case AccountMenuItem.emailRules:
|
||||
EmailRulesBindings().dependencies();
|
||||
break;
|
||||
case AccountMenuItem.forward:
|
||||
ForwardBindings().dependencies();
|
||||
break;
|
||||
case AccountMenuItem.mailboxVisibility:
|
||||
MailboxVisibilityBindings().dependencies();
|
||||
break;
|
||||
case AccountMenuItem.vacation:
|
||||
case AccountMenuItem.none:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void clearInputFormView() {
|
||||
switch(accountMenuItemSelected.value) {
|
||||
case AccountMenuItem.forward:
|
||||
@@ -194,20 +214,7 @@ class ManageAccountDashBoardController extends ReloadableController {
|
||||
}
|
||||
|
||||
void _goToSettingMenuCurrent(AccountMenuItem accountMenuItem) {
|
||||
if (accountMenuItem == AccountMenuItem.emailRules) {
|
||||
EmailRulesBindings().dependencies();
|
||||
}
|
||||
if (accountMenuItem == AccountMenuItem.forward) {
|
||||
ForwardBindings().dependencies();
|
||||
}
|
||||
if (accountMenuItem == AccountMenuItem.mailboxVisibility) {
|
||||
MailboxVisibilityBindings().dependencies();
|
||||
}
|
||||
accountMenuItemSelected.value = accountMenuItem;
|
||||
if (currentContext != null &&
|
||||
!_responsiveUtils.isDesktop(currentContext!)) {
|
||||
settingsPageLevel.value = SettingsPageLevel.level1;
|
||||
}
|
||||
selectAccountMenuItem(accountMenuItem);
|
||||
}
|
||||
|
||||
void goToSettings() {
|
||||
|
||||
@@ -1,31 +1,10 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/manage_account_menu_controller.dart';
|
||||
|
||||
class ManageAccountMenuBindings extends BaseBindings {
|
||||
class ManageAccountMenuBindings extends Bindings {
|
||||
|
||||
@override
|
||||
void bindingsController() {
|
||||
Get.lazyPut(() => ManageAccountMenuController());
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsDataSource() {
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsDataSourceImpl() {
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsInteractor() {
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepository() {
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepositoryImpl() {
|
||||
void dependencies() {
|
||||
Get.put(ManageAccountMenuController());
|
||||
}
|
||||
}
|
||||
@@ -1,68 +1,59 @@
|
||||
|
||||
import 'package:core/core.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_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/model/account_menu_item.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
class ManageAccountMenuController extends BaseController {
|
||||
class ManageAccountMenuController extends GetxController {
|
||||
|
||||
final dashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||
|
||||
late Worker sessionWorker;
|
||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
|
||||
final listAccountMenuItem = RxList<AccountMenuItem>([
|
||||
AccountMenuItem.profiles,
|
||||
AccountMenuItem.vacation,
|
||||
AccountMenuItem.mailboxVisibility,
|
||||
AccountMenuItem.languageAndRegion,
|
||||
]);
|
||||
|
||||
void _initWorker() {
|
||||
sessionWorker = ever(dashBoardController.accountId, (_) {
|
||||
_createListAccountMenu();
|
||||
void _registerObxStreamListener() {
|
||||
ever(dashBoardController.accountId, (accountId) {
|
||||
if (accountId != null) {
|
||||
_createListAccountMenu();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void _clearWorker() {
|
||||
sessionWorker.call();
|
||||
}
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
_initWorker();
|
||||
_createListAccountMenu();
|
||||
_registerObxStreamListener();
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
void _createListAccountMenu(){
|
||||
listAccountMenuItem.clear();
|
||||
listAccountMenuItem.add(AccountMenuItem.profiles);
|
||||
if (dashBoardController.isRuleFilterCapabilitySupported) {
|
||||
listAccountMenuItem.add(AccountMenuItem.emailRules);
|
||||
}
|
||||
if (dashBoardController.isForwardCapabilitySupported) {
|
||||
listAccountMenuItem.add(AccountMenuItem.forward);
|
||||
}
|
||||
if (dashBoardController.isVacationCapabilitySupported) {
|
||||
listAccountMenuItem.add(AccountMenuItem.vacation);
|
||||
}
|
||||
listAccountMenuItem.addAll(
|
||||
[
|
||||
AccountMenuItem.mailboxVisibility,
|
||||
AccountMenuItem.languageAndRegion
|
||||
]
|
||||
);
|
||||
}
|
||||
void _createListAccountMenu() {
|
||||
final newListMenuSetting = [
|
||||
AccountMenuItem.profiles,
|
||||
if (dashBoardController.isRuleFilterCapabilitySupported)
|
||||
AccountMenuItem.emailRules,
|
||||
if (dashBoardController.isForwardCapabilitySupported)
|
||||
AccountMenuItem.forward,
|
||||
if (dashBoardController.isVacationCapabilitySupported)
|
||||
AccountMenuItem.vacation,
|
||||
AccountMenuItem.mailboxVisibility,
|
||||
AccountMenuItem.languageAndRegion
|
||||
];
|
||||
listAccountMenuItem.value = newListMenuSetting;
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
_clearWorker();
|
||||
super.onClose();
|
||||
if (listAccountMenuItem.isNotEmpty) {
|
||||
if (currentContext != null && _responsiveUtils.isWebDesktop(currentContext!)) {
|
||||
selectAccountMenuItem(listAccountMenuItem.first);
|
||||
} else {
|
||||
selectAccountMenuItem(AccountMenuItem.none);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void onDone() {}
|
||||
|
||||
void selectAccountMenuItem(AccountMenuItem newAccountMenuItem) {
|
||||
dashBoardController.selectAccountMenuItem(newAccountMenuItem);
|
||||
}
|
||||
|
||||
@@ -89,24 +89,29 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
||||
AppLocalizations.of(context).manage_account,
|
||||
style: const TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 17))),
|
||||
const SizedBox(height: 12),
|
||||
Obx(
|
||||
() => ListView.builder(
|
||||
Obx(() {
|
||||
if (controller.listAccountMenuItem.isNotEmpty) {
|
||||
return ListView.builder(
|
||||
key: const Key('list_manage_account_menu_item'),
|
||||
padding: EdgeInsets.only(
|
||||
left: AppUtils.isDirectionRTL(context) ? 8 : 16,
|
||||
right: AppUtils.isDirectionRTL(context) ? 16 : 8
|
||||
),
|
||||
key: const Key('list_manage_account_property'),
|
||||
shrinkWrap: true,
|
||||
itemCount: controller.listAccountMenuItem.length,
|
||||
itemBuilder: (context, index) => Obx(() => AccountMenuItemTileBuilder(
|
||||
context,
|
||||
_imagePaths,
|
||||
_responsiveUtils,
|
||||
controller.listAccountMenuItem[index],
|
||||
itemBuilder: (context, index) => Obx(() {
|
||||
final menuItem = controller.listAccountMenuItem[index];
|
||||
return AccountMenuItemTileBuilder(
|
||||
menuItem,
|
||||
controller.dashBoardController.accountMenuItemSelected.value,
|
||||
onSelectAccountMenuItemAction: (newAccountMenuItem) =>
|
||||
controller.selectAccountMenuItem(newAccountMenuItem)))),
|
||||
),
|
||||
onSelectAccountMenuItemAction: controller.selectAccountMenuItem
|
||||
);
|
||||
})
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 16),
|
||||
child: Divider(color: AppColor.lineItemListColor, height: 0.5, thickness: 0.2)),
|
||||
@@ -117,7 +122,7 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
||||
),
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
controller.logout(
|
||||
controller.dashBoardController.logout(
|
||||
controller.dashBoardController.sessionCurrent,
|
||||
controller.dashBoardController.accountId.value
|
||||
);
|
||||
|
||||
@@ -55,6 +55,9 @@ class SettingsView extends GetWidget<SettingsController> {
|
||||
top: 16),
|
||||
fromAccountDashBoard: true,
|
||||
vacationResponse: controller.manageAccountDashboardController.vacationResponse.value!,
|
||||
actionGotoVacationSetting: !controller.manageAccountDashboardController.inVacationSettings()
|
||||
? () => controller.manageAccountDashboardController.selectAccountMenuItem(AccountMenuItem.vacation)
|
||||
: null,
|
||||
actionEndNow: () => controller.manageAccountDashboardController.disableVacationResponder());
|
||||
} else if ((controller.manageAccountDashboardController.vacationResponse.value?.vacationResponderIsWaiting == true
|
||||
|| controller.manageAccountDashboardController.vacationResponse.value?.vacationResponderIsStopped == true)
|
||||
|
||||
+37
-27
@@ -1,61 +1,71 @@
|
||||
import 'package:core/core.dart';
|
||||
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/model/account_menu_item.dart';
|
||||
|
||||
typedef OnSelectAccountMenuItemAction = void Function(AccountMenuItem);
|
||||
|
||||
class AccountMenuItemTileBuilder extends StatelessWidget {
|
||||
|
||||
final BuildContext _context;
|
||||
final ImagePaths _imagePaths;
|
||||
final ResponsiveUtils _responsiveUtils;
|
||||
final AccountMenuItem _menuItem;
|
||||
final AccountMenuItem _menuItemSelected;
|
||||
final AccountMenuItem? _menuItemSelected;
|
||||
final OnSelectAccountMenuItemAction? onSelectAccountMenuItemAction;
|
||||
|
||||
const AccountMenuItemTileBuilder(
|
||||
this._context,
|
||||
this._imagePaths,
|
||||
this._responsiveUtils,
|
||||
this._menuItem,
|
||||
this._menuItemSelected,
|
||||
{Key? key, this.onSelectAccountMenuItemAction}
|
||||
{
|
||||
Key? key,
|
||||
this.onSelectAccountMenuItemAction
|
||||
}
|
||||
) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final imagePaths = Get.find<ImagePaths>();
|
||||
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(top: 6),
|
||||
child: InkWell(
|
||||
onTap: () => onSelectAccountMenuItemAction?.call(_menuItem),
|
||||
child: Container(
|
||||
key: const Key('account_menu_item_tile'),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
color: backgroundColorItem),
|
||||
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6),
|
||||
child: Column(children: [
|
||||
Row(children: [
|
||||
SvgPicture.asset(_menuItem.getIcon(_imagePaths),
|
||||
width: 20,
|
||||
height: 20,
|
||||
fit: BoxFit.fill),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(child: Text(_menuItem.getName(context),
|
||||
style: const TextStyle(fontWeight: FontWeight.normal, fontSize: 15, color: Colors.black)))
|
||||
]),
|
||||
])
|
||||
key: const Key('account_menu_item_tile'),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
color: _getBackgroundColorItem(context)),
|
||||
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6),
|
||||
child: Column(children: [
|
||||
Row(children: [
|
||||
SvgPicture.asset(
|
||||
_menuItem.getIcon(imagePaths),
|
||||
width: 20,
|
||||
height: 20,
|
||||
fit: BoxFit.fill),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(child: Text(
|
||||
_menuItem.getName(context),
|
||||
style: const TextStyle(
|
||||
fontWeight: FontWeight.normal,
|
||||
fontSize: 15,
|
||||
color: Colors.black
|
||||
)
|
||||
))
|
||||
]),
|
||||
])
|
||||
)),
|
||||
);
|
||||
}
|
||||
|
||||
Color get backgroundColorItem {
|
||||
Color _getBackgroundColorItem(BuildContext context) {
|
||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
|
||||
if (_menuItemSelected == _menuItem) {
|
||||
return AppColor.colorBgMailboxSelected;
|
||||
}
|
||||
return _responsiveUtils.isWebDesktop(_context)
|
||||
} else {
|
||||
return responsiveUtils.isWebDesktop(context)
|
||||
? AppColor.colorBgDesktop
|
||||
: Colors.white;
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
-25
@@ -28,7 +28,6 @@ import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_ident
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/identity_action_type.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/identities/widgets/delete_identity_dialog_builder.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
@@ -51,8 +50,6 @@ class IdentitiesController extends BaseController {
|
||||
final identitySelected = Rxn<Identity>();
|
||||
final listAllIdentities = <Identity>[].obs;
|
||||
|
||||
late Worker accountIdWorker;
|
||||
|
||||
IdentitiesController(
|
||||
this._getAllIdentitiesInteractor,
|
||||
this._deleteIdentityInteractor,
|
||||
@@ -64,16 +61,10 @@ class IdentitiesController extends BaseController {
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
_initWorker();
|
||||
_registerObxStreamListener();
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
_clearWorker();
|
||||
super.onClose();
|
||||
}
|
||||
|
||||
@override
|
||||
void onDone() {
|
||||
viewState.value.fold(
|
||||
@@ -98,23 +89,13 @@ class IdentitiesController extends BaseController {
|
||||
);
|
||||
}
|
||||
|
||||
void _initWorker() {
|
||||
accountIdWorker = ever(_accountDashBoardController.accountId, (accountId) {
|
||||
if (accountId is AccountId) {
|
||||
final session = _accountDashBoardController.sessionCurrent;
|
||||
if (session != null) {
|
||||
_getAllIdentities(session, accountId);
|
||||
}
|
||||
void _registerObxStreamListener() {
|
||||
ever(_accountDashBoardController.accountId, (accountId) {
|
||||
final session = _accountDashBoardController.sessionCurrent;
|
||||
if (accountId != null && session != null) {
|
||||
_getAllIdentities(session, accountId);
|
||||
}
|
||||
});
|
||||
|
||||
if (_accountDashBoardController.settingsPageLevel.value == SettingsPageLevel.level1) {
|
||||
_accountDashBoardController.accountId.refresh();
|
||||
}
|
||||
}
|
||||
|
||||
void _clearWorker() {
|
||||
accountIdWorker.call();
|
||||
}
|
||||
|
||||
void _getAllIdentities(Session session, AccountId accountId) {
|
||||
|
||||
@@ -14,7 +14,7 @@ class IdentityBindings extends Bindings {
|
||||
void dependencies() {
|
||||
IdentityInteractorsBindings().dependencies();
|
||||
|
||||
Get.lazyPut(() => IdentitiesController(
|
||||
Get.put(IdentitiesController(
|
||||
Get.find<GetAllIdentitiesInteractor>(),
|
||||
Get.find<DeleteIdentityInteractor>(),
|
||||
Get.find<CreateNewIdentityInteractor>(),
|
||||
|
||||
@@ -1,38 +1,10 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identity_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/profiles_controller.dart';
|
||||
|
||||
class ProfileBindings extends BaseBindings {
|
||||
class ProfileBindings extends Bindings {
|
||||
|
||||
@override
|
||||
void dependencies() {
|
||||
super.dependencies();
|
||||
IdentityBindings().dependencies();
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsController() {
|
||||
Get.lazyPut(() => ProfilesController());
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsDataSource() {
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsDataSourceImpl() {
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsInteractor() {
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepository() {
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepositoryImpl() {
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
|
||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||
|
||||
class ProfilesController extends BaseController {
|
||||
|
||||
@override
|
||||
void onDone() {}
|
||||
}
|
||||
@@ -6,10 +6,9 @@ import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/base/setting_detail_view_builder.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identities_view.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/profiles_controller.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/widgets/profiles_header_widget.dart';
|
||||
|
||||
class ProfilesView extends GetWidget<ProfilesController> {
|
||||
class ProfilesView extends StatelessWidget {
|
||||
|
||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
final _imagePaths = Get.find<ImagePaths>();
|
||||
|
||||
@@ -21,8 +21,6 @@ import 'package:tmail_ui_user/features/manage_account/presentation/model/vacatio
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/vacation/vacation_message_type.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/vacation/vacation_presentation.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/vacation/vacation_responder_status.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/utils/vacation_utils.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_controller_bindings.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
@@ -31,11 +29,11 @@ class VacationController extends BaseController {
|
||||
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||
final _appToast = Get.find<AppToast>();
|
||||
final _settingController = Get.find<SettingsController>();
|
||||
final _richTextControllerForWeb = Get.find<RichTextWebController>(tag: VacationUtils.vacationTagName);
|
||||
|
||||
final GetAllVacationInteractor _getAllVacationInteractor;
|
||||
final UpdateVacationInteractor _updateVacationInteractor;
|
||||
final VerifyNameInteractor _verifyNameInteractor;
|
||||
final RichTextWebController _richTextControllerForWeb;
|
||||
|
||||
final vacationPresentation = VacationPresentation.initialize().obs;
|
||||
final errorMessageBody = Rxn<String>();
|
||||
@@ -51,14 +49,13 @@ class VacationController extends BaseController {
|
||||
VacationResponse? currentVacation;
|
||||
String? _vacationMessageHtmlText;
|
||||
|
||||
late Worker vacationWorker;
|
||||
|
||||
final ScrollController scrollController = ScrollController();
|
||||
|
||||
VacationController(
|
||||
this._getAllVacationInteractor,
|
||||
this._updateVacationInteractor,
|
||||
this._verifyNameInteractor
|
||||
this._verifyNameInteractor,
|
||||
this._richTextControllerForWeb
|
||||
);
|
||||
|
||||
String? get vacationMessageHtmlText => _vacationMessageHtmlText;
|
||||
@@ -92,7 +89,7 @@ class VacationController extends BaseController {
|
||||
}
|
||||
|
||||
void _initWorker() {
|
||||
vacationWorker = ever(_accountDashBoardController.vacationResponse, (vacation) {
|
||||
ever(_accountDashBoardController.vacationResponse, (vacation) {
|
||||
if (vacation is VacationResponse) {
|
||||
currentVacation = vacation;
|
||||
final newVacationPresentation = currentVacation?.toVacationPresentation();
|
||||
@@ -387,9 +384,7 @@ class VacationController extends BaseController {
|
||||
messageTextController.dispose();
|
||||
subjectTextController.dispose();
|
||||
richTextControllerForMobile.dispose();
|
||||
vacationWorker.dispose();
|
||||
scrollController.dispose();
|
||||
VacationControllerBindings().dispose();
|
||||
super.onClose();
|
||||
}
|
||||
}
|
||||
+9
-32
@@ -1,5 +1,4 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_web_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_name_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_vacation_interactor.dart';
|
||||
@@ -7,39 +6,17 @@ import 'package:tmail_ui_user/features/manage_account/domain/usecases/update_vac
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/utils/vacation_utils.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_controller.dart';
|
||||
|
||||
class VacationControllerBindings extends BaseBindings {
|
||||
class VacationControllerBindings extends Bindings {
|
||||
|
||||
@override
|
||||
void bindingsController() {
|
||||
Get.lazyPut(() => RichTextWebController(), tag: VacationUtils.vacationTagName);
|
||||
Get.lazyPut(() => VacationController(
|
||||
Get.find<GetAllVacationInteractor>(),
|
||||
Get.find<UpdateVacationInteractor>(),
|
||||
Get.find<VerifyNameInteractor>()));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsDataSource() {
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsDataSourceImpl() {
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsInteractor() {
|
||||
void dependencies() {
|
||||
Get.lazyPut(() => VerifyNameInteractor());
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepository() {
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepositoryImpl() {
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
Get.delete<RichTextWebController>(tag: VacationUtils.vacationTagName);
|
||||
Get.lazyPut(() => RichTextWebController(), tag: VacationUtils.vacationTagName);
|
||||
Get.put(VacationController(
|
||||
Get.find<GetAllVacationInteractor>(),
|
||||
Get.find<UpdateVacationInteractor>(),
|
||||
Get.find<VerifyNameInteractor>(),
|
||||
Get.find<RichTextWebController>(tag: VacationUtils.vacationTagName),
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ import 'package:tmail_ui_user/features/quotas/presentation/quotas_controller.dar
|
||||
|
||||
class QuotasWarningBannerWidget extends GetWidget<QuotasController> {
|
||||
const QuotasWarningBannerWidget({this.margin ,Key? key}) : super(key: key);
|
||||
final EdgeInsetsGeometry? margin;
|
||||
final EdgeInsets? margin;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -14,7 +14,7 @@ class QuotasWarningBannerWidget extends GetWidget<QuotasController> {
|
||||
() => controller.enableShowWarningQuotas
|
||||
? Container(
|
||||
padding: const EdgeInsets.all(16),
|
||||
margin: margin ?? const EdgeInsets.only(left: 12, right: 12, top: 8),
|
||||
margin: margin ?? const EdgeInsets.only(left: 12, right: 12, bottom: 12),
|
||||
decoration: BoxDecoration(
|
||||
color: controller.quotasState.value.getBackgroundColorWarningBanner(),
|
||||
borderRadius: const BorderRadius.all(Radius.circular(10)),
|
||||
|
||||
@@ -108,13 +108,11 @@ class ThreadView extends GetWidget<ThreadController>
|
||||
return Obx(() {
|
||||
final vacation = controller.mailboxDashBoardController.vacationResponse.value;
|
||||
if (vacation?.vacationResponderIsValid == true) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(bottom: 8, top: 4),
|
||||
child: VacationNotificationMessageWidget(
|
||||
vacationResponse: vacation!,
|
||||
actionGotoVacationSetting: () => controller.mailboxDashBoardController.goToVacationSetting(),
|
||||
actionEndNow: () => controller.mailboxDashBoardController.disableVacationResponder()),
|
||||
);
|
||||
return VacationNotificationMessageWidget(
|
||||
margin: const EdgeInsets.only(bottom: 12, left: 12, right: 12),
|
||||
vacationResponse: vacation!,
|
||||
actionGotoVacationSetting: controller.mailboxDashBoardController.goToVacationSetting,
|
||||
actionEndNow: controller.mailboxDashBoardController.disableVacationResponder);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ class SpamReportBannerWidget extends StatelessWidget {
|
||||
}
|
||||
return Container(
|
||||
height: 124,
|
||||
margin: const EdgeInsets.only(left: 16, right: 16, bottom: 16),
|
||||
margin: const EdgeInsets.only(left: 12, right: 12, bottom: 12),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
border: Border.all(color: AppColor.colorBorderBodyThread, width: 1),
|
||||
|
||||
Reference in New Issue
Block a user