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