TF-571 Get user's profile directly in Session

This commit is contained in:
Dat PHAM HOANG
2022-05-27 15:29:57 +07:00
committed by Dat H. Pham
parent a48cd35d4f
commit 7d32e80bc1
4 changed files with 17 additions and 26 deletions
@@ -10,11 +10,11 @@ import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
import 'package:jmap_dart_client/jmap/core/capability/mail_capability.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_comparator.dart';
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_comparator_property.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
@@ -37,7 +37,6 @@ import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_int
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_all_recent_search_latest_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_user_profile_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/quick_search_email_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart';
@@ -162,9 +161,7 @@ class MailboxDashBoardController extends ReloadableController {
}
},
(success) {
if (success is GetUserProfileSuccess) {
userProfile.value = success.userProfile;
} else if (success is SendEmailSuccess) {
if (success is SendEmailSuccess) {
if (currentOverlayContext != null && currentContext != null) {
_appToast.showToastWithIcon(
currentOverlayContext!,
@@ -214,7 +211,7 @@ class MailboxDashBoardController extends ReloadableController {
}
void _getUserProfile() async {
consumeState(_getUserProfileInteractor.execute());
userProfile.value = sessionCurrent != null ? UserProfile(sessionCurrent!.username.value) : null;
}
void _setSessionCurrent() {
@@ -539,7 +536,7 @@ class MailboxDashBoardController extends ReloadableController {
closeMailboxMenuDrawer();
}
push(AppRoutes.MANAGE_ACCOUNT,
arguments: ManageAccountArguments(accountId.value, userProfile.value));
arguments: ManageAccountArguments(sessionCurrent));
}
@override
@@ -17,9 +17,7 @@ class ManageAccountDashBoardBindings extends BaseBindings {
@override
void bindingsController() {
Get.lazyPut(() => ManageAccountDashBoardController(
Get.find<GetUserProfileInteractor>(),
));
Get.lazyPut(() => ManageAccountDashBoardController());
}
@override
@@ -9,7 +9,6 @@ import 'package:model/model.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_user_profile_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_user_profile_interactor.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/main/routes/app_routes.dart';
@@ -19,8 +18,6 @@ class ManageAccountDashBoardController extends ReloadableController {
final _responsiveUtils = Get.find<ResponsiveUtils>();
final GetUserProfileInteractor _getUserProfileInteractor;
final menuDrawerKey = GlobalKey<ScaffoldState>(debugLabel: 'manage_account');
final appInformation = Rxn<PackageInfo>();
@@ -28,9 +25,9 @@ class ManageAccountDashBoardController extends ReloadableController {
final accountId = Rxn<AccountId>();
final accountMenuItemSelected = AccountMenuItem.profiles.obs;
ManageAccountDashBoardController(
this._getUserProfileInteractor,
);
Session? sessionCurrent;
ManageAccountDashBoardController();
@override
void onReady() {
@@ -57,6 +54,7 @@ class ManageAccountDashBoardController extends ReloadableController {
@override
void handleReloaded(Session session) {
sessionCurrent = session;
accountId.value = session.accounts.keys.first;
_getUserProfile();
}
@@ -65,8 +63,8 @@ class ManageAccountDashBoardController extends ReloadableController {
final arguments = Get.arguments;
log('ManageAccountDashBoardController::_getAccountIdAndUserProfile(): $arguments');
if (arguments is ManageAccountArguments) {
accountId.value = arguments.accountId;
userProfile.value = arguments.userProfile;
sessionCurrent = arguments.session;
accountId.value = sessionCurrent?.accounts.keys.first;
} else {
if (kIsWeb) {
reload();
@@ -81,7 +79,7 @@ class ManageAccountDashBoardController extends ReloadableController {
}
void _getUserProfile() async {
consumeState(_getUserProfileInteractor.execute());
userProfile.value = sessionCurrent != null ? UserProfile(sessionCurrent!.username.value) : null;
}
void openMenuDrawer() {
@@ -103,7 +101,7 @@ class ManageAccountDashBoardController extends ReloadableController {
void goToSettings() {
pushAndPop(AppRoutes.MANAGE_ACCOUNT,
arguments: ManageAccountArguments(accountId.value, userProfile.value));
arguments: ManageAccountArguments(sessionCurrent));
}
void backToMailboxDashBoard() {
@@ -1,15 +1,13 @@
import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:model/model.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
class ManageAccountArguments with EquatableMixin {
final AccountId? accountId;
final UserProfile? userProfile;
final Session? session;
ManageAccountArguments(this.accountId, this.userProfile);
ManageAccountArguments(this.session);
@override
List<Object?> get props => [accountId, userProfile];
List<Object?> get props => [session];
}