TF-1074 Handle go to path /session
This commit is contained in:
@@ -7,6 +7,8 @@ class DynamicUrlInterceptors extends InterceptorsWrapper {
|
|||||||
_baseUrl = url;
|
_baseUrl = url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String? get baseUrl => _baseUrl;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
|
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
|
||||||
if (_baseUrl != null) {
|
if (_baseUrl != null) {
|
||||||
|
|||||||
@@ -14,7 +14,9 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/t
|
|||||||
import 'package:tmail_ui_user/main/error/capability_validator.dart';
|
import 'package:tmail_ui_user/main/error/capability_validator.dart';
|
||||||
|
|
||||||
abstract class BaseController extends GetxController
|
abstract class BaseController extends GetxController
|
||||||
with MessageDialogActionMixin, PopupContextMenuActionMixin, ViewAsDialogActionMixin {
|
with MessageDialogActionMixin,
|
||||||
|
PopupContextMenuActionMixin,
|
||||||
|
ViewAsDialogActionMixin {
|
||||||
final viewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
|
final viewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
|
||||||
FpsCallback? fpsCallback;
|
FpsCallback? fpsCallback;
|
||||||
|
|
||||||
|
|||||||
@@ -73,11 +73,7 @@ class ContactController extends BaseController {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
textInputSearchController?.dispose();
|
_disposeWidget();
|
||||||
textInputSearchController = null;
|
|
||||||
textInputSearchFocus?.dispose();
|
|
||||||
textInputSearchFocus = null;
|
|
||||||
_deBouncerTime.cancel();
|
|
||||||
super.onClose();
|
super.onClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,16 +163,19 @@ class ContactController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void selectContact(BuildContext context, EmailAddress emailAddress) {
|
void _disposeWidget() {
|
||||||
FocusScope.of(context).unfocus();
|
|
||||||
|
|
||||||
if (BuildUtils.isWeb) {
|
|
||||||
textInputSearchFocus?.dispose();
|
textInputSearchFocus?.dispose();
|
||||||
textInputSearchFocus = null;
|
textInputSearchFocus = null;
|
||||||
textInputSearchController?.dispose();
|
textInputSearchController?.dispose();
|
||||||
textInputSearchController = null;
|
textInputSearchController = null;
|
||||||
_deBouncerTime.cancel();
|
_deBouncerTime.cancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
void selectContact(BuildContext context, EmailAddress emailAddress) {
|
||||||
|
FocusScope.of(context).unfocus();
|
||||||
|
|
||||||
|
if (BuildUtils.isWeb) {
|
||||||
|
_disposeWidget();
|
||||||
onSelectedContactCallback?.call(emailAddress);
|
onSelectedContactCallback?.call(emailAddress);
|
||||||
} else {
|
} else {
|
||||||
popBack(result: emailAddress);
|
popBack(result: emailAddress);
|
||||||
@@ -188,12 +187,7 @@ class ContactController extends BaseController {
|
|||||||
FocusScope.of(context).unfocus();
|
FocusScope.of(context).unfocus();
|
||||||
|
|
||||||
if (BuildUtils.isWeb) {
|
if (BuildUtils.isWeb) {
|
||||||
textInputSearchFocus?.dispose();
|
_disposeWidget();
|
||||||
textInputSearchFocus = null;
|
|
||||||
textInputSearchController?.dispose();
|
|
||||||
textInputSearchController = null;
|
|
||||||
_deBouncerTime.cancel();
|
|
||||||
|
|
||||||
onDismissContactView?.call();
|
onDismissContactView?.call();
|
||||||
} else {
|
} else {
|
||||||
popBack();
|
popBack();
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import 'package:flutter_svg/flutter_svg.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||||
import 'package:jmap_dart_client/jmap/identities/identity.dart';
|
import 'package:jmap_dart_client/jmap/identities/identity.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||||
@@ -507,47 +508,28 @@ class EmailController extends BaseController with AppLoaderMixin {
|
|||||||
context: context,
|
context: context,
|
||||||
arguments: arguments,
|
arguments: arguments,
|
||||||
onSelectedMailbox: (destinationMailbox) {
|
onSelectedMailbox: (destinationMailbox) {
|
||||||
|
if (mailboxDashBoardController.sessionCurrent != null) {
|
||||||
_dispatchMoveToAction(
|
_dispatchMoveToAction(
|
||||||
context,
|
context,
|
||||||
accountId,
|
accountId,
|
||||||
|
mailboxDashBoardController.sessionCurrent!,
|
||||||
email,
|
email,
|
||||||
currentMailbox,
|
currentMailbox,
|
||||||
destinationMailbox);
|
destinationMailbox);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
final destinationMailbox = await push(
|
final destinationMailbox = await push(
|
||||||
AppRoutes.destinationPicker,
|
AppRoutes.destinationPicker,
|
||||||
arguments: arguments);
|
arguments: arguments);
|
||||||
|
|
||||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox && mailboxDashBoardController.sessionCurrent != null) {
|
if (destinationMailbox != null &&
|
||||||
if (destinationMailbox.isTrash) {
|
destinationMailbox is PresentationMailbox &&
|
||||||
_moveToTrashAction(context, accountId, MoveToMailboxRequest(
|
mailboxDashBoardController.sessionCurrent != null) {
|
||||||
{currentMailbox.id: [email.id]},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToTrash));
|
|
||||||
} else if (destinationMailbox.isSpam) {
|
|
||||||
_moveToSpamAction(context, accountId, MoveToMailboxRequest(
|
|
||||||
{currentMailbox.id: [email.id]},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToSpam));
|
|
||||||
} else {
|
|
||||||
_moveToMailbox(accountId, MoveToMailboxRequest(
|
|
||||||
{currentMailbox.id: [email.id]},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToMailbox,
|
|
||||||
destinationPath: destinationMailbox.mailboxPath));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (destinationMailbox is PresentationMailbox) {
|
|
||||||
_dispatchMoveToAction(
|
_dispatchMoveToAction(
|
||||||
context,
|
context,
|
||||||
accountId,
|
accountId,
|
||||||
|
mailboxDashBoardController.sessionCurrent!,
|
||||||
email,
|
email,
|
||||||
currentMailbox,
|
currentMailbox,
|
||||||
destinationMailbox);
|
destinationMailbox);
|
||||||
@@ -559,30 +541,31 @@ class EmailController extends BaseController with AppLoaderMixin {
|
|||||||
void _dispatchMoveToAction(
|
void _dispatchMoveToAction(
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
|
Session session,
|
||||||
PresentationEmail emailSelected,
|
PresentationEmail emailSelected,
|
||||||
PresentationMailbox currentMailbox,
|
PresentationMailbox currentMailbox,
|
||||||
PresentationMailbox destinationMailbox
|
PresentationMailbox destinationMailbox
|
||||||
) {
|
) {
|
||||||
if (destinationMailbox.isTrash) {
|
if (destinationMailbox.isTrash) {
|
||||||
_moveToTrashAction(context, accountId, MoveToMailboxRequest(
|
_moveToTrashAction(context, accountId, MoveToMailboxRequest(
|
||||||
[emailSelected.id],
|
{currentMailbox.id: [emailSelected.id]},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToTrash));
|
EmailActionType.moveToTrash));
|
||||||
} else if (destinationMailbox.isSpam) {
|
} else if (destinationMailbox.isSpam) {
|
||||||
_moveToSpamAction(context, accountId, MoveToMailboxRequest(
|
_moveToSpamAction(context, accountId, MoveToMailboxRequest(
|
||||||
[emailSelected.id],
|
{currentMailbox.id: [emailSelected.id]},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToSpam));
|
EmailActionType.moveToSpam));
|
||||||
} else {
|
} else {
|
||||||
_moveToMailbox(accountId, MoveToMailboxRequest(
|
_moveToMailbox(accountId, MoveToMailboxRequest(
|
||||||
[emailSelected.id],
|
{currentMailbox.id: [emailSelected.id]},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToMailbox,
|
EmailActionType.moveToMailbox,
|
||||||
destinationPath: destinationMailbox.mailboxPath));
|
destinationPath: destinationMailbox.mailboxPath));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ class HomeController extends BaseController {
|
|||||||
_authorizationIsolateInterceptors.setTokenAndAuthorityOidc(
|
_authorizationIsolateInterceptors.setTokenAndAuthorityOidc(
|
||||||
newToken: storedTokenOidcSuccess.tokenOidc.toToken(),
|
newToken: storedTokenOidcSuccess.tokenOidc.toToken(),
|
||||||
newConfig: storedTokenOidcSuccess.oidcConfiguration);
|
newConfig: storedTokenOidcSuccess.oidcConfiguration);
|
||||||
pushAndPop(AppRoutes.session);
|
pushAndPop(AppRoutes.session, arguments: _dynamicUrlInterceptors.baseUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _goToSessionWithBasicAuth(GetCredentialViewState credentialViewState) {
|
void _goToSessionWithBasicAuth(GetCredentialViewState credentialViewState) {
|
||||||
@@ -212,6 +212,6 @@ class HomeController extends BaseController {
|
|||||||
credentialViewState.userName.userName,
|
credentialViewState.userName.userName,
|
||||||
credentialViewState.password.value,
|
credentialViewState.password.value,
|
||||||
);
|
);
|
||||||
pushAndPop(AppRoutes.session);
|
pushAndPop(AppRoutes.session, arguments: _dynamicUrlInterceptors.baseUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -94,7 +94,6 @@ class LoginController extends ReloadableController {
|
|||||||
this._getAllRecentLoginUrlOnMobileInteractor,
|
this._getAllRecentLoginUrlOnMobileInteractor,
|
||||||
this._saveLoginUsernameOnMobileInteractor,
|
this._saveLoginUsernameOnMobileInteractor,
|
||||||
this._getAllRecentLoginUsernameOnMobileInteractor,
|
this._getAllRecentLoginUsernameOnMobileInteractor,
|
||||||
);
|
|
||||||
) : super(logoutOidcInteractor,
|
) : super(logoutOidcInteractor,
|
||||||
deleteAuthorityOidcInteractor,
|
deleteAuthorityOidcInteractor,
|
||||||
getAuthenticatedAccountInteractor);
|
getAuthenticatedAccountInteractor);
|
||||||
@@ -312,7 +311,7 @@ class LoginController extends ReloadableController {
|
|||||||
_authorizationIsolateInterceptors.setTokenAndAuthorityOidc(
|
_authorizationIsolateInterceptors.setTokenAndAuthorityOidc(
|
||||||
newToken: success.tokenOIDC.toToken(),
|
newToken: success.tokenOIDC.toToken(),
|
||||||
newConfig: success.configuration);
|
newConfig: success.configuration);
|
||||||
pushAndPop(AppRoutes.session);
|
pushAndPop(AppRoutes.session, arguments: _dynamicUrlInterceptors.baseUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _loginAction(Uri baseUrl, UserName userName, Password password) async {
|
void _loginAction(Uri baseUrl, UserName userName, Password password) async {
|
||||||
@@ -324,7 +323,7 @@ class LoginController extends ReloadableController {
|
|||||||
_dynamicUrlInterceptors.changeBaseUrl(kIsWeb ? AppConfig.baseUrl : _urlText);
|
_dynamicUrlInterceptors.changeBaseUrl(kIsWeb ? AppConfig.baseUrl : _urlText);
|
||||||
_authorizationInterceptors.setBasicAuthorization(_userNameText, _passwordText);
|
_authorizationInterceptors.setBasicAuthorization(_userNameText, _passwordText);
|
||||||
_authorizationIsolateInterceptors.setBasicAuthorization(_userNameText, _passwordText);
|
_authorizationIsolateInterceptors.setBasicAuthorization(_userNameText, _passwordText);
|
||||||
pushAndPop(AppRoutes.session);
|
pushAndPop(AppRoutes.session, arguments: _dynamicUrlInterceptors.baseUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _loginFailureAction(FeatureFailure failure) {
|
void _loginFailureAction(FeatureFailure failure) {
|
||||||
|
|||||||
+18
-34
@@ -623,46 +623,29 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
context: context,
|
context: context,
|
||||||
arguments: arguments,
|
arguments: arguments,
|
||||||
onSelectedMailbox: (destinationMailbox) {
|
onSelectedMailbox: (destinationMailbox) {
|
||||||
|
if (sessionCurrent != null) {
|
||||||
_dispatchMoveToMultipleAction(
|
_dispatchMoveToMultipleAction(
|
||||||
accountId.value!,
|
accountId.value!,
|
||||||
|
sessionCurrent!,
|
||||||
listEmails.listEmailIds,
|
listEmails.listEmailIds,
|
||||||
currentMailbox, destinationMailbox);
|
currentMailbox,
|
||||||
|
destinationMailbox);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
final destinationMailbox = await push(
|
final destinationMailbox = await push(
|
||||||
AppRoutes.destinationPicker,
|
AppRoutes.destinationPicker,
|
||||||
arguments: arguments);
|
arguments: arguments);
|
||||||
|
|
||||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
if (destinationMailbox != null &&
|
||||||
if (destinationMailbox.isTrash) {
|
destinationMailbox is PresentationMailbox &&
|
||||||
_moveSelectedEmailMultipleToMailboxAction(accountId.value!, MoveToMailboxRequest(
|
sessionCurrent != null) {
|
||||||
{mailboxCurrent.id: listEmails.listEmailIds},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
sessionCurrent!,
|
|
||||||
EmailActionType.moveToTrash));
|
|
||||||
} else if (destinationMailbox.isSpam) {
|
|
||||||
_moveSelectedEmailMultipleToMailboxAction(accountId.value!, MoveToMailboxRequest(
|
|
||||||
{mailboxCurrent.id: listEmails.listEmailIds},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
sessionCurrent!,
|
|
||||||
EmailActionType.moveToSpam));
|
|
||||||
} else {
|
|
||||||
_moveSelectedEmailMultipleToMailboxAction(accountId.value!, MoveToMailboxRequest(
|
|
||||||
{mailboxCurrent.id: listEmails.listEmailIds},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
sessionCurrent!,
|
|
||||||
EmailActionType.moveToMailbox,
|
|
||||||
destinationPath: destinationMailbox.mailboxPath));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
|
||||||
_dispatchMoveToMultipleAction(
|
_dispatchMoveToMultipleAction(
|
||||||
accountId.value!,
|
accountId.value!,
|
||||||
|
sessionCurrent!,
|
||||||
listEmails.listEmailIds,
|
listEmails.listEmailIds,
|
||||||
currentMailbox, destinationMailbox);
|
currentMailbox,
|
||||||
|
destinationMailbox);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -670,30 +653,31 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
|
|
||||||
void _dispatchMoveToMultipleAction(
|
void _dispatchMoveToMultipleAction(
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
|
Session session,
|
||||||
List<EmailId> listEmailIds,
|
List<EmailId> listEmailIds,
|
||||||
PresentationMailbox currentMailbox,
|
PresentationMailbox currentMailbox,
|
||||||
PresentationMailbox destinationMailbox
|
PresentationMailbox destinationMailbox
|
||||||
) {
|
) {
|
||||||
if (destinationMailbox.isTrash) {
|
if (destinationMailbox.isTrash) {
|
||||||
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
|
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
|
||||||
listEmailIds,
|
{currentMailbox.id: listEmailIds},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToTrash));
|
EmailActionType.moveToTrash));
|
||||||
} else if (destinationMailbox.isSpam) {
|
} else if (destinationMailbox.isSpam) {
|
||||||
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
|
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
|
||||||
listEmailIds,
|
{currentMailbox.id: listEmailIds},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToSpam));
|
EmailActionType.moveToSpam));
|
||||||
} else {
|
} else {
|
||||||
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
|
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
|
||||||
listEmailIds,
|
{currentMailbox.id: listEmailIds},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToMailbox,
|
EmailActionType.moveToMailbox,
|
||||||
destinationPath: destinationMailbox.mailboxPath));
|
destinationPath: destinationMailbox.mailboxPath));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,18 +3,22 @@ import 'package:core/presentation/state/failure.dart';
|
|||||||
import 'package:core/presentation/utils/app_toast.dart';
|
import 'package:core/presentation/utils/app_toast.dart';
|
||||||
import 'package:core/domain/exceptions/remote_exception.dart';
|
import 'package:core/domain/exceptions/remote_exception.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||||
|
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
|
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart';
|
import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
|
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/session/domain/state/get_session_state.dart';
|
import 'package:tmail_ui_user/features/session/domain/state/get_session_state.dart';
|
||||||
import 'package:tmail_ui_user/features/session/domain/usecases/get_session_interactor.dart';
|
import 'package:tmail_ui_user/features/session/domain/usecases/get_session_interactor.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/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';
|
||||||
|
|
||||||
class SessionController extends GetxController {
|
class SessionController extends ReloadableController {
|
||||||
final GetSessionInteractor _getSessionInteractor;
|
final GetSessionInteractor _getSessionInteractor;
|
||||||
final DeleteCredentialInteractor _deleteCredentialInteractor;
|
final DeleteCredentialInteractor _deleteCredentialInteractor;
|
||||||
final CachingManager _cachingManager;
|
final CachingManager _cachingManager;
|
||||||
@@ -24,6 +28,9 @@ class SessionController extends GetxController {
|
|||||||
final DynamicUrlInterceptors _dynamicUrlInterceptors;
|
final DynamicUrlInterceptors _dynamicUrlInterceptors;
|
||||||
|
|
||||||
SessionController(
|
SessionController(
|
||||||
|
LogoutOidcInteractor logoutOidcInteractor,
|
||||||
|
DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor,
|
||||||
|
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
|
||||||
this._getSessionInteractor,
|
this._getSessionInteractor,
|
||||||
this._deleteCredentialInteractor,
|
this._deleteCredentialInteractor,
|
||||||
this._cachingManager,
|
this._cachingManager,
|
||||||
@@ -31,12 +38,24 @@ class SessionController extends GetxController {
|
|||||||
this._authorizationInterceptors,
|
this._authorizationInterceptors,
|
||||||
this._appToast,
|
this._appToast,
|
||||||
this._dynamicUrlInterceptors,
|
this._dynamicUrlInterceptors,
|
||||||
);
|
) : super(logoutOidcInteractor,
|
||||||
|
deleteAuthorityOidcInteractor,
|
||||||
|
getAuthenticatedAccountInteractor);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
super.onReady();
|
super.onReady();
|
||||||
|
final arguments = Get.arguments;
|
||||||
|
if (arguments != null && arguments is String) {
|
||||||
_getSession();
|
_getSession();
|
||||||
|
} else {
|
||||||
|
reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void handleReloaded(Session session) {
|
||||||
|
pushAndPop(AppRoutes.dashboard, arguments: session);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _getSession() async {
|
void _getSession() async {
|
||||||
@@ -89,4 +108,10 @@ class SessionController extends GetxController {
|
|||||||
_goToLogin();
|
_goToLogin();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void onDone() {}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void onError(error) {}
|
||||||
}
|
}
|
||||||
@@ -3,18 +3,27 @@ import 'package:core/presentation/utils/app_toast.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
|
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/data/datasource/account_datasource.dart';
|
||||||
import 'package:tmail_ui_user/features/login/data/datasource/authentication_oidc_datasource.dart';
|
import 'package:tmail_ui_user/features/login/data/datasource/authentication_oidc_datasource.dart';
|
||||||
import 'package:tmail_ui_user/features/login/data/datasource_impl/authentication_oidc_datasource_impl.dart';
|
import 'package:tmail_ui_user/features/login/data/datasource_impl/authentication_oidc_datasource_impl.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/data/datasource_impl/hive_account_datasource_impl.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/data/local/account_cache_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/login/data/local/oidc_configuration_cache_manager.dart';
|
import 'package:tmail_ui_user/features/login/data/local/oidc_configuration_cache_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/login/data/local/token_oidc_cache_manager.dart';
|
import 'package:tmail_ui_user/features/login/data/local/token_oidc_cache_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart';
|
import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart';
|
||||||
import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart';
|
import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart';
|
||||||
import 'package:tmail_ui_user/features/login/data/network/oidc_http_client.dart';
|
import 'package:tmail_ui_user/features/login/data/network/oidc_http_client.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/data/repository/account_repository_impl.dart';
|
||||||
import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc_repository_impl.dart';
|
import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc_repository_impl.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart';
|
import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
|
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_credential_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_token_oidc_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/session/domain/usecases/get_session_interactor.dart';
|
import 'package:tmail_ui_user/features/session/domain/usecases/get_session_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/session/presentation/session_controller.dart';
|
import 'package:tmail_ui_user/features/session/presentation/session_controller.dart';
|
||||||
|
|
||||||
@@ -23,6 +32,9 @@ class SessionPageBindings extends BaseBindings {
|
|||||||
@override
|
@override
|
||||||
void bindingsController() {
|
void bindingsController() {
|
||||||
Get.lazyPut(() => SessionController(
|
Get.lazyPut(() => SessionController(
|
||||||
|
Get.find<LogoutOidcInteractor>(),
|
||||||
|
Get.find<DeleteAuthorityOidcInteractor>(),
|
||||||
|
Get.find<GetAuthenticatedAccountInteractor>(),
|
||||||
Get.find<GetSessionInteractor>(),
|
Get.find<GetSessionInteractor>(),
|
||||||
Get.find<DeleteCredentialInteractor>(),
|
Get.find<DeleteCredentialInteractor>(),
|
||||||
Get.find<CachingManager>(),
|
Get.find<CachingManager>(),
|
||||||
@@ -36,6 +48,7 @@ class SessionPageBindings extends BaseBindings {
|
|||||||
@override
|
@override
|
||||||
void bindingsDataSource() {
|
void bindingsDataSource() {
|
||||||
Get.lazyPut<AuthenticationOIDCDataSource>(() => Get.find<AuthenticationOIDCDataSourceImpl>());
|
Get.lazyPut<AuthenticationOIDCDataSource>(() => Get.find<AuthenticationOIDCDataSourceImpl>());
|
||||||
|
Get.lazyPut<AccountDatasource>(() => Get.find<HiveAccountDatasourceImpl>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -46,6 +59,9 @@ class SessionPageBindings extends BaseBindings {
|
|||||||
Get.find<TokenOidcCacheManager>(),
|
Get.find<TokenOidcCacheManager>(),
|
||||||
Get.find<OidcConfigurationCacheManager>()
|
Get.find<OidcConfigurationCacheManager>()
|
||||||
));
|
));
|
||||||
|
Get.lazyPut(() => HiveAccountDatasourceImpl(
|
||||||
|
Get.find<AccountCacheManager>()
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -53,15 +69,30 @@ class SessionPageBindings extends BaseBindings {
|
|||||||
Get.lazyPut(() => DeleteAuthorityOidcInteractor(
|
Get.lazyPut(() => DeleteAuthorityOidcInteractor(
|
||||||
Get.find<AuthenticationOIDCRepository>(),
|
Get.find<AuthenticationOIDCRepository>(),
|
||||||
Get.find<CredentialRepository>()));
|
Get.find<CredentialRepository>()));
|
||||||
|
Get.lazyPut(() => LogoutOidcInteractor(
|
||||||
|
Get.find<AccountRepository>(),
|
||||||
|
Get.find<AuthenticationOIDCRepository>(),
|
||||||
|
));
|
||||||
|
Get.lazyPut(() => GetStoredTokenOidcInteractor(
|
||||||
|
Get.find<AuthenticationOIDCRepository>(),
|
||||||
|
Get.find<CredentialRepository>(),
|
||||||
|
));
|
||||||
|
Get.lazyPut(() => GetAuthenticatedAccountInteractor(
|
||||||
|
Get.find<AccountRepository>(),
|
||||||
|
Get.find<GetCredentialInteractor>(),
|
||||||
|
Get.find<GetStoredTokenOidcInteractor>(),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void bindingsRepository() {
|
void bindingsRepository() {
|
||||||
Get.lazyPut<AuthenticationOIDCRepository>(() => Get.find<AuthenticationOIDCRepositoryImpl>());
|
Get.lazyPut<AuthenticationOIDCRepository>(() => Get.find<AuthenticationOIDCRepositoryImpl>());
|
||||||
|
Get.lazyPut<AccountRepository>(() => Get.find<AccountRepositoryImpl>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void bindingsRepositoryImpl() {
|
void bindingsRepositoryImpl() {
|
||||||
Get.lazyPut(() => AuthenticationOIDCRepositoryImpl(Get.find<AuthenticationOIDCDataSource>()));
|
Get.lazyPut(() => AuthenticationOIDCRepositoryImpl(Get.find<AuthenticationOIDCDataSource>()));
|
||||||
|
Get.lazyPut(() => AccountRepositoryImpl(Get.find<AccountDatasource>()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
|
|
||||||
|
|
||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
import 'package:core/presentation/resources/image_paths.dart';
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||||
@@ -10,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:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||||
import 'package:model/email/email_action_type.dart';
|
import 'package:model/email/email_action_type.dart';
|
||||||
import 'package:model/email/mark_star_action.dart';
|
import 'package:model/email/mark_star_action.dart';
|
||||||
import 'package:model/email/presentation_email.dart';
|
import 'package:model/email/presentation_email.dart';
|
||||||
@@ -117,80 +117,64 @@ mixin EmailActionController on ViewAsDialogActionMixin {
|
|||||||
context: context,
|
context: context,
|
||||||
arguments: arguments,
|
arguments: arguments,
|
||||||
onSelectedMailbox: (destinationMailbox) {
|
onSelectedMailbox: (destinationMailbox) {
|
||||||
|
if (mailboxDashBoardController.sessionCurrent != null) {
|
||||||
_dispatchMoveToAction(
|
_dispatchMoveToAction(
|
||||||
context,
|
context,
|
||||||
accountId,
|
accountId,
|
||||||
|
mailboxDashBoardController.sessionCurrent!,
|
||||||
email,
|
email,
|
||||||
currentMailbox,
|
currentMailbox,
|
||||||
destinationMailbox);
|
destinationMailbox);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
final destinationMailbox = await push(
|
final destinationMailbox = await push(
|
||||||
AppRoutes.destinationPicker,
|
AppRoutes.destinationPicker,
|
||||||
arguments: arguments);
|
arguments: arguments);
|
||||||
|
|
||||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
if (destinationMailbox != null &&
|
||||||
if (destinationMailbox.isTrash) {
|
destinationMailbox is PresentationMailbox &&
|
||||||
moveToSpamAction(accountId, MoveToMailboxRequest(
|
mailboxDashBoardController.sessionCurrent != null) {
|
||||||
{currentMailbox.id: [email.id]},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToTrash));
|
|
||||||
} else if (destinationMailbox.isSpam) {
|
|
||||||
moveToSpamAction(accountId, MoveToMailboxRequest(
|
|
||||||
{currentMailbox.id: [email.id]},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToSpam));
|
|
||||||
} else {
|
|
||||||
_moveToMailboxAction(accountId, MoveToMailboxRequest(
|
|
||||||
{currentMailbox.id: [email.id]},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToMailbox,
|
|
||||||
destinationPath: destinationMailbox.mailboxPath));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_dispatchMoveToAction(
|
_dispatchMoveToAction(
|
||||||
context,
|
context,
|
||||||
accountId,
|
accountId,
|
||||||
|
mailboxDashBoardController.sessionCurrent!,
|
||||||
email,
|
email,
|
||||||
currentMailbox,
|
currentMailbox,
|
||||||
destinationMailbox);
|
destinationMailbox);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void _dispatchMoveToAction(
|
void _dispatchMoveToAction(
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
|
Session session,
|
||||||
PresentationEmail emailSelected,
|
PresentationEmail emailSelected,
|
||||||
PresentationMailbox currentMailbox,
|
PresentationMailbox currentMailbox,
|
||||||
PresentationMailbox destinationMailbox
|
PresentationMailbox destinationMailbox
|
||||||
) {
|
) {
|
||||||
if (destinationMailbox.isTrash) {
|
if (destinationMailbox.isTrash) {
|
||||||
moveToSpamAction(accountId, MoveToMailboxRequest(
|
moveToSpamAction(accountId, MoveToMailboxRequest(
|
||||||
[emailSelected.id],
|
{currentMailbox.id: [emailSelected.id]},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToTrash));
|
EmailActionType.moveToTrash));
|
||||||
} else if (destinationMailbox.isSpam) {
|
} else if (destinationMailbox.isSpam) {
|
||||||
moveToSpamAction(accountId, MoveToMailboxRequest(
|
moveToSpamAction(accountId, MoveToMailboxRequest(
|
||||||
[emailSelected.id],
|
{currentMailbox.id: [emailSelected.id]},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToSpam));
|
EmailActionType.moveToSpam));
|
||||||
} else {
|
} else {
|
||||||
_moveToMailboxAction(accountId, MoveToMailboxRequest(
|
_moveToMailboxAction(accountId, MoveToMailboxRequest(
|
||||||
[emailSelected.id],
|
{currentMailbox.id: [emailSelected.id]},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToMailbox,
|
EmailActionType.moveToMailbox,
|
||||||
destinationPath: destinationMailbox.mailboxPath));
|
destinationPath: destinationMailbox.mailboxPath));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,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:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.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/sort/comparator.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
||||||
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
|
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
|
||||||
@@ -647,45 +648,26 @@ class ThreadController extends BaseController {
|
|||||||
context: context,
|
context: context,
|
||||||
arguments: arguments,
|
arguments: arguments,
|
||||||
onSelectedMailbox: (destinationMailbox) {
|
onSelectedMailbox: (destinationMailbox) {
|
||||||
|
if (mailboxDashBoardController.sessionCurrent != null) {
|
||||||
_dispatchMoveToMultipleAction(
|
_dispatchMoveToMultipleAction(
|
||||||
_accountId!,
|
_accountId!,
|
||||||
|
mailboxDashBoardController.sessionCurrent!,
|
||||||
listEmail.listEmailIds,
|
listEmail.listEmailIds,
|
||||||
currentMailbox,
|
currentMailbox,
|
||||||
destinationMailbox);
|
destinationMailbox);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
final destinationMailbox = await push(
|
final destinationMailbox = await push(
|
||||||
AppRoutes.destinationPicker,
|
AppRoutes.destinationPicker,
|
||||||
arguments: arguments);
|
arguments: arguments);
|
||||||
|
|
||||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
if (destinationMailbox != null &&
|
||||||
if (destinationMailbox.isTrash) {
|
destinationMailbox is PresentationMailbox &&
|
||||||
_moveSelectedEmailMultipleToTrashAction(_accountId!, MoveToMailboxRequest(
|
mailboxDashBoardController.sessionCurrent != null) {
|
||||||
{currentMailbox.id: listEmailIds},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToTrash));
|
|
||||||
} else if (destinationMailbox.isSpam) {
|
|
||||||
_moveSelectedEmailMultipleToSpamAction(_accountId!, MoveToMailboxRequest(
|
|
||||||
{currentMailbox.id: listEmailIds},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToSpam));
|
|
||||||
} else {
|
|
||||||
_moveSelectedEmailMultipleToMailboxAction(_accountId!, MoveToMailboxRequest(
|
|
||||||
{currentMailbox.id: listEmailIds},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToMailbox,
|
|
||||||
destinationPath: destinationMailbox.mailboxPath));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
|
||||||
_dispatchMoveToMultipleAction(
|
_dispatchMoveToMultipleAction(
|
||||||
_accountId!,
|
_accountId!,
|
||||||
|
mailboxDashBoardController.sessionCurrent!,
|
||||||
listEmail.listEmailIds,
|
listEmail.listEmailIds,
|
||||||
currentMailbox,
|
currentMailbox,
|
||||||
destinationMailbox);
|
destinationMailbox);
|
||||||
@@ -696,30 +678,31 @@ class ThreadController extends BaseController {
|
|||||||
|
|
||||||
void _dispatchMoveToMultipleAction(
|
void _dispatchMoveToMultipleAction(
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
|
Session session,
|
||||||
List<EmailId> listEmailIds,
|
List<EmailId> listEmailIds,
|
||||||
PresentationMailbox currentMailbox,
|
PresentationMailbox currentMailbox,
|
||||||
PresentationMailbox destinationMailbox
|
PresentationMailbox destinationMailbox
|
||||||
) {
|
) {
|
||||||
if (destinationMailbox.isTrash) {
|
if (destinationMailbox.isTrash) {
|
||||||
_moveSelectedEmailMultipleToTrashAction(accountId, MoveToMailboxRequest(
|
_moveSelectedEmailMultipleToTrashAction(accountId, MoveToMailboxRequest(
|
||||||
listEmailIds,
|
{currentMailbox.id: listEmailIds},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToTrash));
|
EmailActionType.moveToTrash));
|
||||||
} else if (destinationMailbox.isSpam) {
|
} else if (destinationMailbox.isSpam) {
|
||||||
_moveSelectedEmailMultipleToSpamAction(accountId, MoveToMailboxRequest(
|
_moveSelectedEmailMultipleToSpamAction(accountId, MoveToMailboxRequest(
|
||||||
listEmailIds,
|
{currentMailbox.id: listEmailIds},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToSpam));
|
EmailActionType.moveToSpam));
|
||||||
} else {
|
} else {
|
||||||
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
|
_moveSelectedEmailMultipleToMailboxAction(accountId, MoveToMailboxRequest(
|
||||||
listEmailIds,
|
{currentMailbox.id: listEmailIds},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToMailbox,
|
EmailActionType.moveToMailbox,
|
||||||
destinationPath: destinationMailbox.mailboxPath));
|
destinationPath: destinationMailbox.mailboxPath));
|
||||||
}
|
}
|
||||||
@@ -1138,47 +1121,28 @@ class ThreadController extends BaseController {
|
|||||||
context: context,
|
context: context,
|
||||||
arguments: arguments,
|
arguments: arguments,
|
||||||
onSelectedMailbox: (destinationMailbox) {
|
onSelectedMailbox: (destinationMailbox) {
|
||||||
|
if (mailboxDashBoardController.sessionCurrent != null) {
|
||||||
_dispatchMoveToAction(
|
_dispatchMoveToAction(
|
||||||
context,
|
context,
|
||||||
accountId,
|
accountId,
|
||||||
|
mailboxDashBoardController.sessionCurrent!,
|
||||||
email,
|
email,
|
||||||
currentMailbox,
|
currentMailbox,
|
||||||
destinationMailbox);
|
destinationMailbox);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
final destinationMailbox = await push(
|
final destinationMailbox = await push(
|
||||||
AppRoutes.destinationPicker,
|
AppRoutes.destinationPicker,
|
||||||
arguments: arguments);
|
arguments: arguments);
|
||||||
|
|
||||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
if (destinationMailbox != null &&
|
||||||
if (destinationMailbox.isTrash) {
|
destinationMailbox is PresentationMailbox &&
|
||||||
_moveToTrashAction(accountId, MoveToMailboxRequest(
|
mailboxDashBoardController.sessionCurrent != null) {
|
||||||
{currentMailbox.id: [email.id]},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToTrash));
|
|
||||||
} else if (destinationMailbox.isSpam) {
|
|
||||||
_moveToSpamAction(accountId, MoveToMailboxRequest(
|
|
||||||
{currentMailbox.id: [email.id]},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToSpam));
|
|
||||||
} else {
|
|
||||||
_moveToMailboxAction(accountId, MoveToMailboxRequest(
|
|
||||||
{currentMailbox.id: [email.id]},
|
|
||||||
destinationMailbox.id,
|
|
||||||
MoveAction.moving,
|
|
||||||
mailboxDashBoardController.sessionCurrent!,
|
|
||||||
EmailActionType.moveToMailbox,
|
|
||||||
destinationPath: destinationMailbox.mailboxPath));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
|
||||||
_dispatchMoveToAction(
|
_dispatchMoveToAction(
|
||||||
context,
|
context,
|
||||||
accountId,
|
accountId,
|
||||||
|
mailboxDashBoardController.sessionCurrent!,
|
||||||
email,
|
email,
|
||||||
currentMailbox,
|
currentMailbox,
|
||||||
destinationMailbox);
|
destinationMailbox);
|
||||||
@@ -1190,30 +1154,31 @@ class ThreadController extends BaseController {
|
|||||||
void _dispatchMoveToAction(
|
void _dispatchMoveToAction(
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
|
Session session,
|
||||||
PresentationEmail emailSelected,
|
PresentationEmail emailSelected,
|
||||||
PresentationMailbox currentMailbox,
|
PresentationMailbox currentMailbox,
|
||||||
PresentationMailbox destinationMailbox
|
PresentationMailbox destinationMailbox
|
||||||
) {
|
) {
|
||||||
if (destinationMailbox.isTrash) {
|
if (destinationMailbox.isTrash) {
|
||||||
_moveToTrashAction(accountId, MoveToMailboxRequest(
|
_moveToTrashAction(accountId, MoveToMailboxRequest(
|
||||||
[emailSelected.id],
|
{currentMailbox.id: [emailSelected.id]},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToTrash));
|
EmailActionType.moveToTrash));
|
||||||
} else if (destinationMailbox.isSpam) {
|
} else if (destinationMailbox.isSpam) {
|
||||||
_moveToSpamAction(accountId, MoveToMailboxRequest(
|
_moveToSpamAction(accountId, MoveToMailboxRequest(
|
||||||
[emailSelected.id],
|
{currentMailbox.id: [emailSelected.id]},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToSpam));
|
EmailActionType.moveToSpam));
|
||||||
} else {
|
} else {
|
||||||
_moveToMailboxAction(accountId, MoveToMailboxRequest(
|
_moveToMailboxAction(accountId, MoveToMailboxRequest(
|
||||||
[emailSelected.id],
|
{currentMailbox.id: [emailSelected.id]},
|
||||||
currentMailbox.id,
|
|
||||||
destinationMailbox.id,
|
destinationMailbox.id,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
|
session,
|
||||||
EmailActionType.moveToMailbox,
|
EmailActionType.moveToMailbox,
|
||||||
destinationPath: destinationMailbox.mailboxPath));
|
destinationPath: destinationMailbox.mailboxPath));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,33 @@ import 'package:tmail_ui_user/main/pages/deferred_widget.dart';
|
|||||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||||
|
|
||||||
class AppPages {
|
class AppPages {
|
||||||
static final pagesOnlyOnMobile = [
|
static final pages = [
|
||||||
|
GetPage(
|
||||||
|
name: AppRoutes.home,
|
||||||
|
page: () => const HomeView(),
|
||||||
|
binding: HomeBindings()),
|
||||||
|
GetPage(
|
||||||
|
name: AppRoutes.login,
|
||||||
|
page: () => DeferredWidget(login.loadLibrary, () => login.LoginView()),
|
||||||
|
binding: LoginBindings()),
|
||||||
|
GetPage(
|
||||||
|
name: AppRoutes.session,
|
||||||
|
page: () => DeferredWidget(session.loadLibrary, () => session.SessionView()),
|
||||||
|
binding: SessionPageBindings()),
|
||||||
|
GetPage(
|
||||||
|
name: AppRoutes.dashboard,
|
||||||
|
page: () => DeferredWidget(
|
||||||
|
mailbox_dashboard.loadLibrary,
|
||||||
|
() => mailbox_dashboard.MailboxDashBoardView()),
|
||||||
|
binding: MailboxDashBoardBindings()),
|
||||||
|
GetPage(
|
||||||
|
name: AppRoutes.settings,
|
||||||
|
page: () => DeferredWidget(
|
||||||
|
manage_account_dashboard.loadLibrary,
|
||||||
|
() => manage_account_dashboard.ManageAccountDashBoardView()),
|
||||||
|
binding: ManageAccountDashBoardBindings()),
|
||||||
|
if (!BuildUtils.isWeb)
|
||||||
|
...[
|
||||||
GetPage(
|
GetPage(
|
||||||
name: AppRoutes.composer,
|
name: AppRoutes.composer,
|
||||||
opaque: false,
|
opaque: false,
|
||||||
@@ -81,34 +107,6 @@ class AppPages {
|
|||||||
emails_forward_creator.loadLibrary,
|
emails_forward_creator.loadLibrary,
|
||||||
() => emails_forward_creator.EmailsForwardCreatorView()),
|
() => emails_forward_creator.EmailsForwardCreatorView()),
|
||||||
binding: EmailsForwardCreatorBindings()),
|
binding: EmailsForwardCreatorBindings()),
|
||||||
];
|
]
|
||||||
|
|
||||||
static final pages = [
|
|
||||||
GetPage(
|
|
||||||
name: AppRoutes.home,
|
|
||||||
page: () => const HomeView(),
|
|
||||||
binding: HomeBindings()),
|
|
||||||
GetPage(
|
|
||||||
name: AppRoutes.login,
|
|
||||||
page: () => DeferredWidget(login.loadLibrary, () => login.LoginView()),
|
|
||||||
binding: LoginBindings()),
|
|
||||||
GetPage(
|
|
||||||
name: AppRoutes.session,
|
|
||||||
page: () => DeferredWidget(session.loadLibrary, () => session.SessionView()),
|
|
||||||
binding: SessionPageBindings()),
|
|
||||||
GetPage(
|
|
||||||
name: AppRoutes.dashboard,
|
|
||||||
page: () => DeferredWidget(
|
|
||||||
mailbox_dashboard.loadLibrary,
|
|
||||||
() => mailbox_dashboard.MailboxDashBoardView()),
|
|
||||||
binding: MailboxDashBoardBindings()),
|
|
||||||
GetPage(
|
|
||||||
name: AppRoutes.settings,
|
|
||||||
page: () => DeferredWidget(
|
|
||||||
manage_account_dashboard.loadLibrary,
|
|
||||||
() => manage_account_dashboard.ManageAccountDashBoardView()),
|
|
||||||
binding: ManageAccountDashBoardBindings()),
|
|
||||||
if (!BuildUtils.isWeb)
|
|
||||||
...pagesOnlyOnMobile
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user