TF-1074 Handle go to path /session

This commit is contained in:
dab246
2022-10-25 15:11:51 +07:00
committed by Dat H. Pham
parent 0ee990262f
commit 079bd404c2
12 changed files with 313 additions and 346 deletions
@@ -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) {
+3 -1
View File
@@ -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 _disposeWidget() {
textInputSearchFocus?.dispose();
textInputSearchFocus = null;
textInputSearchController?.dispose();
textInputSearchController = null;
_deBouncerTime.cancel();
}
void selectContact(BuildContext context, EmailAddress emailAddress) { void selectContact(BuildContext context, EmailAddress emailAddress) {
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();
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) {
_dispatchMoveToAction( if (mailboxDashBoardController.sessionCurrent != null) {
context, _dispatchMoveToAction(
accountId, context,
email, accountId,
currentMailbox, mailboxDashBoardController.sessionCurrent!,
destinationMailbox); email,
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 && 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) {
@@ -623,46 +623,29 @@ class MailboxDashBoardController extends ReloadableController {
context: context, context: context,
arguments: arguments, arguments: arguments,
onSelectedMailbox: (destinationMailbox) { onSelectedMailbox: (destinationMailbox) {
_dispatchMoveToMultipleAction( if (sessionCurrent != null) {
accountId.value!, _dispatchMoveToMultipleAction(
listEmails.listEmailIds, accountId.value!,
currentMailbox, destinationMailbox); sessionCurrent!,
listEmails.listEmailIds,
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();
_getSession(); final arguments = Get.arguments;
if (arguments != null && arguments is String) {
_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';
@@ -37,9 +37,9 @@ mixin EmailActionController on ViewAsDialogActionMixin {
void editEmail(PresentationEmail presentationEmail) { void editEmail(PresentationEmail presentationEmail) {
final arguments = ComposerArguments( final arguments = ComposerArguments(
emailActionType: EmailActionType.edit, emailActionType: EmailActionType.edit,
presentationEmail: presentationEmail, presentationEmail: presentationEmail,
mailboxRole: mailboxDashBoardController.selectedMailbox.value?.role); mailboxRole: mailboxDashBoardController.selectedMailbox.value?.role);
mailboxDashBoardController.goToComposer(arguments); mailboxDashBoardController.goToComposer(arguments);
} }
@@ -56,11 +56,11 @@ mixin EmailActionController on ViewAsDialogActionMixin {
if (currentMailbox != null && accountId != null && trashMailboxId != null) { if (currentMailbox != null && accountId != null && trashMailboxId != null) {
_moveToTrashAction(accountId, MoveToMailboxRequest( _moveToTrashAction(accountId, MoveToMailboxRequest(
{currentMailbox.id: [email.id]}, {currentMailbox.id: [email.id]},
trashMailboxId, trashMailboxId,
MoveAction.moving, MoveAction.moving,
mailboxDashBoardController.sessionCurrent!, mailboxDashBoardController.sessionCurrent!,
EmailActionType.moveToTrash) EmailActionType.moveToTrash)
); );
} }
} }
@@ -76,11 +76,11 @@ mixin EmailActionController on ViewAsDialogActionMixin {
if (currentMailbox != null && accountId != null && spamMailboxId != null) { if (currentMailbox != null && accountId != null && spamMailboxId != null) {
moveToSpamAction(accountId, MoveToMailboxRequest( moveToSpamAction(accountId, MoveToMailboxRequest(
{currentMailbox.id: [email.id]}, {currentMailbox.id: [email.id]},
spamMailboxId, spamMailboxId,
MoveAction.moving, MoveAction.moving,
mailboxDashBoardController.sessionCurrent!, mailboxDashBoardController.sessionCurrent!,
EmailActionType.moveToSpam) EmailActionType.moveToSpam)
); );
} }
} }
@@ -92,11 +92,11 @@ mixin EmailActionController on ViewAsDialogActionMixin {
if (inboxMailboxId != null && accountId != null && spamMailboxId != null) { if (inboxMailboxId != null && accountId != null && spamMailboxId != null) {
moveToSpamAction(accountId, MoveToMailboxRequest( moveToSpamAction(accountId, MoveToMailboxRequest(
{spamMailboxId: [email.id]}, {spamMailboxId: [email.id]},
inboxMailboxId, inboxMailboxId,
MoveAction.moving, MoveAction.moving,
mailboxDashBoardController.sessionCurrent!, mailboxDashBoardController.sessionCurrent!,
EmailActionType.unSpam) EmailActionType.unSpam)
); );
} }
} }
@@ -114,85 +114,69 @@ mixin EmailActionController on ViewAsDialogActionMixin {
if (BuildUtils.isWeb) { if (BuildUtils.isWeb) {
showDialogDestinationPicker( showDialogDestinationPicker(
context: context, context: context,
arguments: arguments, arguments: arguments,
onSelectedMailbox: (destinationMailbox) { onSelectedMailbox: (destinationMailbox) {
if (mailboxDashBoardController.sessionCurrent != null) {
_dispatchMoveToAction( _dispatchMoveToAction(
context, context,
accountId, accountId,
email, mailboxDashBoardController.sessionCurrent!,
currentMailbox, email,
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 &&
moveToSpamAction(accountId, MoveToMailboxRequest( mailboxDashBoardController.sessionCurrent != null) {
{currentMailbox.id: [email.id]}, _dispatchMoveToAction(
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(
context, context,
accountId, accountId,
mailboxDashBoardController.sessionCurrent!,
email, email,
currentMailbox, currentMailbox,
destinationMailbox); destinationMailbox);
}
} }
} }
} }
void _dispatchMoveToAction( void _dispatchMoveToAction(
BuildContext context, BuildContext context,
AccountId accountId, AccountId accountId,
PresentationEmail emailSelected, Session session,
PresentationMailbox currentMailbox, PresentationEmail emailSelected,
PresentationMailbox destinationMailbox PresentationMailbox currentMailbox,
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));
} }
} }
@@ -207,31 +191,31 @@ mixin EmailActionController on ViewAsDialogActionMixin {
..onCancelAction(AppLocalizations.of(context).cancel, () => popBack()) ..onCancelAction(AppLocalizations.of(context).cancel, () => popBack())
..onConfirmAction( ..onConfirmAction(
DeleteActionType.single.getConfirmActionName(context), DeleteActionType.single.getConfirmActionName(context),
() => _deleteEmailPermanentlyAction(context, email))) () => _deleteEmailPermanentlyAction(context, email)))
.show(); .show();
} else { } else {
showDialog( showDialog(
context: context, context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet, barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths) builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
..key(const Key('confirm_dialog_delete_email_permanently')) ..key(const Key('confirm_dialog_delete_email_permanently'))
..title(DeleteActionType.single.getTitleDialog(context)) ..title(DeleteActionType.single.getTitleDialog(context))
..content(DeleteActionType.single.getContentDialog(context)) ..content(DeleteActionType.single.getContentDialog(context))
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill)) ..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill))
..colorConfirmButton(AppColor.colorConfirmActionDialog) ..colorConfirmButton(AppColor.colorConfirmActionDialog)
..styleTextConfirmButton( ..styleTextConfirmButton(
const TextStyle( const TextStyle(
fontSize: 17, fontSize: 17,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: AppColor.colorActionDeleteConfirmDialog)) color: AppColor.colorActionDeleteConfirmDialog))
..onCloseButtonAction(() => popBack()) ..onCloseButtonAction(() => popBack())
..onConfirmButtonAction( ..onConfirmButtonAction(
DeleteActionType.single.getConfirmActionName(context), DeleteActionType.single.getConfirmActionName(context),
() => _deleteEmailPermanentlyAction(context, email)) () => _deleteEmailPermanentlyAction(context, email))
..onCancelButtonAction( ..onCancelButtonAction(
AppLocalizations.of(context).cancel, AppLocalizations.of(context).cancel,
() => popBack())) () => popBack()))
.build())); .build()));
} }
} }
@@ -257,14 +241,14 @@ mixin EmailActionController on ViewAsDialogActionMixin {
} }
void moveSelectedMultipleEmailToMailbox( void moveSelectedMultipleEmailToMailbox(
BuildContext context, BuildContext context,
List<PresentationEmail> listEmails, List<PresentationEmail> listEmails,
PresentationMailbox mailboxCurrent PresentationMailbox mailboxCurrent
) { ) {
mailboxDashBoardController.moveSelectedMultipleEmailToMailbox( mailboxDashBoardController.moveSelectedMultipleEmailToMailbox(
context, context,
listEmails, listEmails,
mailboxCurrent); mailboxCurrent);
} }
void moveSelectedMultipleEmailToTrash(List<PresentationEmail> listEmails, PresentationMailbox mailboxCurrent) { void moveSelectedMultipleEmailToTrash(List<PresentationEmail> listEmails, PresentationMailbox mailboxCurrent) {
@@ -280,19 +264,19 @@ mixin EmailActionController on ViewAsDialogActionMixin {
} }
void deleteSelectionEmailsPermanently( void deleteSelectionEmailsPermanently(
BuildContext context, BuildContext context,
DeleteActionType actionType, DeleteActionType actionType,
{ {
List<PresentationEmail>? listEmails, List<PresentationEmail>? listEmails,
PresentationMailbox? mailboxCurrent, PresentationMailbox? mailboxCurrent,
Function? onCancelSelectionEmail, Function? onCancelSelectionEmail,
} }
) { ) {
mailboxDashBoardController.deleteSelectionEmailsPermanently( mailboxDashBoardController.deleteSelectionEmailsPermanently(
context, context,
actionType, actionType,
listEmails: listEmails, listEmails: listEmails,
mailboxCurrent: mailboxCurrent, mailboxCurrent: mailboxCurrent,
onCancelSelectionEmail: onCancelSelectionEmail); onCancelSelectionEmail: onCancelSelectionEmail);
} }
} }
@@ -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) {
_dispatchMoveToMultipleAction( if (mailboxDashBoardController.sessionCurrent != null) {
_accountId!, _dispatchMoveToMultipleAction(
listEmail.listEmailIds, _accountId!,
currentMailbox, mailboxDashBoardController.sessionCurrent!,
destinationMailbox); listEmail.listEmailIds,
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 &&
_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) {
_dispatchMoveToAction( if (mailboxDashBoardController.sessionCurrent != null) {
context, _dispatchMoveToAction(
accountId, context,
email, accountId,
currentMailbox, mailboxDashBoardController.sessionCurrent!,
destinationMailbox); email,
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 &&
_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));
} }
+51 -53
View File
@@ -31,58 +31,6 @@ 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 = [
GetPage(
name: AppRoutes.composer,
opaque: false,
page: () => DeferredWidget(
composer.loadLibrary,
() => composer.ComposerView()),
binding: ComposerBindings()),
GetPage(
name: AppRoutes.destinationPicker,
opaque: false,
page: () => DeferredWidget(
destination_picker.loadLibrary,
() => destination_picker.DestinationPickerView()),
binding: DestinationPickerBindings()),
GetPage(
name: AppRoutes.mailboxCreator,
opaque: false,
page: () => DeferredWidget(
mailbox_creator.loadLibrary,
() => mailbox_creator.MailboxCreatorView()),
binding: MailboxCreatorBindings()),
GetPage(
name: AppRoutes.contact,
opaque: false,
page: () => DeferredWidget(
contact_view.loadLibrary,
() => contact_view.ContactView()),
binding: ContactBindings()),
GetPage(
name: AppRoutes.identityCreator,
opaque: false,
page: () => DeferredWidget(
identity_creator.loadLibrary,
() => identity_creator.IdentityCreatorView()),
binding: IdentityCreatorBindings()),
GetPage(
name: AppRoutes.rulesFilterCreator,
opaque: false,
page: () => DeferredWidget(
rules_filter_creator.loadLibrary,
() => rules_filter_creator.RuleFilterCreatorView()),
binding: RulesFilterCreatorBindings()),
GetPage(
name: AppRoutes.emailsForwardCreator,
opaque: false,
page: () => DeferredWidget(
emails_forward_creator.loadLibrary,
() => emails_forward_creator.EmailsForwardCreatorView()),
binding: EmailsForwardCreatorBindings()),
];
static final pages = [ static final pages = [
GetPage( GetPage(
name: AppRoutes.home, name: AppRoutes.home,
@@ -109,6 +57,56 @@ class AppPages {
() => manage_account_dashboard.ManageAccountDashBoardView()), () => manage_account_dashboard.ManageAccountDashBoardView()),
binding: ManageAccountDashBoardBindings()), binding: ManageAccountDashBoardBindings()),
if (!BuildUtils.isWeb) if (!BuildUtils.isWeb)
...pagesOnlyOnMobile ...[
GetPage(
name: AppRoutes.composer,
opaque: false,
page: () => DeferredWidget(
composer.loadLibrary,
() => composer.ComposerView()),
binding: ComposerBindings()),
GetPage(
name: AppRoutes.destinationPicker,
opaque: false,
page: () => DeferredWidget(
destination_picker.loadLibrary,
() => destination_picker.DestinationPickerView()),
binding: DestinationPickerBindings()),
GetPage(
name: AppRoutes.mailboxCreator,
opaque: false,
page: () => DeferredWidget(
mailbox_creator.loadLibrary,
() => mailbox_creator.MailboxCreatorView()),
binding: MailboxCreatorBindings()),
GetPage(
name: AppRoutes.contact,
opaque: false,
page: () => DeferredWidget(
contact_view.loadLibrary,
() => contact_view.ContactView()),
binding: ContactBindings()),
GetPage(
name: AppRoutes.identityCreator,
opaque: false,
page: () => DeferredWidget(
identity_creator.loadLibrary,
() => identity_creator.IdentityCreatorView()),
binding: IdentityCreatorBindings()),
GetPage(
name: AppRoutes.rulesFilterCreator,
opaque: false,
page: () => DeferredWidget(
rules_filter_creator.loadLibrary,
() => rules_filter_creator.RuleFilterCreatorView()),
binding: RulesFilterCreatorBindings()),
GetPage(
name: AppRoutes.emailsForwardCreator,
opaque: false,
page: () => DeferredWidget(
emails_forward_creator.loadLibrary,
() => emails_forward_creator.EmailsForwardCreatorView()),
binding: EmailsForwardCreatorBindings()),
]
]; ];
} }