TF-1625 Remove Rxn<Session> variable and only use Rxn<AccountId> variable to listen change

(cherry picked from commit 9b56575290cbbf3ed47835117529e0d75346d703)
This commit is contained in:
dab246
2023-03-21 17:29:44 +07:00
committed by Dat Vu
parent bb9dbb697a
commit 963613a3b6
10 changed files with 52 additions and 57 deletions
@@ -86,7 +86,7 @@ class EmailRulesController extends BaseController {
void goToCreateNewRule(BuildContext context) async { void goToCreateNewRule(BuildContext context) async {
final accountId = _accountDashBoardController.accountId.value; final accountId = _accountDashBoardController.accountId.value;
final session = _accountDashBoardController.sessionCurrent.value; final session = _accountDashBoardController.sessionCurrent;
if (accountId != null && session != null) { if (accountId != null && session != null) {
final arguments = RulesFilterCreatorArguments(accountId, session); final arguments = RulesFilterCreatorArguments(accountId, session);
@@ -134,7 +134,7 @@ class EmailRulesController extends BaseController {
void editEmailRule(BuildContext context, TMailRule rule) async { void editEmailRule(BuildContext context, TMailRule rule) async {
final accountId = _accountDashBoardController.accountId.value; final accountId = _accountDashBoardController.accountId.value;
final session = _accountDashBoardController.sessionCurrent.value; final session = _accountDashBoardController.sessionCurrent;
if (accountId != null && session != null) { if (accountId != null && session != null) {
final arguments = RulesFilterCreatorArguments( final arguments = RulesFilterCreatorArguments(
accountId, accountId,
@@ -53,7 +53,7 @@ class ForwardController extends BaseController {
ForwardController() { ForwardController() {
recipientController = ForwardRecipientController( recipientController = ForwardRecipientController(
accountId: accountDashBoardController.accountId.value, accountId: accountDashBoardController.accountId.value,
session: accountDashBoardController.sessionCurrent.value); session: accountDashBoardController.sessionCurrent);
} }
@override @override
@@ -94,7 +94,7 @@ class MailboxVisibilityController extends BaseMailboxController {
@override @override
void onReady() { void onReady() {
final session = _accountDashBoardController.sessionCurrent.value; final session = _accountDashBoardController.sessionCurrent;
final accountId = _accountDashBoardController.accountId.value; final accountId = _accountDashBoardController.accountId.value;
if(session != null && accountId != null) { if(session != null && accountId != null) {
getAllMailbox(session, accountId); getAllMailbox(session, accountId);
@@ -194,7 +194,7 @@ class MailboxVisibilityController extends BaseMailboxController {
} }
void _refreshMailboxChanges(jmap.State? newMailboxState) { void _refreshMailboxChanges(jmap.State? newMailboxState) {
final session = _accountDashBoardController.sessionCurrent.value; final session = _accountDashBoardController.sessionCurrent;
final accountId = _accountDashBoardController.accountId.value; final accountId = _accountDashBoardController.accountId.value;
final mailboxState = newMailboxState ?? currentMailboxState; final mailboxState = newMailboxState ?? currentMailboxState;
if (session != null && accountId != null && mailboxState != null) { if (session != null && accountId != null && mailboxState != null) {
@@ -51,10 +51,11 @@ class ManageAccountDashBoardController extends ReloadableController {
final accountId = Rxn<AccountId>(); final accountId = Rxn<AccountId>();
final accountMenuItemSelected = AccountMenuItem.profiles.obs; final accountMenuItemSelected = AccountMenuItem.profiles.obs;
final settingsPageLevel = SettingsPageLevel.universal.obs; final settingsPageLevel = SettingsPageLevel.universal.obs;
final sessionCurrent = Rxn<Session>();
final vacationResponse = Rxn<VacationResponse>(); final vacationResponse = Rxn<VacationResponse>();
final dashboardSettingAction = Rxn<UIAction>(); final dashboardSettingAction = Rxn<UIAction>();
Session? sessionCurrent;
ManageAccountDashBoardController( ManageAccountDashBoardController(
LogoutOidcInteractor logoutOidcInteractor, LogoutOidcInteractor logoutOidcInteractor,
DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor, DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor,
@@ -93,14 +94,14 @@ class ManageAccountDashBoardController extends ReloadableController {
@override @override
void handleReloaded(Session session) { void handleReloaded(Session session) {
sessionCurrent = session;
accountId.value = session.accounts.keys.first; accountId.value = session.accounts.keys.first;
sessionCurrent.value = session;
_getUserProfile(); _getUserProfile();
injectAutoCompleteBindings(sessionCurrent.value, accountId.value); injectAutoCompleteBindings(sessionCurrent, accountId.value);
injectForwardBindings(sessionCurrent.value, accountId.value); injectForwardBindings(sessionCurrent, accountId.value);
injectRuleFilterBindings(sessionCurrent.value, accountId.value); injectRuleFilterBindings(sessionCurrent, accountId.value);
injectMailboxVisibilityBindings(); injectMailboxVisibilityBindings();
injectVacationBindings(sessionCurrent.value, accountId.value); injectVacationBindings(sessionCurrent, accountId.value);
_getVacationResponse(); _getVacationResponse();
} }
@@ -108,14 +109,14 @@ class ManageAccountDashBoardController extends ReloadableController {
final arguments = Get.arguments; final arguments = Get.arguments;
log('ManageAccountDashBoardController::_getAccountIdAndUserProfile(): $arguments'); log('ManageAccountDashBoardController::_getAccountIdAndUserProfile(): $arguments');
if (arguments is ManageAccountArguments) { if (arguments is ManageAccountArguments) {
sessionCurrent = arguments.session;
accountId.value = arguments.session?.accounts.keys.first; accountId.value = arguments.session?.accounts.keys.first;
sessionCurrent.value = arguments.session;
_getUserProfile(); _getUserProfile();
injectAutoCompleteBindings(sessionCurrent.value, accountId.value); injectAutoCompleteBindings(sessionCurrent, accountId.value);
injectForwardBindings(sessionCurrent.value, accountId.value); injectForwardBindings(sessionCurrent, accountId.value);
injectRuleFilterBindings(sessionCurrent.value, accountId.value); injectRuleFilterBindings(sessionCurrent, accountId.value);
injectMailboxVisibilityBindings(); injectMailboxVisibilityBindings();
injectVacationBindings(sessionCurrent.value, accountId.value); injectVacationBindings(sessionCurrent, accountId.value);
_getVacationResponse(); _getVacationResponse();
if (arguments.menuSettingCurrent != null) { if (arguments.menuSettingCurrent != null) {
_goToSettingMenuCurrent(arguments.menuSettingCurrent!); _goToSettingMenuCurrent(arguments.menuSettingCurrent!);
@@ -154,8 +155,8 @@ class ManageAccountDashBoardController extends ReloadableController {
} }
void _getUserProfile() async { void _getUserProfile() async {
log('ManageAccountDashBoardController::_getUserProfile(): ${sessionCurrent.value}'); log('ManageAccountDashBoardController::_getUserProfile(): $sessionCurrent');
userProfile.value = sessionCurrent.value != null ? UserProfile(sessionCurrent.value!.username.value) : null; userProfile.value = sessionCurrent != null ? UserProfile(sessionCurrent!.username.value) : null;
} }
void _getVacationResponse() { void _getVacationResponse() {
@@ -211,7 +212,7 @@ class ManageAccountDashBoardController extends ReloadableController {
void goToSettings() { void goToSettings() {
pushAndPop(AppRoutes.settings, pushAndPop(AppRoutes.settings,
arguments: ManageAccountArguments(sessionCurrent.value)); arguments: ManageAccountArguments(sessionCurrent));
} }
void backToMailboxDashBoard(BuildContext context) { void backToMailboxDashBoard(BuildContext context) {
@@ -225,32 +226,26 @@ class ManageAccountDashBoardController extends ReloadableController {
} }
} }
bool checkAvailableVacationInSession() { bool get isVacationCapabilitySupported {
try { if (accountId.value != null && sessionCurrent != null) {
requireCapability(sessionCurrent.value!, accountId.value!, [CapabilityIdentifier.jmapVacationResponse]); return [CapabilityIdentifier.jmapVacationResponse].isSupported(sessionCurrent!, accountId.value!);
return true; } else {
} catch(e) {
logError('ManageAccountDashBoardController::checkAvailableVacationInSession(): exception = $e');
return false; return false;
} }
} }
bool checkAvailableRuleFilterInSession() { bool get isRuleFilterCapabilitySupported {
try { if (accountId.value != null && sessionCurrent != null) {
requireCapability(sessionCurrent.value!, accountId.value!, [capabilityRuleFilter]); return [capabilityRuleFilter].isSupported(sessionCurrent!, accountId.value!);
return true; } else {
} catch(e) {
logError('ManageAccountDashBoardController::checkAvailableRuleFilterInSession(): exception = $e');
return false; return false;
} }
} }
bool checkAvailableForwardInSession() { bool get isForwardCapabilitySupported {
try { if (accountId.value != null && sessionCurrent != null) {
requireCapability(sessionCurrent.value!, accountId.value!, [capabilityForward]); return [capabilityForward].isSupported(sessionCurrent!, accountId.value!);
return true; } else {
} catch(e) {
logError('ManageAccountDashBoardController::checkAvailableRuleFilterInSession(): exception = $e');
return false; return false;
} }
} }
@@ -141,7 +141,7 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
controller.userProfile.value, controller.userProfile.value,
onLogoutAction: () { onLogoutAction: () {
popBack(); popBack();
controller.logout(controller.sessionCurrent.value, controller.accountId.value); controller.logout(controller.sessionCurrent, controller.accountId.value);
}, },
onSettingAction: () { onSettingAction: () {
popBack(); popBack();
@@ -164,13 +164,13 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
case AccountMenuItem.languageAndRegion: case AccountMenuItem.languageAndRegion:
return LanguageAndRegionView(); return LanguageAndRegionView();
case AccountMenuItem.emailRules: case AccountMenuItem.emailRules:
if(controller.checkAvailableRuleFilterInSession()){ if(controller.isRuleFilterCapabilitySupported){
return EmailRulesView(); return EmailRulesView();
} else { } else {
return const SizedBox.shrink(); return const SizedBox.shrink();
} }
case AccountMenuItem.forward: case AccountMenuItem.forward:
if(controller.checkAvailableForwardInSession()){ if(controller.isForwardCapabilitySupported){
return ForwardView(); return ForwardView();
} else { } else {
return const SizedBox.shrink(); return const SizedBox.shrink();
@@ -18,7 +18,7 @@ class ManageAccountMenuController extends BaseController {
]); ]);
void _initWorker() { void _initWorker() {
sessionWorker = ever(dashBoardController.sessionCurrent, (_) { sessionWorker = ever(dashBoardController.accountId, (_) {
_createListAccountMenu(); _createListAccountMenu();
}); });
} }
@@ -37,13 +37,13 @@ class ManageAccountMenuController extends BaseController {
void _createListAccountMenu(){ void _createListAccountMenu(){
listAccountMenuItem.clear(); listAccountMenuItem.clear();
listAccountMenuItem.add(AccountMenuItem.profiles); listAccountMenuItem.add(AccountMenuItem.profiles);
if (dashBoardController.checkAvailableRuleFilterInSession()) { if (dashBoardController.isRuleFilterCapabilitySupported) {
listAccountMenuItem.add(AccountMenuItem.emailRules); listAccountMenuItem.add(AccountMenuItem.emailRules);
} }
if (dashBoardController.checkAvailableForwardInSession()) { if (dashBoardController.isForwardCapabilitySupported) {
listAccountMenuItem.add(AccountMenuItem.forward); listAccountMenuItem.add(AccountMenuItem.forward);
} }
if (dashBoardController.checkAvailableVacationInSession()) { if (dashBoardController.isVacationCapabilitySupported) {
listAccountMenuItem.add(AccountMenuItem.vacation); listAccountMenuItem.add(AccountMenuItem.vacation);
} }
listAccountMenuItem.addAll( listAccountMenuItem.addAll(
@@ -118,7 +118,7 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
child: InkWell( child: InkWell(
onTap: () { onTap: () {
controller.logout( controller.logout(
controller.dashBoardController.sessionCurrent.value, controller.dashBoardController.sessionCurrent,
controller.dashBoardController.accountId.value controller.dashBoardController.accountId.value
); );
}, },
@@ -50,7 +50,7 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils) endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils)
), ),
Obx(() { Obx(() {
if (controller.manageAccountDashboardController.checkAvailableRuleFilterInSession()) { if (controller.manageAccountDashboardController.isRuleFilterCapabilitySupported) {
return Column(children: [ return Column(children: [
SettingFirstLevelTileBuilder( SettingFirstLevelTileBuilder(
AccountMenuItem.emailRules.getName(context), AccountMenuItem.emailRules.getName(context),
@@ -70,7 +70,7 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
} }
}), }),
Obx(() { Obx(() {
if (controller.manageAccountDashboardController.checkAvailableForwardInSession()) { if (controller.manageAccountDashboardController.isForwardCapabilitySupported) {
return Column(children: [ return Column(children: [
SettingFirstLevelTileBuilder( SettingFirstLevelTileBuilder(
AccountMenuItem.forward.getName(context), AccountMenuItem.forward.getName(context),
@@ -90,7 +90,7 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
} }
}), }),
Obx(() { Obx(() {
if (controller.manageAccountDashboardController.checkAvailableVacationInSession()) { if (controller.manageAccountDashboardController.isVacationCapabilitySupported) {
return Column(children: [ return Column(children: [
SettingFirstLevelTileBuilder( SettingFirstLevelTileBuilder(
AccountMenuItem.vacation.getName(context), AccountMenuItem.vacation.getName(context),
@@ -138,7 +138,7 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
AppLocalizations.of(context).sign_out, AppLocalizations.of(context).sign_out,
_imagePaths.icSignOut, _imagePaths.icSignOut,
() => controller.manageAccountDashboardController.logout( () => controller.manageAccountDashboardController.logout(
controller.manageAccountDashboardController.sessionCurrent.value, controller.manageAccountDashboardController.sessionCurrent,
controller.manageAccountDashboardController.accountId.value) controller.manageAccountDashboardController.accountId.value)
), ),
]), ]),
@@ -194,19 +194,19 @@ class SettingsView extends GetWidget<SettingsController> {
case AccountMenuItem.languageAndRegion: case AccountMenuItem.languageAndRegion:
return LanguageAndRegionView(); return LanguageAndRegionView();
case AccountMenuItem.emailRules: case AccountMenuItem.emailRules:
if (controller.manageAccountDashboardController.checkAvailableRuleFilterInSession()) { if (controller.manageAccountDashboardController.isRuleFilterCapabilitySupported) {
return EmailRulesView(); return EmailRulesView();
} else { } else {
return const SizedBox.shrink(); return const SizedBox.shrink();
} }
case AccountMenuItem.forward: case AccountMenuItem.forward:
if (controller.manageAccountDashboardController.checkAvailableForwardInSession()) { if (controller.manageAccountDashboardController.isForwardCapabilitySupported) {
return ForwardView(); return ForwardView();
} else { } else {
return const SizedBox.shrink(); return const SizedBox.shrink();
} }
case AccountMenuItem.vacation: case AccountMenuItem.vacation:
if (controller.manageAccountDashboardController.checkAvailableVacationInSession()) { if (controller.manageAccountDashboardController.isVacationCapabilitySupported) {
return VacationView(); return VacationView();
} else { } else {
return const SizedBox.shrink(); return const SizedBox.shrink();
@@ -101,7 +101,7 @@ class IdentitiesController extends BaseController {
void _initWorker() { void _initWorker() {
accountIdWorker = ever(_accountDashBoardController.accountId, (accountId) { accountIdWorker = ever(_accountDashBoardController.accountId, (accountId) {
if (accountId is AccountId) { if (accountId is AccountId) {
final session = _accountDashBoardController.sessionCurrent.value; final session = _accountDashBoardController.sessionCurrent;
if (session != null) { if (session != null) {
_getAllIdentities(session, accountId); _getAllIdentities(session, accountId);
} }
@@ -126,7 +126,7 @@ class IdentitiesController extends BaseController {
listAllIdentities.clear(); listAllIdentities.clear();
final accountId = _accountDashBoardController.accountId.value; final accountId = _accountDashBoardController.accountId.value;
final session = _accountDashBoardController.sessionCurrent.value; final session = _accountDashBoardController.sessionCurrent;
if (accountId != null && session != null) { if (accountId != null && session != null) {
_getAllIdentities(session, accountId); _getAllIdentities(session, accountId);
} }
@@ -152,7 +152,7 @@ class IdentitiesController extends BaseController {
void goToCreateNewIdentity(BuildContext context) async { void goToCreateNewIdentity(BuildContext context) async {
final accountId = _accountDashBoardController.accountId.value; final accountId = _accountDashBoardController.accountId.value;
final userProfile = _accountDashBoardController.userProfile.value; final userProfile = _accountDashBoardController.userProfile.value;
final session = _accountDashBoardController.sessionCurrent.value; final session = _accountDashBoardController.sessionCurrent;
if (accountId != null && session != null && userProfile != null) { if (accountId != null && session != null && userProfile != null) {
final arguments = IdentityCreatorArguments(accountId, session, userProfile); final arguments = IdentityCreatorArguments(accountId, session, userProfile);
@@ -227,7 +227,7 @@ class IdentitiesController extends BaseController {
void _deleteIdentityAction(Identity identity) { void _deleteIdentityAction(Identity identity) {
popBack(); popBack();
final session = _accountDashBoardController.sessionCurrent.value; final session = _accountDashBoardController.sessionCurrent;
final accountId = _accountDashBoardController.accountId.value; final accountId = _accountDashBoardController.accountId.value;
if (accountId != null && session != null && identity.id != null) { if (accountId != null && session != null && identity.id != null) {
consumeState(_deleteIdentityInteractor.execute(session, accountId, identity.id!)); consumeState(_deleteIdentityInteractor.execute(session, accountId, identity.id!));
@@ -272,7 +272,7 @@ class IdentitiesController extends BaseController {
void goToEditIdentity(BuildContext context, Identity identity) async { void goToEditIdentity(BuildContext context, Identity identity) async {
final accountId = _accountDashBoardController.accountId.value; final accountId = _accountDashBoardController.accountId.value;
final userProfile = _accountDashBoardController.userProfile.value; final userProfile = _accountDashBoardController.userProfile.value;
final session = _accountDashBoardController.sessionCurrent.value; final session = _accountDashBoardController.sessionCurrent;
if (accountId != null && session != null && userProfile != null) { if (accountId != null && session != null && userProfile != null) {
final arguments = IdentityCreatorArguments( final arguments = IdentityCreatorArguments(
accountId, accountId,