diff --git a/lib/features/base/base_controller.dart b/lib/features/base/base_controller.dart index 50d72af72..961cd6337 100644 --- a/lib/features/base/base_controller.dart +++ b/lib/features/base/base_controller.dart @@ -1,9 +1,11 @@ import 'package:contact/contact/model/capability_contact.dart'; +import 'package:core/data/network/config/dynamic_url_interceptors.dart'; import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/utils/app_toast.dart'; +import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/toast/tmail_toast.dart'; import 'package:core/utils/app_logger.dart'; import 'package:core/utils/fps_manager.dart'; @@ -52,27 +54,31 @@ 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/utils/app_config.dart'; import 'package:tmail_ui_user/main/utils/app_utils.dart'; +import 'package:uuid/uuid.dart'; abstract class BaseController extends GetxController with MessageDialogActionMixin, PopupContextMenuActionMixin { final CachingManager cachingManager = Get.find(); - final languageCacheManager = Get.find(); - final authorizationInterceptors = Get.find(); - final authorizationIsolateInterceptors = Get.find(tag: BindingTag.isolateTag); + final LanguageCacheManager languageCacheManager = Get.find(); + final AuthorizationInterceptors authorizationInterceptors = Get.find(); + final AuthorizationInterceptors authorizationIsolateInterceptors = Get.find(tag: BindingTag.isolateTag); + final DynamicUrlInterceptors dynamicUrlInterceptors = Get.find(); final DeleteCredentialInteractor deleteCredentialInteractor = Get.find(); final LogoutOidcInteractor logoutOidcInteractor = Get.find(); final DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor = Get.find(); + final AppToast appToast = Get.find(); + final ImagePaths imagePaths = Get.find(); + final ResponsiveUtils responsiveUtils = Get.find(); + final Uuid uuid = Get.find(); + final _fcmReceiver = FcmReceiver.instance; bool _isFcmEnabled = false; GetFCMSubscriptionLocalInteractor? _getSubscriptionLocalInteractor; DestroySubscriptionInteractor? _destroySubscriptionInteractor; - final AppToast _appToast = Get.find(); - final ImagePaths _imagePaths = Get.find(); - final viewState = Rx>(Right(UIState.idle)); FpsCallback? fpsCallback; @@ -123,12 +129,12 @@ abstract class BaseController extends GetxController logError('BaseController::_performFilterExceptionInError(): $error'); if (error is NoNetworkError || error is ConnectionTimeout || error is InternalServerError) { if (PlatformInfo.isWeb && currentOverlayContext != null && currentContext != null) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).no_internet_connection, actionName: AppLocalizations.of(currentContext!).skip, onActionClick: ToastView.dismiss, - leadingSVGIcon: _imagePaths.icNotConnection, + leadingSVGIcon: imagePaths.icNotConnection, backgroundColor: AppColor.textFieldErrorBorderColor, textColor: Colors.white, infinityToast: true, @@ -137,7 +143,7 @@ abstract class BaseController extends GetxController return error; } else if (error is BadCredentialsException) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).badCredentials ); @@ -145,7 +151,7 @@ abstract class BaseController extends GetxController return error; } else if (error is ConnectionError) { if (authorizationInterceptors.isAppRunning && currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).connectionError ); @@ -164,38 +170,36 @@ abstract class BaseController extends GetxController return; } if (exception is BadCredentialsException || exception is ConnectionError) { - performInvokeLogoutAction(); + clearDataAndGoToLoginPage(); } } - void handleFailureViewState(Failure failure) { + void handleFailureViewState(Failure failure) async { logError('BaseController::handleFailureViewState(): ${failure.runtimeType}'); if (failure is LogoutOidcFailure) { if (_isFcmEnabled) { _getSubscriptionLocalAction(); } else { - _logoutOIDCAction(); + await clearDataAndGoToLoginPage(); } - } else if (failure is GetFCMSubscriptionLocalFailure) { - performInvokeLogoutAction(); - } else if (failure is DestroySubscriptionFailure) { - performInvokeLogoutAction(); + } else if (failure is GetFCMSubscriptionLocalFailure || + failure is DestroySubscriptionFailure) { + await clearDataAndGoToLoginPage(); } } - void handleSuccessViewState(Success success) { + void handleSuccessViewState(Success success) async { log('BaseController::handleSuccessViewState(): ${success.runtimeType}'); if (success is LogoutOidcSuccess) { if (_isFcmEnabled) { _getSubscriptionLocalAction(); } else { - _logoutOIDCAction(); + await clearDataAndGoToLoginPage(); } } else if (success is GetFCMSubscriptionLocalSuccess) { - final subscriptionId = success.fcmSubscription.subscriptionId; - _destroySubscriptionAction(subscriptionId); + _destroySubscriptionAction(success.fcmSubscription.subscriptionId); } else if (success is DestroySubscriptionSuccess) { - performInvokeLogoutAction(); + await clearDataAndGoToLoginPage(); } } @@ -275,7 +279,7 @@ abstract class BaseController extends GetxController bool get isAuthenticatedWithOidc => authenticationType == AuthenticationType.oidc; bool _isFcmActivated(Session session, AccountId accountId) => - [FirebaseCapability.fcmIdentifier].isSupported(session, accountId) && AppConfig.fcmAvailable; + FirebaseCapability.fcmIdentifier.isSupported(session, accountId) && AppConfig.fcmAvailable; void goToLogin({LoginArguments? arguments}) { if (Get.currentRoute != AppRoutes.login) { @@ -283,10 +287,9 @@ abstract class BaseController extends GetxController } } - void logout(Session? session, AccountId? accountId) { + void logout(Session? session, AccountId? accountId) async { if (session == null || accountId == null) { - logError('BaseController::logout(): Session is $session OR AccountId is $accountId'); - performInvokeLogoutAction(); + await clearDataAndGoToLoginPage(); return; } _isFcmEnabled = _isFcmActivated(session, accountId); @@ -296,71 +299,74 @@ abstract class BaseController extends GetxController if (_isFcmEnabled) { _getSubscriptionLocalAction(); } else { - _logoutAction(); + await clearDataAndGoToLoginPage(); } } } - void _destroySubscriptionAction(String subscriptionId) { - try { - _destroySubscriptionInteractor = Get.find(); + void _destroySubscriptionAction(String subscriptionId) async { + _destroySubscriptionInteractor = getBinding(); + if (_destroySubscriptionInteractor != null) { consumeState(_destroySubscriptionInteractor!.execute(subscriptionId)); - } catch(e) { - logError('BaseController::destroySubscriptionAction(): exception: $e'); - performInvokeLogoutAction(); - } - } - - void _getSubscriptionLocalAction() { - try { - _getSubscriptionLocalInteractor = Get.find(); - consumeState(_getSubscriptionLocalInteractor!.execute()); - } catch (e) { - logError('BaseController::getSubscriptionLocalAction(): exception: $e'); - performInvokeLogoutAction(); - } - } - - void performInvokeLogoutAction() { - log('BaseController::performInvokeLogoutAction():'); - if (isAuthenticatedWithOidc) { - _logoutOIDCAction(); } else { - _logoutAction(); + await clearDataAndGoToLoginPage(); } } - void _logoutAction() async { - log('BaseController::_logoutAction():'); + void _getSubscriptionLocalAction() async { + _getSubscriptionLocalInteractor = getBinding(); + if (_getSubscriptionLocalInteractor != null) { + consumeState(_getSubscriptionLocalInteractor!.execute()); + } else { + await clearDataAndGoToLoginPage(); + } + } + + Future clearDataAndGoToLoginPage() async { + log('BaseController::clearDataAndGoToLoginPage:'); + await clearAllData(); + goToLogin(arguments: LoginArguments( + isAuthenticatedWithOidc + ? LoginFormType.ssoForm + : LoginFormType.credentialForm + )); + } + + Future clearAllData() async { + if (isAuthenticatedWithOidc) { + await _clearOidcAuthData(); + } else { + await _clearBasicAuthData(); + } + } + + Future _clearBasicAuthData() async { await Future.wait([ deleteCredentialInteractor.execute(), cachingManager.clearAll(), languageCacheManager.removeLanguage(), ]); - cachingManager.clearAllFileInStorage(); + await cachingManager.clearAllFileInStorage(); authorizationInterceptors.clear(); authorizationIsolateInterceptors.clear(); if (_isFcmEnabled) { _fcmReceiver.deleteFcmToken(); } await cachingManager.closeHive(); - goToLogin(arguments: LoginArguments(LoginFormType.credentialForm)); } - void _logoutOIDCAction() async { - log('BaseController::_logoutOIDCAction():'); + Future _clearOidcAuthData() async { await Future.wait([ deleteAuthorityOidcInteractor.execute(), cachingManager.clearAll(), languageCacheManager.removeLanguage(), ]); - cachingManager.clearAllFileInStorage(); + await cachingManager.clearAllFileInStorage(); authorizationIsolateInterceptors.clear(); authorizationInterceptors.clear(); if (_isFcmEnabled) { _fcmReceiver.deleteFcmToken(); } await cachingManager.closeHive(); - goToLogin(arguments: LoginArguments(LoginFormType.ssoForm)); } } diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 905d9e460..c88fe43dd 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -86,7 +86,6 @@ import 'package:tmail_ui_user/features/upload/domain/usecases/local_file_picker_ import 'package:tmail_ui_user/features/upload/presentation/controller/upload_controller.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; -import 'package:uuid/uuid.dart'; import 'package:universal_html/html.dart' as html; class ComposerController extends BaseController { @@ -94,10 +93,6 @@ class ComposerController extends BaseController { final mailboxDashBoardController = Get.find(); final richTextMobileTabletController = Get.find(); final networkConnectionController = Get.find(); - final _appToast = Get.find(); - final _imagePaths = Get.find(); - final _responsiveUtils = Get.find(); - final _uuid = Get.find(); final _dynamicUrlInterceptors = Get.find(); final expandModeAttachments = ExpandMode.EXPAND.obs; @@ -726,7 +721,7 @@ class ComposerController extends BaseController { final inReplyTo = _generateInReplyTo(arguments); final references = _generateReferences(arguments); - final generatePartId = PartId(_uuid.v1()); + final generatePartId = PartId(uuid.v1()); return Email( mailboxIds: mailboxIds.isNotEmpty ? mailboxIds : null, @@ -828,7 +823,7 @@ class ComposerController extends BaseController { AppLocalizations.of(context).add_recipients, onConfirmAction: () => {isSendEmailLoading.value = false}, title: AppLocalizations.of(context).sending_failed, - icon: SvgPicture.asset(_imagePaths.icSendToastError, fit: BoxFit.fill), + icon: SvgPicture.asset(imagePaths.icSendToastError, fit: BoxFit.fill), hasCancelButton: false); return; } @@ -848,7 +843,7 @@ class ComposerController extends BaseController { isSendEmailLoading.value = false; }, title: AppLocalizations.of(context).sending_failed, - icon: SvgPicture.asset(_imagePaths.icSendToastError, fit: BoxFit.fill), + icon: SvgPicture.asset(imagePaths.icSendToastError, fit: BoxFit.fill), hasCancelButton: false); return; } @@ -860,7 +855,7 @@ class ComposerController extends BaseController { onConfirmAction: () => _handleSendMessages(context), onCancelAction: () => {isSendEmailLoading.value = false}, title: AppLocalizations.of(context).empty_subject, - icon: SvgPicture.asset(_imagePaths.icEmpty, fit: BoxFit.fill), + icon: SvgPicture.asset(imagePaths.icEmpty, fit: BoxFit.fill), ); return; } @@ -872,7 +867,7 @@ class ComposerController extends BaseController { AppLocalizations.of(context).got_it, onConfirmAction: () => {isSendEmailLoading.value = false}, title: AppLocalizations.of(context).sending_failed, - icon: SvgPicture.asset(_imagePaths.icSendToastError, fit: BoxFit.fill), + icon: SvgPicture.asset(imagePaths.icSendToastError, fit: BoxFit.fill), hasCancelButton: false); return; } @@ -885,7 +880,7 @@ class ComposerController extends BaseController { AppLocalizations.of(context).got_it, onConfirmAction: () => {isSendEmailLoading.value = false}, title: AppLocalizations.of(context).sending_failed, - icon: SvgPicture.asset(_imagePaths.icSendToastError, fit: BoxFit.fill), + icon: SvgPicture.asset(imagePaths.icSendToastError, fit: BoxFit.fill), hasCancelButton: false); return; } @@ -957,7 +952,7 @@ class ComposerController extends BaseController { final mailboxRequest = mailboxDashBoardController.outboxMailbox?.id == null ? CreateNewMailboxRequest( - Id(_uuid.v1()), + Id(uuid.v1()), MailboxName(PresentationMailbox.outboxRole.inCaps) ) : null; @@ -985,7 +980,7 @@ class ComposerController extends BaseController { }, onCancelAction: _closeComposerAction, title: AppLocalizations.of(context).youAreInOfflineMode, - icon: SvgPicture.asset(_imagePaths.icDialogOfflineMode), + icon: SvgPicture.asset(imagePaths.icDialogOfflineMode), alignCenter: true, messageStyle: const TextStyle( color: AppColor.colorTitleSendingItem, @@ -1124,7 +1119,7 @@ class ComposerController extends BaseController { void _pickFileFailure(Failure failure) { if (failure is LocalFilePickerFailure) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).can_not_upload_this_file_as_attachments); } @@ -1765,7 +1760,7 @@ class ComposerController extends BaseController { void insertImage(BuildContext context, double maxWith) async { clearFocusEditor(context); - if (_responsiveUtils.isMobile(context)) { + if (responsiveUtils.isMobile(context)) { maxWithEditor = maxWith - 40; } else { maxWithEditor = maxWith - 120; @@ -1779,7 +1774,7 @@ class ComposerController extends BaseController { } } else { if (context.mounted) { - _appToast.showToastErrorMessage(context, AppLocalizations.of(context).cannotSelectThisImage); + appToast.showToastErrorMessage(context, AppLocalizations.of(context).cannotSelectThisImage); } } } @@ -1912,7 +1907,7 @@ class ComposerController extends BaseController { BuildContext context, ) { scrollController.jumpTo( - realCoordinateY - (_responsiveUtils.isLandscapeMobile(context) ? 0 : headerEditorMobileHeight / 2), + realCoordinateY - (responsiveUtils.isLandscapeMobile(context) ? 0 : headerEditorMobileHeight / 2), ); } @@ -1978,7 +1973,7 @@ class ComposerController extends BaseController { ) async { log('ComposerController::handleImageUploadSuccess:NAME: ${fileUpload.name} | TYPE: ${fileUpload.type} | SIZE: ${fileUpload.size}'); if (fileUpload.base64 == null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( context, AppLocalizations.of(context).can_not_upload_this_file_as_attachments ); @@ -1990,7 +1985,7 @@ class ComposerController extends BaseController { if (fileInfo != null) { _uploadInlineAttachmentsAction(fileInfo); } else if (context.mounted) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( context, AppLocalizations.of(context).can_not_upload_this_file_as_attachments ); @@ -2000,7 +1995,7 @@ class ComposerController extends BaseController { if (fileInfo != null) { _addAttachmentFromDragAndDrop(fileInfo: fileInfo); } else if (context.mounted) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( context, AppLocalizations.of(context).can_not_upload_this_file_as_attachments ); @@ -2015,7 +2010,7 @@ class ComposerController extends BaseController { String? base64Str, }) { logError('ComposerController::handleImageUploadFailure:fileUpload: $fileUpload | uploadError: $uploadError'); - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( context, '${AppLocalizations.of(context).can_not_upload_this_file_as_attachments}. (${uploadError.name})' ); @@ -2083,7 +2078,7 @@ class ComposerController extends BaseController { var contentHtml = ''; if (PlatformInfo.isWeb) { - if (_responsiveUtils.isDesktop(context) && + if (responsiveUtils.isDesktop(context) && screenDisplayMode.value == ScreenDisplayMode.minimize) { contentHtml = _textEditorWeb ?? ''; } else { @@ -2176,7 +2171,7 @@ class ComposerController extends BaseController { ( FromComposerBottomSheetBuilder( context, - _imagePaths, + imagePaths, listFromIdentities, scrollControllerIdentities, searchIdentitiesInputController diff --git a/lib/features/composer/presentation/composer_view.dart b/lib/features/composer/presentation/composer_view.dart index d9cf7ae55..75a12db60 100644 --- a/lib/features/composer/presentation/composer_view.dart +++ b/lib/features/composer/presentation/composer_view.dart @@ -1,5 +1,3 @@ -import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/context_menu/simple_context_menu_action_builder.dart'; import 'package:core/presentation/views/responsive/responsive_widget.dart'; import 'package:file_picker/file_picker.dart'; @@ -31,15 +29,12 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart'; class ComposerView extends GetWidget { - final _responsiveUtils = Get.find(); - final _imagePaths = Get.find(); - - ComposerView({Key? key}) : super(key: key); + const ComposerView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return ResponsiveWidget( - responsiveUtils: _responsiveUtils, + responsiveUtils: controller.responsiveUtils, mobile: MobileContainerView( keyboardRichTextController: controller.keyboardRichTextController, onCloseViewAction: () => controller.saveToDraftAndClose(context, canPop: false), @@ -55,13 +50,13 @@ class ComposerView extends GetWidget { : null, backgroundColor: MobileAppBarComposerWidgetStyle.backgroundColor, childBuilder: (context) => SafeArea( - left: !_responsiveUtils.isLandscapeMobile(context), - right: !_responsiveUtils.isLandscapeMobile(context), + left: !controller.responsiveUtils.isLandscapeMobile(context), + right: !controller.responsiveUtils.isLandscapeMobile(context), child: Container( color: ComposerStyle.mobileBackgroundColor, child: Column( children: [ - if (_responsiveUtils.isLandscapeMobile(context)) + if (controller.responsiveUtils.isLandscapeMobile(context)) Obx(() => LandscapeAppBarComposerWidget( isSendButtonEnabled: controller.isEnableEmailSendButton.value, onCloseViewAction: () => controller.saveToDraftAndClose(context), @@ -103,8 +98,8 @@ class ComposerView extends GetWidget { if (controller.fromRecipientState.value == PrefixRecipientState.enabled) FromComposerMobileWidget( selectedIdentity: controller.identitySelected.value, - imagePaths: _imagePaths, - responsiveUtils: _responsiveUtils, + imagePaths: controller.imagePaths, + responsiveUtils: controller.responsiveUtils, margin: ComposerStyle.mobileRecipientMargin, padding: ComposerStyle.mobileRecipientPadding, onTap: () => controller.openSelectIdentityBottomSheet(context) @@ -252,7 +247,7 @@ class ComposerView extends GetWidget { items: controller.listFromIdentities, itemSelected: controller.identitySelected.value, dropdownKey: controller.identityDropdownKey, - imagePaths: _imagePaths, + imagePaths: controller.imagePaths, padding: ComposerStyle.mobileRecipientPadding, margin: ComposerStyle.mobileRecipientMargin, onChangeIdentity: controller.onChangeIdentity, @@ -390,7 +385,7 @@ class ComposerView extends GetWidget { Widget _pickPhotoAndVideoAction(BuildContext context) { return (SimpleContextMenuActionBuilder( const Key('pick_photo_and_video_context_menu_action'), - SvgPicture.asset(_imagePaths.icPhotoLibrary, width: 24, height: 24, fit: BoxFit.fill), + SvgPicture.asset(controller.imagePaths.icPhotoLibrary, width: 24, height: 24, fit: BoxFit.fill), AppLocalizations.of(context).photos_and_videos) ..onActionClick((_) => controller.openFilePickerByType(context, FileType.media))) .build(); @@ -399,7 +394,7 @@ class ComposerView extends GetWidget { Widget _browseFileAction(BuildContext context) { return (SimpleContextMenuActionBuilder( const Key('browse_file_context_menu_action'), - SvgPicture.asset(_imagePaths.icMore, width: 24, height: 24, fit: BoxFit.fill), + SvgPicture.asset(controller.imagePaths.icMore, width: 24, height: 24, fit: BoxFit.fill), AppLocalizations.of(context).browse) ..onActionClick((_) => controller.openFilePickerByType(context, FileType.any))) .build(); @@ -410,11 +405,11 @@ class ComposerView extends GetWidget { PopupMenuItem( padding: EdgeInsets.zero, child: PopupItemWidget( - _imagePaths.icReadReceipt, + controller.imagePaths.icReadReceipt, AppLocalizations.of(context).requestReadReceipt, styleName: ComposerStyle.popupItemTextStyle, padding: ComposerStyle.popupItemPadding, - selectedIcon: _imagePaths.icFilterSelected, + selectedIcon: controller.imagePaths.icFilterSelected, isSelected: controller.hasRequestReadReceipt.value, onCallbackAction: () { popBack(); @@ -430,12 +425,12 @@ class ComposerView extends GetWidget { PopupMenuItem( padding: EdgeInsets.zero, child: PopupItemWidget( - _imagePaths.icReadReceipt, + controller.imagePaths.icReadReceipt, AppLocalizations.of(context).requestReadReceipt, styleName: ComposerStyle.popupItemTextStyle, padding: ComposerStyle.popupItemPadding, colorIcon: ComposerStyle.popupItemIconColor, - selectedIcon: _imagePaths.icFilterSelected, + selectedIcon: controller.imagePaths.icFilterSelected, isSelected: controller.hasRequestReadReceipt.value, onCallbackAction: () { popBack(); @@ -446,7 +441,7 @@ class ComposerView extends GetWidget { PopupMenuItem( padding: EdgeInsets.zero, child: PopupItemWidget( - _imagePaths.icSaveToDraft, + controller.imagePaths.icSaveToDraft, AppLocalizations.of(context).saveAsDraft, colorIcon: ComposerStyle.popupItemIconColor, styleName: ComposerStyle.popupItemTextStyle, @@ -460,7 +455,7 @@ class ComposerView extends GetWidget { PopupMenuItem( padding: EdgeInsets.zero, child: PopupItemWidget( - _imagePaths.icDeleteMailbox, + controller.imagePaths.icDeleteMailbox, AppLocalizations.of(context).delete, styleName: ComposerStyle.popupItemTextStyle, padding: ComposerStyle.popupItemPadding, diff --git a/lib/features/composer/presentation/composer_view_web.dart b/lib/features/composer/presentation/composer_view_web.dart index 4e105a8d9..f4ed53e8f 100644 --- a/lib/features/composer/presentation/composer_view_web.dart +++ b/lib/features/composer/presentation/composer_view_web.dart @@ -1,5 +1,3 @@ -import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/responsive/responsive_widget.dart'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; @@ -30,15 +28,12 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart'; class ComposerView extends GetWidget { - final _responsiveUtils = Get.find(); - final _imagePaths = Get.find(); - - ComposerView({Key? key}) : super(key: key); + const ComposerView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return ResponsiveWidget( - responsiveUtils: _responsiveUtils, + responsiveUtils: controller.responsiveUtils, mobile: MobileResponsiveContainerView( childBuilder: (context, constraints) { return Column( @@ -67,7 +62,7 @@ class ComposerView extends GetWidget { maxHeight: ComposerStyle.getMaxHeightEmailAddressWidget( context, constraints, - _responsiveUtils + controller.responsiveUtils ) ), child: SingleChildScrollView( @@ -79,8 +74,8 @@ class ComposerView extends GetWidget { message: controller.identitySelected.value?.email ?? '', child: FromComposerMobileWidget( selectedIdentity: controller.identitySelected.value, - imagePaths: _imagePaths, - responsiveUtils: _responsiveUtils, + imagePaths: controller.imagePaths, + responsiveUtils: controller.responsiveUtils, margin: ComposerStyle.mobileRecipientMargin, padding: ComposerStyle.mobileRecipientPadding, onTap: () => controller.openSelectIdentityBottomSheet(context) @@ -247,7 +242,7 @@ class ComposerView extends GetWidget { maxHeight: ComposerStyle.getMaxHeightEmailAddressWidget( context, constraints, - _responsiveUtils + controller.responsiveUtils ) ), child: SingleChildScrollView( @@ -259,7 +254,7 @@ class ComposerView extends GetWidget { items: controller.listFromIdentities, itemSelected: controller.identitySelected.value, dropdownKey: controller.identityDropdownKey, - imagePaths: _imagePaths, + imagePaths: controller.imagePaths, padding: ComposerStyle.desktopRecipientPadding, margin: ComposerStyle.desktopRecipientMargin, onChangeIdentity: controller.onChangeIdentity, @@ -477,7 +472,7 @@ class ComposerView extends GetWidget { maxHeight: ComposerStyle.getMaxHeightEmailAddressWidget( context, constraints, - _responsiveUtils + controller.responsiveUtils ) ), child: SingleChildScrollView( @@ -489,7 +484,7 @@ class ComposerView extends GetWidget { items: controller.listFromIdentities, itemSelected: controller.identitySelected.value, dropdownKey: controller.identityDropdownKey, - imagePaths: _imagePaths, + imagePaths: controller.imagePaths, padding: ComposerStyle.tabletRecipientPadding, margin: ComposerStyle.tabletRecipientMargin, onChangeIdentity: controller.onChangeIdentity, @@ -683,11 +678,11 @@ class ComposerView extends GetWidget { PopupMenuItem( padding: EdgeInsets.zero, child: PopupItemWidget( - _imagePaths.icReadReceipt, + controller.imagePaths.icReadReceipt, AppLocalizations.of(context).requestReadReceipt, styleName: ComposerStyle.popupItemTextStyle, padding: ComposerStyle.popupItemPadding, - selectedIcon: _imagePaths.icFilterSelected, + selectedIcon: controller.imagePaths.icFilterSelected, isSelected: controller.hasRequestReadReceipt.value, onCallbackAction: () { popBack(); @@ -703,12 +698,12 @@ class ComposerView extends GetWidget { PopupMenuItem( padding: EdgeInsets.zero, child: PopupItemWidget( - _imagePaths.icStyleCodeView, + controller.imagePaths.icStyleCodeView, AppLocalizations.of(context).embedCode, styleName: ComposerStyle.popupItemTextStyle, colorIcon: ComposerStyle.popupItemIconColor, padding: ComposerStyle.popupItemPadding, - selectedIcon: _imagePaths.icFilterSelected, + selectedIcon: controller.imagePaths.icFilterSelected, isSelected: controller.richTextWebController.codeViewEnabled, onCallbackAction: () { popBack(); @@ -719,12 +714,12 @@ class ComposerView extends GetWidget { PopupMenuItem( padding: EdgeInsets.zero, child: PopupItemWidget( - _imagePaths.icReadReceipt, + controller.imagePaths.icReadReceipt, AppLocalizations.of(context).requestReadReceipt, styleName: ComposerStyle.popupItemTextStyle, padding: ComposerStyle.popupItemPadding, colorIcon: ComposerStyle.popupItemIconColor, - selectedIcon: _imagePaths.icFilterSelected, + selectedIcon: controller.imagePaths.icFilterSelected, isSelected: controller.hasRequestReadReceipt.value, onCallbackAction: () { popBack(); @@ -735,7 +730,7 @@ class ComposerView extends GetWidget { PopupMenuItem( padding: EdgeInsets.zero, child: PopupItemWidget( - _imagePaths.icSaveToDraft, + controller.imagePaths.icSaveToDraft, AppLocalizations.of(context).saveAsDraft, colorIcon: ComposerStyle.popupItemIconColor, styleName: ComposerStyle.popupItemTextStyle, @@ -749,7 +744,7 @@ class ComposerView extends GetWidget { PopupMenuItem( padding: EdgeInsets.zero, child: PopupItemWidget( - _imagePaths.icDeleteMailbox, + controller.imagePaths.icDeleteMailbox, AppLocalizations.of(context).delete, styleName: ComposerStyle.popupItemTextStyle, padding: ComposerStyle.popupItemPadding, diff --git a/lib/features/contact/presentation/contact_view.dart b/lib/features/contact/presentation/contact_view.dart index b8c5a85ae..8dc385acc 100644 --- a/lib/features/contact/presentation/contact_view.dart +++ b/lib/features/contact/presentation/contact_view.dart @@ -1,7 +1,5 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; @@ -16,10 +14,7 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class ContactView extends GetWidget { - final _responsiveUtils = Get.find(); - final _imagePaths = Get.find(); - - ContactView({super.key}); + const ContactView({super.key}); @override Widget build(BuildContext context) { @@ -31,38 +26,38 @@ class ContactView extends GetWidget { bottom: false, left: false, right: false, - top: ContactUtils.supportAppBarTopBorder(context, _responsiveUtils), + top: ContactUtils.supportAppBarTopBorder(context, controller.responsiveUtils), child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.only( topLeft: Radius.circular(ContactUtils.getRadiusBorderAppBarTop( context, - _responsiveUtils)), + controller.responsiveUtils)), topRight: Radius.circular(ContactUtils.getRadiusBorderAppBarTop( context, - _responsiveUtils))), + controller.responsiveUtils))), color: Colors.white), child: ClipRRect( borderRadius: BorderRadius.only( topLeft: Radius.circular(ContactUtils.getRadiusBorderAppBarTop( context, - _responsiveUtils)), + controller.responsiveUtils)), topRight: Radius.circular(ContactUtils.getRadiusBorderAppBarTop( context, - _responsiveUtils))), + controller.responsiveUtils))), child: SafeArea(child: Container( color: Colors.white, child: Column(children: [ Container( height: 52, color: Colors.white, - padding: ContactUtils.getPaddingAppBar(context, _responsiveUtils), + padding: ContactUtils.getPaddingAppBar(context, controller.responsiveUtils), child: AppBarContactWidget( onCloseContactView: () => controller.closeContactView(context)) ), const Divider(color: AppColor.colorDividerComposer, height: 1), SearchAppBarWidget( - imagePaths: _imagePaths, + imagePaths: controller.imagePaths, searchQuery: controller.searchQuery.value, searchFocusNode: controller.textInputSearchFocus, searchInputController: controller.textInputSearchController, @@ -70,12 +65,12 @@ class ContactView extends GetWidget { hasSearchButton: true, padding: EdgeInsets.zero, heightSearchBar: 44, - margin: ContactUtils.getPaddingSearchInputForm(context, _responsiveUtils), + margin: ContactUtils.getPaddingSearchInputForm(context, controller.responsiveUtils), decoration: const BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(10)), color: AppColor.colorBgSearchBar), iconClearText: SvgPicture.asset( - _imagePaths.icClearTextSearch, + controller.imagePaths.icClearTextSearch, width: 18, height: 18, fit: BoxFit.fill), @@ -92,7 +87,7 @@ class ContactView extends GetWidget { itemCount: controller.listContactSearched.length, separatorBuilder: (context, index) { return Padding( - padding: ContactUtils.getPaddingDividerSearchResultList(context, _responsiveUtils), + padding: ContactUtils.getPaddingDividerSearchResultList(context, controller.responsiveUtils), child: const Divider( height: 1, color: AppColor.colorDivider), @@ -108,7 +103,7 @@ class ContactView extends GetWidget { ); return ContactSuggestionBoxItem( suggestionEmailAddress, - padding: ContactUtils.getPaddingSearchResultList(context, _responsiveUtils), + padding: ContactUtils.getPaddingSearchResultList(context, controller.responsiveUtils), selectedContactCallbackAction: (contact) => controller.selectContact(context, contact), ); } diff --git a/lib/features/destination_picker/presentation/destination_picker_controller.dart b/lib/features/destination_picker/presentation/destination_picker_controller.dart index 0d595374a..4f02e7609 100644 --- a/lib/features/destination_picker/presentation/destination_picker_controller.dart +++ b/lib/features/destination_picker/presentation/destination_picker_controller.dart @@ -1,7 +1,6 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/keyboard_utils.dart'; import 'package:core/utils/app_logger.dart'; import 'package:flutter/material.dart'; @@ -40,13 +39,9 @@ import 'package:tmail_ui_user/features/thread/presentation/model/search_state.da import 'package:tmail_ui_user/features/thread/presentation/model/search_status.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; -import 'package:uuid/uuid.dart'; class DestinationPickerController extends BaseMailboxController { - final _uuid = Get.find(); - final _appToast = Get.find(); - final SearchMailboxInteractor _searchMailboxInteractor; final CreateNewMailboxInteractor _createNewMailboxInteractor; @@ -310,7 +305,7 @@ class DestinationPickerController extends BaseMailboxController { void openCreateNewMailboxView(BuildContext context) async { if (mailboxDestination.value == null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(context).toastMessageErrorNotSelectedFolderWhenCreateNewMailbox); } else { @@ -346,7 +341,7 @@ class DestinationPickerController extends BaseMailboxController { if (exception is ErrorMethodResponse) { messageError = exception.description ?? AppLocalizations.of(currentContext!).createNewFolderFailure; } - _appToast.showToastErrorMessage(currentOverlayContext!, messageError); + appToast.showToastErrorMessage(currentOverlayContext!, messageError); } } @@ -379,7 +374,7 @@ class DestinationPickerController extends BaseMailboxController { KeyboardUtils.hideKeyboard(context); if (mailboxDestination.value == null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(context).toastMessageErrorNotSelectedFolderWhenCreateNewMailbox); return; @@ -392,7 +387,7 @@ class DestinationPickerController extends BaseMailboxController { final nameMailbox = newNameMailbox.value; if (nameMailbox != null && nameMailbox.isNotEmpty) { - final generateCreateId = Id(_uuid.v1()); + final generateCreateId = Id(uuid.v1()); final parentId = mailboxDestination.value == PresentationMailbox.unifiedMailbox ? null : mailboxDestination.value?.id; diff --git a/lib/features/destination_picker/presentation/destination_picker_view.dart b/lib/features/destination_picker/presentation/destination_picker_view.dart index b1fa09311..3ddd8286b 100644 --- a/lib/features/destination_picker/presentation/destination_picker_view.dart +++ b/lib/features/destination_picker/presentation/destination_picker_view.dart @@ -1,7 +1,5 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/list/tree_view.dart'; @@ -38,8 +36,6 @@ class DestinationPickerView extends GetWidget MailboxWidgetMixin { final _maxHeight = 656.0; - final _imagePaths = Get.find(); - final _responsiveUtils = Get.find(); @override final controller = Get.find(); @@ -59,7 +55,7 @@ class DestinationPickerView extends GetWidget borderOnForeground: false, color: Colors.transparent, child: SafeArea( - top: PlatformInfo.isMobile && _responsiveUtils.isPortraitMobile(context), + top: PlatformInfo.isMobile && controller.responsiveUtils.isPortraitMobile(context), bottom: false, left: false, right: false, @@ -90,8 +86,8 @@ class DestinationPickerView extends GetWidget child: SafeArea( top: false, bottom: false, - left: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context), - right: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context), + left: PlatformInfo.isMobile && controller.responsiveUtils.isLandscapeMobile(context), + right: PlatformInfo.isMobile && controller.responsiveUtils.isLandscapeMobile(context), child: Column(children: [ Obx(() => TopBarDestinationPickerBuilder( controller.mailboxAction.value, @@ -201,7 +197,7 @@ class DestinationPickerView extends GetWidget if (actions?.canSearch() == true && controller.destinationScreenType.value == DestinationScreenType.destinationPicker) SearchBarView( - _imagePaths, + controller.imagePaths, margin: const EdgeInsets.all(16), hintTextSearch: AppLocalizations.of(context).hintSearchFolders, onOpenSearchViewAction: controller.enableSearch @@ -294,8 +290,8 @@ class DestinationPickerView extends GetWidget children: [ buildHeaderMailboxCategory( context, - _responsiveUtils, - _imagePaths, + controller.responsiveUtils, + controller.imagePaths, categories, controller, toggleMailboxCategories: controller.toggleMailboxCategories, @@ -404,8 +400,8 @@ class DestinationPickerView extends GetWidget padding: const EdgeInsets.symmetric(horizontal: 16), itemBuilder: (context, index) { return Obx(() => DestinationPickerSearchMailboxItemBuilder( - _imagePaths, - _responsiveUtils, + controller.imagePaths, + controller.responsiveUtils, controller.listMailboxSearched[index], mailboxActions: actions, mailboxIdAlreadySelected: mailboxIdSelected, @@ -443,7 +439,7 @@ class DestinationPickerView extends GetWidget : Colors.transparent, child: Row(children: [ SvgPicture.asset( - _imagePaths.icFolderMailbox, + controller.imagePaths.icFolderMailbox, width: PlatformInfo.isWeb ? 20 : 24, height: PlatformInfo.isWeb ? 20 : 24, fit: BoxFit.fill @@ -469,7 +465,7 @@ class DestinationPickerView extends GetWidget left: AppUtils.isDirectionRTL(context) ? 30 : 0.0, ), child: SvgPicture.asset( - _imagePaths.icFilterSelected, + controller.imagePaths.icFilterSelected, width: 20, height: 20, fit: BoxFit.fill @@ -528,12 +524,12 @@ class DestinationPickerView extends GetWidget ), child: buildIconWeb( icon: SvgPicture.asset( - _imagePaths.icBack, + controller.imagePaths.icBack, colorFilter: AppColor.colorTextButton.asFilter(), fit: BoxFit.fill), onTap: () => controller.disableSearch(context))), Expanded(child: SearchAppBarWidget( - imagePaths: _imagePaths, + imagePaths: controller.imagePaths, searchQuery: controller.searchQuery.value, searchFocusNode: controller.searchFocus, searchInputController: controller.searchInputController, @@ -547,7 +543,7 @@ class DestinationPickerView extends GetWidget borderRadius: BorderRadius.all(Radius.circular(12)), color: AppColor.colorBgSearchBar), iconClearText: SvgPicture.asset( - _imagePaths.icClearTextSearch, + controller.imagePaths.icClearTextSearch, width: 18, height: 18, fit: BoxFit.fill), @@ -562,9 +558,9 @@ class DestinationPickerView extends GetWidget } BorderRadius _getRadiusDestinationPicker(BuildContext context) { - if (PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context)) { + if (PlatformInfo.isMobile && controller.responsiveUtils.isLandscapeMobile(context)) { return BorderRadius.zero; - } else if (_responsiveUtils.isMobile(context)) { + } else if (controller.responsiveUtils.isMobile(context)) { return const BorderRadius.only( topRight: Radius.circular(16), topLeft: Radius.circular(16)); @@ -575,14 +571,14 @@ class DestinationPickerView extends GetWidget double _getWidthDestinationPicker(BuildContext context) { if (PlatformInfo.isWeb) { - if (_responsiveUtils.isMobile(context)) { + if (controller.responsiveUtils.isMobile(context)) { return double.infinity; } else { return 556; } } else { - if (_responsiveUtils.isLandscapeMobile(context) || - _responsiveUtils.isPortraitMobile(context)) { + if (controller.responsiveUtils.isLandscapeMobile(context) || + controller.responsiveUtils.isPortraitMobile(context)) { return double.infinity; } else { return 556; @@ -592,21 +588,21 @@ class DestinationPickerView extends GetWidget double _getHeightDestinationPicker(BuildContext context) { if (PlatformInfo.isWeb) { - if (_responsiveUtils.isMobile(context)) { + if (controller.responsiveUtils.isMobile(context)) { return double.infinity; } else { - if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { + if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { return _maxHeight; } else { return double.infinity; } } } else { - if (_responsiveUtils.isLandscapeMobile(context) || - _responsiveUtils.isPortraitMobile(context)) { + if (controller.responsiveUtils.isLandscapeMobile(context) || + controller.responsiveUtils.isPortraitMobile(context)) { return double.infinity; } else { - if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { + if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { return _maxHeight; } else { return double.infinity; @@ -618,21 +614,21 @@ class DestinationPickerView extends GetWidget EdgeInsets _getMarginDestinationPicker(BuildContext context) { if (PlatformInfo.isWeb) { - if (_responsiveUtils.isMobile(context)) { + if (controller.responsiveUtils.isMobile(context)) { return EdgeInsets.zero; } else { - if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { + if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { return const EdgeInsets.symmetric(vertical: 12); } else { return const EdgeInsets.symmetric(vertical: 50); } } } else { - if (_responsiveUtils.isLandscapeMobile(context) || - _responsiveUtils.isPortraitMobile(context)) { + if (controller.responsiveUtils.isLandscapeMobile(context) || + controller.responsiveUtils.isPortraitMobile(context)) { return EdgeInsets.zero; } else { - if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { + if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { return const EdgeInsets.symmetric(vertical: 12); } else { return const EdgeInsets.symmetric(vertical: 50); diff --git a/lib/features/email/presentation/controller/single_email_controller.dart b/lib/features/email/presentation/controller/single_email_controller.dart index 0e7af8902..1330adf84 100644 --- a/lib/features/email/presentation/controller/single_email_controller.dart +++ b/lib/features/email/presentation/controller/single_email_controller.dart @@ -62,6 +62,7 @@ import 'package:tmail_ui_user/features/email/presentation/widgets/attachment_lis import 'package:tmail_ui_user/features/email/presentation/widgets/attachment_list/attachment_list_dialog_builder.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/email_address_bottom_sheet_builder.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/email_address_dialog_builder.dart'; +import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; @@ -74,7 +75,6 @@ import 'package:tmail_ui_user/features/manage_account/domain/usecases/create_new import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/extensions/datetime_extension.dart'; import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/rules_filter_creator_arguments.dart'; -import 'package:tmail_ui_user/features/session/data/exceptions/session_exceptions.dart'; import 'package:tmail_ui_user/features/thread/domain/constants/thread_constants.dart'; import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart'; import 'package:tmail_ui_user/main/error/capability_validator.dart'; @@ -85,18 +85,12 @@ import 'package:tmail_ui_user/main/routes/navigation_router.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import 'package:tmail_ui_user/main/routes/route_utils.dart'; import 'package:tmail_ui_user/main/utils/app_utils.dart'; -import 'package:uuid/uuid.dart'; class SingleEmailController extends BaseController with AppLoaderMixin { final mailboxDashBoardController = Get.find(); final emailSupervisorController = Get.find(); - final responsiveUtils = Get.find(); - final imagePaths = Get.find(); - final _appToast = Get.find(); - final _uuid = Get.find(); final _downloadManager = Get.find(); - final _dynamicUrlInterceptors = Get.find(); final _attachmentListScrollController = ScrollController(); final GetEmailContentInteractor _getEmailContentInteractor; @@ -297,7 +291,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { attachment: success.attachment)); if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).your_download_has_started, leadingSVGIconColor: AppColor.primaryColor, @@ -396,7 +390,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { final session = mailboxDashBoardController.sessionCurrent; final accountId = mailboxDashBoardController.accountId.value; if (session != null && accountId != null) { - final baseDownloadUrl = mailboxDashBoardController.sessionCurrent?.getDownloadUrl(jmapUrl: _dynamicUrlInterceptors.jmapUrl) ?? ''; + final baseDownloadUrl = mailboxDashBoardController.sessionCurrent?.getDownloadUrl(jmapUrl: dynamicUrlInterceptors.jmapUrl) ?? ''; TransformConfiguration transformConfiguration = PlatformInfo.isWeb ? TransformConfiguration.forPreviewEmailOnWeb() : TransformConfiguration.forPreviewEmail(); @@ -570,7 +564,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { break; case PermissionStatus.permanentlyDenied: if (context.mounted && currentOverlayContext != null && currentContext != null) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, AppLocalizations.of(context).you_need_to_grant_files_permission_to_download_attachments, ); @@ -584,7 +578,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { break; default: if (context.mounted && currentOverlayContext != null && currentContext != null) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, AppLocalizations.of(context).you_need_to_grant_files_permission_to_download_attachments, ); @@ -601,14 +595,14 @@ class SingleEmailController extends BaseController with AppLoaderMixin { void _downloadAttachmentsAction(List attachments) async { final accountId = mailboxDashBoardController.accountId.value; if (accountId != null && mailboxDashBoardController.sessionCurrent != null) { - final baseDownloadUrl = mailboxDashBoardController.sessionCurrent!.getDownloadUrl(jmapUrl: _dynamicUrlInterceptors.jmapUrl); + final baseDownloadUrl = mailboxDashBoardController.sessionCurrent!.getDownloadUrl(jmapUrl: dynamicUrlInterceptors.jmapUrl); consumeState(_downloadAttachmentsInteractor.execute(attachments, accountId, baseDownloadUrl)); } } void _downloadAttachmentsFailure(DownloadAttachmentsFailure failure) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).attachment_download_failed); } @@ -650,7 +644,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { void _exportAttachmentAction(Attachment attachment, CancelToken cancelToken) async { final accountId = mailboxDashBoardController.accountId.value; if (accountId != null && mailboxDashBoardController.sessionCurrent != null) { - final baseDownloadUrl = mailboxDashBoardController.sessionCurrent!.getDownloadUrl(jmapUrl: _dynamicUrlInterceptors.jmapUrl); + final baseDownloadUrl = mailboxDashBoardController.sessionCurrent!.getDownloadUrl(jmapUrl: dynamicUrlInterceptors.jmapUrl); consumeState(_exportAttachmentInteractor.execute(attachment, accountId, baseDownloadUrl, cancelToken)); } } @@ -660,7 +654,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { popBack(); if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).attachment_download_failed); } @@ -686,7 +680,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { if (openResult.type != open_file.ResultType.done) { logError('SingleEmailController::_openDownloadedPreviewWorkGroupDocument(): no preview available'); if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).noPreviewAvailable); } @@ -701,8 +695,8 @@ class SingleEmailController extends BaseController with AppLoaderMixin { final accountId = mailboxDashBoardController.accountId.value; final session = mailboxDashBoardController.sessionCurrent; if (accountId != null && session != null) { - final baseDownloadUrl = session.getDownloadUrl(jmapUrl: _dynamicUrlInterceptors.jmapUrl); - final generateTaskId = DownloadTaskId(_uuid.v4()); + final baseDownloadUrl = session.getDownloadUrl(jmapUrl: dynamicUrlInterceptors.jmapUrl); + final generateTaskId = DownloadTaskId(uuid.v4()); consumeState(_downloadAttachmentForWebInteractor.execute( generateTaskId, attachment, @@ -732,7 +726,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { } if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).attachment_download_failed); } @@ -821,7 +815,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { void _moveToMailboxSuccess(MoveToMailboxSuccess success) { mailboxDashBoardController.dispatchState(Right(success)); if (success.moveAction == MoveAction.moving && currentContext != null && currentOverlayContext != null) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, success.emailActionType.getToastMessageMoveToMailboxSuccess(currentContext!, destinationPath: success.destinationPath), actionName: AppLocalizations.of(currentContext!).undo, @@ -1063,21 +1057,21 @@ class SingleEmailController extends BaseController with AppLoaderMixin { } if (_sendReceiptToSenderInteractor == null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(context).toastMessageNotSupportMdnWhenSendReceipt); return; } if (_identitySelected == null || _identitySelected?.id == null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(context).toastMessageCannotFoundIdentityWhenSendReceipt); return; } if (currentEmail == null || _currentEmailId == null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(context).toastMessageCannotFoundEmailIdWhenSendReceipt); return; @@ -1089,7 +1083,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { final sendReceiptRequest = SendReceiptToSenderRequest( mdn: mdnToSender, identityId: _identitySelected!.id!, - sendId: Id(_uuid.v1())); + sendId: Id(uuid.v1())); log('SingleEmailController::_handleSendReceiptToSenderAction(): sendReceiptRequest: $sendReceiptRequest'); consumeState(_sendReceiptToSenderInteractor!.execute(accountId, sendReceiptRequest)); @@ -1129,7 +1123,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { void _sendReceiptToSenderSuccess(SendReceiptToSenderSuccess success) { log('SingleEmailController::_sendReceiptToSenderSuccess(): ${success.mdn.toString()}'); if (currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toastMessageSendReceiptSuccess, leadingSVGIcon: imagePaths.icReadReceiptMessage); @@ -1264,7 +1258,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { void _createNewRuleFilterSuccess(CreateNewRuleFilterSuccess success) { if (success.newListRules.isNotEmpty == true) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).newFilterWasCreated); } diff --git a/lib/features/email/presentation/email_view.dart b/lib/features/email/presentation/email_view.dart index 7231e5581..dea4e03db 100644 --- a/lib/features/email/presentation/email_view.dart +++ b/lib/features/email/presentation/email_view.dart @@ -1,11 +1,8 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:core/presentation/views/html_viewer/html_content_viewer_on_web_widget.dart'; import 'package:core/presentation/views/html_viewer/html_content_viewer_widget.dart'; import 'package:core/presentation/views/html_viewer/html_viewer_controller_for_web.dart'; -import 'package:core/utils/app_logger.dart'; import 'package:core/utils/direction_utils.dart'; import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; @@ -42,17 +39,14 @@ import 'package:tmail_ui_user/main/utils/app_utils.dart'; class EmailView extends GetWidget { - final responsiveUtils = Get.find(); - final imagePaths = Get.find(); - - EmailView({Key? key}) : super(key: key); + const EmailView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return WillPopScope( onWillPop: () => controller.backButtonPressedCallbackAction.call(context), child: Scaffold( - backgroundColor: responsiveUtils.isWebDesktop(context) + backgroundColor: controller.responsiveUtils.isWebDesktop(context) ? AppColor.colorBgDesktop : Colors.white, appBar: PlatformInfo.isIOS @@ -93,12 +87,12 @@ class EmailView extends GetWidget { ) : null, body: SafeArea( - right: responsiveUtils.isLandscapeMobile(context), - left: responsiveUtils.isLandscapeMobile(context), + right: controller.responsiveUtils.isLandscapeMobile(context), + left: controller.responsiveUtils.isLandscapeMobile(context), bottom: !PlatformInfo.isIOS, child: Container( clipBehavior: Clip.antiAlias, - decoration: responsiveUtils.isWebDesktop(context) + decoration: controller.responsiveUtils.isWebDesktop(context) ? BoxDecoration( borderRadius: BorderRadius.circular(20), border: Border.all(color: AppColor.colorBorderBodyThread, width: 1), @@ -139,9 +133,9 @@ class EmailView extends GetWidget { final vacation = controller.mailboxDashBoardController.vacationResponse.value; if (vacation?.vacationResponderIsValid == true && ( - responsiveUtils.isMobile(context) || - responsiveUtils.isTablet(context) || - responsiveUtils.isLandscapeMobile(context) + controller.responsiveUtils.isMobile(context) || + controller.responsiveUtils.isTablet(context) || + controller.responsiveUtils.isLandscapeMobile(context) ) ) { return VacationNotificationMessageWidget( @@ -270,7 +264,7 @@ class EmailView extends GetWidget { EdgeInsetsGeometry _getMarginEmailView(BuildContext context) { if (PlatformInfo.isWeb) { - if (responsiveUtils.isDesktop(context)) { + if (controller.responsiveUtils.isDesktop(context)) { return const EdgeInsetsDirectional.only( end: 16, top: 8, @@ -292,8 +286,8 @@ class EmailView extends GetWidget { return [ TMailButtonWidget.fromIcon( icon: DirectionUtils.isDirectionRTLByLanguage(context) - ? imagePaths.icOlder - : imagePaths.icNewer, + ? controller.imagePaths.icOlder + : controller.imagePaths.icNewer, iconColor: controller.emailSupervisorController.nextEmailActivated ? AppColor.primaryColor : AppColor.colorAttachmentIcon, @@ -305,8 +299,8 @@ class EmailView extends GetWidget { ), TMailButtonWidget.fromIcon( icon: DirectionUtils.isDirectionRTLByLanguage(context) - ? imagePaths.icNewer - : imagePaths.icOlder, + ? controller.imagePaths.icNewer + : controller.imagePaths.icOlder, iconColor: controller.emailSupervisorController.previousEmailActivated ? AppColor.primaryColor : AppColor.colorAttachmentIcon, @@ -332,22 +326,18 @@ class EmailView extends GetWidget { InformationSenderAndReceiverBuilder( controller: controller, emailSelected: presentationEmail, - imagePaths: imagePaths, - responsiveUtils: responsiveUtils, + imagePaths: controller.imagePaths, + responsiveUtils: controller.responsiveUtils, ), Obx(() { final attachments = controller.attachments.listAttachmentsDisplayedOutSide; if (attachments.isNotEmpty) { return EmailAttachmentsWidget( - responsiveUtils: responsiveUtils, + responsiveUtils: controller.responsiveUtils, attachments: attachments, - imagePaths: imagePaths, - onDragStarted: () { - log('EmailView::_buildEmailMessage:onDragStarted:'); - controller.mailboxDashBoardController.enableDraggableApp(); - }, + imagePaths: controller.imagePaths, + onDragStarted: controller.mailboxDashBoardController.enableDraggableApp, onDragEnd: (details) { - log('EmailView::_buildEmailMessage:onDragEnd:'); controller.mailboxDashBoardController.disableDraggableApp(); }, downloadAttachmentAction: (attachment) { @@ -463,7 +453,7 @@ class EmailView extends GetWidget { return (EmailActionCupertinoActionSheetActionBuilder( const Key('mark_as_unread_action'), SvgPicture.asset( - imagePaths.icUnreadEmail, + controller.imagePaths.icUnreadEmail, width: 24, height: 24, fit: BoxFit.fill, @@ -471,7 +461,7 @@ class EmailView extends GetWidget { ), AppLocalizations.of(context).mark_as_unread, email, - iconLeftPadding: responsiveUtils.isMobile(context) + iconLeftPadding: controller.responsiveUtils.isMobile(context) ? EdgeInsets.only( left: AppUtils.isDirectionRTL(context) ? 16 : 12, right: AppUtils.isDirectionRTL(context) ? 12 : 16, @@ -480,7 +470,7 @@ class EmailView extends GetWidget { left: AppUtils.isDirectionRTL(context) ? 12 : 0, right: AppUtils.isDirectionRTL(context) ? 0 : 12, ), - iconRightPadding: responsiveUtils.isMobile(context) + iconRightPadding: controller.responsiveUtils.isMobile(context) ? EdgeInsets.only( left: AppUtils.isDirectionRTL(context) ? 12 : 0, right: AppUtils.isDirectionRTL(context) ? 0 : 12, @@ -500,7 +490,7 @@ class EmailView extends GetWidget { return (EmailActionCupertinoActionSheetActionBuilder( const Key('mark_as_spam_or_un_spam_action'), SvgPicture.asset( - currentMailbox?.isSpam == true ? imagePaths.icNotSpam : imagePaths.icSpam, + currentMailbox?.isSpam == true ? controller.imagePaths.icNotSpam : controller.imagePaths.icSpam, width: 24, height: 24, fit: BoxFit.fill, @@ -510,7 +500,7 @@ class EmailView extends GetWidget { ? AppLocalizations.of(context).remove_from_spam : AppLocalizations.of(context).mark_as_spam, email, - iconLeftPadding: responsiveUtils.isMobile(context) + iconLeftPadding: controller.responsiveUtils.isMobile(context) ? EdgeInsets.only( left: AppUtils.isDirectionRTL(context) ? 16 : 12, right: AppUtils.isDirectionRTL(context) ? 12 : 16, @@ -519,7 +509,7 @@ class EmailView extends GetWidget { left: AppUtils.isDirectionRTL(context) ? 12 : 0, right: AppUtils.isDirectionRTL(context) ? 0 : 12, ), - iconRightPadding: responsiveUtils.isMobile(context) + iconRightPadding: controller.responsiveUtils.isMobile(context) ? EdgeInsets.only( left: AppUtils.isDirectionRTL(context) ? 12 : 0, right: AppUtils.isDirectionRTL(context) ? 0 : 12, @@ -537,14 +527,14 @@ class EmailView extends GetWidget { return (EmailActionCupertinoActionSheetActionBuilder( const Key('quick_creating_rule_action'), SvgPicture.asset( - imagePaths.icQuickCreatingRule, + controller.imagePaths.icQuickCreatingRule, width: 24, height: 24, fit: BoxFit.fill, colorFilter: AppColor.colorTextButton.asFilter()), AppLocalizations.of(context).quickCreatingRule, email, - iconLeftPadding: responsiveUtils.isMobile(context) + iconLeftPadding: controller.responsiveUtils.isMobile(context) ? EdgeInsets.only( left: AppUtils.isDirectionRTL(context) ? 16 : 12, right: AppUtils.isDirectionRTL(context) ? 12 : 16, @@ -553,7 +543,7 @@ class EmailView extends GetWidget { left: AppUtils.isDirectionRTL(context) ? 12 : 0, right: AppUtils.isDirectionRTL(context) ? 0 : 12, ), - iconRightPadding: responsiveUtils.isMobile(context) + iconRightPadding: controller.responsiveUtils.isMobile(context) ? EdgeInsets.only( left: AppUtils.isDirectionRTL(context) ? 12 : 0, right: AppUtils.isDirectionRTL(context) ? 0 : 12, @@ -577,7 +567,7 @@ class EmailView extends GetWidget { return PopupMenuItem( padding: EdgeInsets.zero, child: PopupItemWidget( - imagePaths.icUnreadEmail, + controller.imagePaths.icUnreadEmail, AppLocalizations.of(context).mark_as_unread, colorIcon: AppColor.colorTextButton, padding: const EdgeInsetsDirectional.only(start: 12), @@ -603,7 +593,7 @@ class EmailView extends GetWidget { return PopupMenuItem( padding: EdgeInsets.zero, child: PopupItemWidget( - mailboxContain?.isSpam == true ? imagePaths.icNotSpam : imagePaths.icSpam, + mailboxContain?.isSpam == true ? controller.imagePaths.icNotSpam : controller.imagePaths.icSpam, mailboxContain?.isSpam == true ? AppLocalizations.of(context).remove_from_spam : AppLocalizations.of(context).mark_as_spam, @@ -627,7 +617,7 @@ class EmailView extends GetWidget { return PopupMenuItem( padding: EdgeInsets.zero, child: PopupItemWidget( - imagePaths.icQuickCreatingRule, + controller.imagePaths.icQuickCreatingRule, AppLocalizations.of(context).quickCreatingRule, colorIcon: AppColor.colorTextButton, padding: const EdgeInsetsDirectional.only(start: 12), diff --git a/lib/features/identity_creator/presentation/identity_creator_controller.dart b/lib/features/identity_creator/presentation/identity_creator_controller.dart index 8767ce841..d7575ad4c 100644 --- a/lib/features/identity_creator/presentation/identity_creator_controller.dart +++ b/lib/features/identity_creator/presentation/identity_creator_controller.dart @@ -1,4 +1,3 @@ -import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/keyboard_utils.dart'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; @@ -40,7 +39,6 @@ import 'package:tmail_ui_user/features/manage_account/presentation/profiles/iden import 'package:tmail_ui_user/main/error/capability_validator.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; -import 'package:uuid/uuid.dart'; class IdentityCreatorController extends BaseController { @@ -48,9 +46,6 @@ class IdentityCreatorController extends BaseController { final GetAllIdentitiesInteractor _getAllIdentitiesInteractor; final IdentityUtils _identityUtils; - final _uuid = Get.find(); - final _appToast = Get.find(); - final noneEmailAddress = EmailAddress(null, 'None'); final listEmailAddressDefault = [].obs; final listEmailAddressOfReplyTo = [].obs; @@ -343,7 +338,7 @@ class IdentityCreatorController extends BaseController { htmlSignature: Signature(signatureHtmlText ?? ''), sortOrder: sortOrder); - final generateCreateId = Id(_uuid.v1()); + final generateCreateId = Id(uuid.v1()); if (actionType.value == IdentityActionType.create) { final identityRequest = CreateNewIdentityRequest( @@ -486,7 +481,7 @@ class IdentityCreatorController extends BaseController { final platformFile = filePickerResult!.files.first; _insertInlineImage(context, platformFile, maxWidth: maxWidth); } else { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( context, AppLocalizations.of(context).cannotSelectThisImage ); @@ -505,7 +500,7 @@ class IdentityCreatorController extends BaseController { {int? maxWidth} ) { if (_isExceedMaxSizeInlineImage(platformFile.size)) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( context, AppLocalizations.of(context).pleaseChooseAnImageSizeCorrectly( IdentityCreatorConstants.maxKBSizeIdentityInlineImage diff --git a/lib/features/identity_creator/presentation/identity_creator_view.dart b/lib/features/identity_creator/presentation/identity_creator_view.dart index c971a4d34..40c52ca79 100644 --- a/lib/features/identity_creator/presentation/identity_creator_view.dart +++ b/lib/features/identity_creator/presentation/identity_creator_view.dart @@ -2,9 +2,7 @@ import 'dart:math' as math; import 'package:core/presentation/extensions/capitalize_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/html_transformer/html_utils.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/responsive/responsive_widget.dart'; @@ -33,9 +31,6 @@ import 'package:tmail_ui_user/main/utils/app_utils.dart'; class IdentityCreatorView extends GetWidget with RichTextButtonMixin { - final _imagePaths = Get.find(); - final _responsiveUtils = Get.find(); - @override final controller = Get.find(); @@ -44,7 +39,7 @@ class IdentityCreatorView extends GetWidget @override Widget build(BuildContext context) { final responsiveWidget = ResponsiveWidget( - responsiveUtils: _responsiveUtils, + responsiveUtils: controller.responsiveUtils, mobile: Scaffold( backgroundColor: Colors.black38, body: GestureDetector( @@ -103,8 +98,8 @@ class IdentityCreatorView extends GetWidget color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(16)) ), - width: math.max(_responsiveUtils.getSizeScreenWidth(context) * 0.4, 700), - height: _responsiveUtils.getSizeScreenHeight(context) * 0.8, + width: math.max(controller.responsiveUtils.getSizeScreenWidth(context) * 0.4, 700), + height: controller.responsiveUtils.getSizeScreenHeight(context) * 0.8, child: ClipRRect( borderRadius: const BorderRadius.all(Radius.circular(16)), child: _buildBodyView(context) @@ -129,8 +124,8 @@ class IdentityCreatorView extends GetWidget color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(16)) ), - width: math.max(_responsiveUtils.getSizeScreenWidth(context) * 0.4, 800), - height: _responsiveUtils.getSizeScreenHeight(context) * 0.8, + width: math.max(controller.responsiveUtils.getSizeScreenWidth(context) * 0.4, 800), + height: controller.responsiveUtils.getSizeScreenHeight(context) * 0.8, child: ClipRRect( borderRadius: const BorderRadius.all(Radius.circular(16)), child: _buildBodyView(context) @@ -150,7 +145,7 @@ class IdentityCreatorView extends GetWidget backgroundKeyboardToolBarColor: PlatformInfo.isIOS ? AppColor.colorBackgroundKeyboard : AppColor.colorBackgroundKeyboardAndroid, - isLandScapeMode: _responsiveUtils.isLandscapeMobile(context), + isLandScapeMode: controller.responsiveUtils.isLandscapeMobile(context), richTextController: controller.keyboardRichTextController, titleQuickStyleBottomSheet: AppLocalizations.of(context).titleQuickStyles, titleBackgroundBottomSheet: AppLocalizations.of(context).titleBackground, @@ -185,7 +180,7 @@ class IdentityCreatorView extends GetWidget Obx(() { if (controller.actionType.value == IdentityActionType.create) { return IdentityDropListFieldBuilder( - _imagePaths, + controller.imagePaths, AppLocalizations.of(context).email.inCaps, controller.emailOfIdentity.value, controller.listEmailAddressDefault, @@ -198,7 +193,7 @@ class IdentityCreatorView extends GetWidget }), const SizedBox(height: 24), Obx(() => IdentityDropListFieldBuilder( - _imagePaths, + controller.imagePaths, AppLocalizations.of(context).reply_to, controller.replyToOfIdentity.value, controller.listEmailAddressOfReplyTo, @@ -291,7 +286,7 @@ class IdentityCreatorView extends GetWidget buildIconWeb( iconSize: 24, icon: SvgPicture.asset( - _imagePaths.icComposerClose, + controller.imagePaths.icComposerClose, fit: BoxFit.fill, colorFilter: AppColor.colorDeleteContactIcon.asFilter() ), @@ -317,7 +312,7 @@ class IdentityCreatorView extends GetWidget padding: const EdgeInsetsDirectional.only(end: 4.0), child: buildWrapIconStyleText( icon: buildIconWithTooltip( - path: _imagePaths.icAddPicture, + path: controller.imagePaths.icAddPicture, tooltip: AppLocalizations.of(context).insertImage ), hasDropdown: false, @@ -405,7 +400,7 @@ class IdentityCreatorView extends GetWidget return Obx(() { if (controller.isDefaultIdentitySupported.isTrue) { return SetDefaultIdentityCheckboxBuilder( - imagePaths: _imagePaths, + imagePaths: controller.imagePaths, isCheck: controller.isDefaultIdentity.value, onCheckboxChanged: controller.onCheckboxChanged); } else { @@ -460,16 +455,16 @@ class IdentityCreatorView extends GetWidget } bool _isMobile(BuildContext context) => - _responsiveUtils.isPortraitMobile(context) || - _responsiveUtils.isLandscapeMobile(context); + controller.responsiveUtils.isPortraitMobile(context) || + controller.responsiveUtils.isLandscapeMobile(context); double _getMaxWidth(BuildContext context) { if (_isMobile(context)) { - return _responsiveUtils.getSizeScreenWidth(context); - } else if (_responsiveUtils.isDesktop(context)) { - return math.max(_responsiveUtils.getSizeScreenWidth(context) * 0.4, 800); + return controller.responsiveUtils.getSizeScreenWidth(context); + } else if (controller.responsiveUtils.isDesktop(context)) { + return math.max(controller.responsiveUtils.getSizeScreenWidth(context) * 0.4, 800); } else { - return math.max(_responsiveUtils.getSizeScreenWidth(context) * 0.4, 700); + return math.max(controller.responsiveUtils.getSizeScreenWidth(context) * 0.4, 700); } } } \ No newline at end of file diff --git a/lib/features/login/presentation/login_view.dart b/lib/features/login/presentation/login_view.dart index 983b7c19b..39b88d186 100644 --- a/lib/features/login/presentation/login_view.dart +++ b/lib/features/login/presentation/login_view.dart @@ -15,7 +15,7 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class LoginView extends BaseLoginView { - LoginView({Key? key}) : super(key: key); + const LoginView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -66,7 +66,7 @@ class LoginView extends BaseLoginView { children: [ Padding( padding: EdgeInsets.only( - top: responsiveUtils.isHeightShortest(context) ? 64 : 0), + top: controller.responsiveUtils.isHeightShortest(context) ? 64 : 0), child: Text( AppLocalizations.of(context).login, style: const TextStyle(fontSize: 32, color: AppColor.colorNameEmail, fontWeight: FontWeight.w900) @@ -102,7 +102,7 @@ class LoginView extends BaseLoginView { key: const Key('login_arrow_back_button'), onPressed: () => controller.handleBackInCredentialForm(), icon: SvgPicture.asset( - imagePaths.icBack, + controller.imagePaths.icBack, alignment: Alignment.center, colorFilter: AppColor.primaryColor.asFilter() ) @@ -127,7 +127,7 @@ class LoginView extends BaseLoginView { controller.formatUrl(pattern); return controller.getAllRecentLoginUrlAction(pattern); }, - itemBuilder: (context, loginUrl) => RecentItemTileWidget(loginUrl, imagePath: imagePaths), + itemBuilder: (context, loginUrl) => RecentItemTileWidget(loginUrl, imagePath: controller.imagePaths), onSuggestionSelected: (loginUrl) => controller.formatUrl(loginUrl.url), suggestionsBoxDecoration: const SuggestionsBoxDecoration(borderRadius: BorderRadius.all(Radius.circular(14))), noItemsFoundBuilder: (context) => const SizedBox(), @@ -149,7 +149,7 @@ class LoginView extends BaseLoginView { Widget _buildNextButton(BuildContext context) { return Container( margin: const EdgeInsets.only(bottom: 16, left: 24, right: 24), - width: responsiveUtils.getDeviceWidth(context),height: 48, + width: controller.responsiveUtils.getDeviceWidth(context),height: 48, child: ElevatedButton( key: const Key('nextToCredentialForm'), style: ButtonStyle( @@ -184,7 +184,7 @@ class LoginView extends BaseLoginView { } bool _supportScrollForm(BuildContext context) { - return !(responsiveUtils.isMobile(context) && responsiveUtils.isPortrait(context)); + return !(controller.responsiveUtils.isMobile(context) && controller.responsiveUtils.isPortrait(context)); } Widget _buildLoadingProgress(BuildContext context) { diff --git a/lib/features/login/presentation/login_view_web.dart b/lib/features/login/presentation/login_view_web.dart index 4905fc583..36cf2f84b 100644 --- a/lib/features/login/presentation/login_view_web.dart +++ b/lib/features/login/presentation/login_view_web.dart @@ -12,7 +12,7 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class LoginView extends BaseLoginView { - LoginView({Key? key}) : super(key: key); + const LoginView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -20,7 +20,7 @@ class LoginView extends BaseLoginView { backgroundColor: AppColor.primaryLightColor, body: Center(child: SingleChildScrollView( child: ResponsiveWidget( - responsiveUtils: responsiveUtils, + responsiveUtils: controller.responsiveUtils, mobile: _buildMobileForm(context), desktop: _buildWebForm(context), ))), @@ -71,7 +71,7 @@ class LoginView extends BaseLoginView { child: Align( alignment: Alignment.bottomCenter, child: SvgPicture.asset( - imagePaths.icPowerByLinagora, + controller.imagePaths.icPowerByLinagora, width: 97, height: 44, fit: BoxFit.fill))) @@ -101,7 +101,7 @@ class LoginView extends BaseLoginView { padding: const EdgeInsets.only(top: 24), child: SloganBuilder( arrangedByHorizontal: true, - logoSVG: imagePaths.icJMAPStandard, + logoSVG: controller.imagePaths.icJMAPStandard, sizeLogo: 48.0, paddingText: const EdgeInsets.only(left: 12), text: AppLocalizations.of(context).jmapStandard, @@ -112,7 +112,7 @@ class LoginView extends BaseLoginView { padding: const EdgeInsets.only(top: 16), child: SloganBuilder( arrangedByHorizontal: true, - logoSVG: imagePaths.icEncrypted, + logoSVG: controller.imagePaths.icEncrypted, sizeLogo: 48.0, paddingText: const EdgeInsets.only(left: 12), text: AppLocalizations.of(context).encryptedMailbox, @@ -123,7 +123,7 @@ class LoginView extends BaseLoginView { padding: const EdgeInsets.only(top: 16), child: SloganBuilder( arrangedByHorizontal: true, - logoSVG: imagePaths.icTeam, + logoSVG: controller.imagePaths.icTeam, sizeLogo: 48.0, paddingText: const EdgeInsets.only(left: 12), text: AppLocalizations.of(context).manageEmailAsATeam, @@ -134,7 +134,7 @@ class LoginView extends BaseLoginView { padding: const EdgeInsets.only(top: 16), child: SloganBuilder( arrangedByHorizontal: true, - logoSVG: imagePaths.icIntegration, + logoSVG: controller.imagePaths.icIntegration, sizeLogo: 48.0, paddingText: const EdgeInsets.only(left: 12), text: AppLocalizations.of(context).multipleIntegrations, @@ -144,7 +144,7 @@ class LoginView extends BaseLoginView { Padding( padding: const EdgeInsets.only(top: 44), child: SvgPicture.asset( - imagePaths.icLoginGraphic, + controller.imagePaths.icLoginGraphic, fit: BoxFit.fill, alignment: Alignment.center ) @@ -202,7 +202,7 @@ class LoginView extends BaseLoginView { ), Padding( padding: const EdgeInsets.only(top: 44, bottom: 10), - child: SvgPicture.asset(imagePaths.icPowerByLinagora, width: 97, height: 44, fit: BoxFit.fill) + child: SvgPicture.asset(controller.imagePaths.icPowerByLinagora, width: 97, height: 44, fit: BoxFit.fill) ) ] ) @@ -216,7 +216,7 @@ class LoginView extends BaseLoginView { mainAxisSize: MainAxisSize.min, children: [ SvgPicture.asset( - imagePaths.icTMailLogo, + controller.imagePaths.icTMailLogo, fit: BoxFit.fill, width: 36, height: 36, @@ -235,7 +235,7 @@ class LoginView extends BaseLoginView { Widget _buildSSOButton(BuildContext context) { return Container( margin: const EdgeInsets.only(bottom: 16, left: 24, right: 24), - width: responsiveUtils.getDeviceWidth(context),height: 48, + width: controller.responsiveUtils.getDeviceWidth(context),height: 48, child: ElevatedButton( key: const Key('ssoSubmitForm'), style: ButtonStyle( diff --git a/lib/features/mailbox/presentation/base_mailbox_view.dart b/lib/features/mailbox/presentation/base_mailbox_view.dart index 4bb31a17a..73e310ca5 100644 --- a/lib/features/mailbox/presentation/base_mailbox_view.dart +++ b/lib/features/mailbox/presentation/base_mailbox_view.dart @@ -1,5 +1,3 @@ -import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart'; @@ -12,7 +10,4 @@ abstract class BaseMailboxView extends GetWidget MailboxWidgetMixin { BaseMailboxView({Key? key}) : super(key: key); - - final responsiveUtils = Get.find(); - final imagePaths = Get.find(); } \ No newline at end of file diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index 86501b369..de3f1405a 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -84,15 +84,10 @@ import 'package:tmail_ui_user/main/routes/dialog_router.dart'; import 'package:tmail_ui_user/main/routes/navigation_router.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import 'package:tmail_ui_user/main/routes/route_utils.dart'; -import 'package:uuid/uuid.dart'; class MailboxController extends BaseMailboxController with MailboxActionHandlerMixin { final mailboxDashBoardController = Get.find(); - final _appToast = Get.find(); - final _imagePaths = Get.find(); - final _responsiveUtils = Get.find(); - final _uuid = Get.find(); final isMailboxListScrollable = false.obs; final CreateNewMailboxInteractor _createNewMailboxInteractor; final DeleteMultipleMailboxInteractor _deleteMultipleMailboxInteractor; @@ -302,7 +297,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM void _initCollapseMailboxCategories() { if (kIsWeb && currentContext != null - && (_responsiveUtils.isMobile(currentContext!) || _responsiveUtils.isTablet(currentContext!))) { + && (responsiveUtils.isMobile(currentContext!) || responsiveUtils.isTablet(currentContext!))) { mailboxCategoriesExpandMode.value = MailboxCategoriesExpandMode( defaultMailbox: ExpandMode.COLLAPSE, personalFolders: ExpandMode.COLLAPSE, @@ -533,7 +528,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM : await push(AppRoutes.mailboxCreator, arguments: arguments); if (result != null && result is NewMailboxArguments) { - final generateCreateId = Id(_uuid.v1()); + final generateCreateId = Id(uuid.v1()); _createNewMailboxAction(session, accountId, CreateNewMailboxRequest( generateCreateId, result.newName, @@ -548,11 +543,11 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM void _createNewMailboxSuccess(CreateNewMailboxSuccess success) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).createFolderSuccessfullyMessage(success.newMailbox.name?.name ?? ''), leadingSVGIconColor: Colors.white, - leadingSVGIcon: _imagePaths.icFolderMailbox); + leadingSVGIcon: imagePaths.icFolderMailbox); _newFolderId = success.newMailbox.id; } @@ -567,7 +562,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM if (exception is ErrorMethodResponse) { messageError = exception.description ?? AppLocalizations.of(currentContext!).createNewFolderFailure; } - _appToast.showToastErrorMessage(currentOverlayContext!, messageError); + appToast.showToastErrorMessage(currentOverlayContext!, messageError); } } @@ -650,7 +645,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM openDialogRenameMailboxAction( context, selectedMailboxList.first, - _responsiveUtils, + responsiveUtils, onRenameMailboxAction: _renameMailboxAction ); break; @@ -705,7 +700,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM jmap.State? currentMailboxState ) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).deleteFoldersSuccessfully); } @@ -721,8 +716,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM BuildContext context, List selectedMailboxList ) { - if (_responsiveUtils.isLandscapeMobile(context) || - _responsiveUtils.isPortraitMobile(context)) { + if (responsiveUtils.isLandscapeMobile(context) || + responsiveUtils.isPortraitMobile(context)) { (ConfirmationDialogActionSheetBuilder(context) ..messageText(AppLocalizations.of(context) .messageConfirmationDialogDeleteMultipleFolder(selectedMailboxList.length)) @@ -735,12 +730,12 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM showDialog( context: context, barrierColor: AppColor.colorDefaultCupertinoActionSheet, - builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(_imagePaths) + builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths) ..key(const Key('confirm_dialog_delete_multiple_mailbox')) ..title(AppLocalizations.of(context).deleteFolders) ..content(AppLocalizations.of(context) .messageConfirmationDialogDeleteMultipleFolder(selectedMailboxList.length)) - ..addIcon(SvgPicture.asset(_imagePaths.icRemoveDialog, + ..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill)) ..colorConfirmButton(AppColor.colorConfirmActionDialog) ..styleTextConfirmButton(const TextStyle( @@ -789,10 +784,10 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM void _deleteMailboxFailure(DeleteMultipleMailboxFailure failure) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).deleteFoldersFailure, - leadingSVGIcon: _imagePaths.icDeleteToast + leadingSVGIcon: imagePaths.icDeleteToast ); } } @@ -835,7 +830,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM if (success.moveAction == MoveAction.moving && currentOverlayContext != null && currentContext != null) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).movedToFolder( success.destinationMailboxDisplayName ?? AppLocalizations.of(currentContext!).allFolders), @@ -847,11 +842,11 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM destinationMailboxId: success.parentId, parentId: success.destinationMailboxId)); }, - leadingSVGIcon: _imagePaths.icFolderMailbox, + leadingSVGIcon: imagePaths.icFolderMailbox, leadingSVGIconColor: Colors.white, backgroundColor: AppColor.toastSuccessBackgroundColor, textColor: Colors.white, - actionIcon: SvgPicture.asset(_imagePaths.icUndo)); + actionIcon: SvgPicture.asset(imagePaths.icUndo)); } _refreshMailboxChanges( @@ -934,8 +929,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM case MailboxActions.delete: openConfirmationDialogDeleteMailboxAction( context, - _responsiveUtils, - _imagePaths, + responsiveUtils, + imagePaths, mailbox, onDeleteMailboxAction: _deleteMailboxAction ); @@ -944,7 +939,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM openDialogRenameMailboxAction( context, mailbox, - _responsiveUtils, + responsiveUtils, onRenameMailboxAction: _renameMailboxAction ); break; @@ -1168,7 +1163,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM {List? listDescendantMailboxIds} ) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toastMsgHideFolderSuccess, actionName: AppLocalizations.of(currentContext!).undo, @@ -1176,11 +1171,11 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM mailboxIdSubscribed, listDescendantMailboxIds: listDescendantMailboxIds ), - leadingSVGIcon: _imagePaths.icFolderMailbox, + leadingSVGIcon: imagePaths.icFolderMailbox, leadingSVGIconColor: Colors.white, backgroundColor: AppColor.toastSuccessBackgroundColor, textColor: Colors.white, - actionIcon: SvgPicture.asset(_imagePaths.icUndo)); + actionIcon: SvgPicture.asset(imagePaths.icUndo)); } } diff --git a/lib/features/mailbox/presentation/mailbox_view.dart b/lib/features/mailbox/presentation/mailbox_view.dart index f29225e6e..e66284588 100644 --- a/lib/features/mailbox/presentation/mailbox_view.dart +++ b/lib/features/mailbox/presentation/mailbox_view.dart @@ -27,9 +27,9 @@ class MailboxView extends BaseMailboxView { ThemeUtils.setStatusBarTransparentColor(); return SafeArea(bottom: false, left: false, right: false, - top: responsiveUtils.isMobile(context), + top: controller.responsiveUtils.isMobile(context), child: ClipRRect( - borderRadius: responsiveUtils.isPortraitMobile(context) + borderRadius: controller.responsiveUtils.isPortraitMobile(context) ? const BorderRadius.only( topRight: Radius.circular(14), topLeft: Radius.circular(14)) @@ -88,7 +88,7 @@ class MailboxView extends BaseMailboxView { final appInformation = controller.mailboxDashBoardController.appInformation.value; if (appInformation != null && !controller.isSelectionEnabled()) { - if (responsiveUtils.isLandscapeMobile(context)) { + if (controller.responsiveUtils.isLandscapeMobile(context)) { return const SizedBox.shrink(); } return _buildVersionInformation(context, appInformation); @@ -108,7 +108,7 @@ class MailboxView extends BaseMailboxView { crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - padding: EdgeInsets.only(top: responsiveUtils.isMobile(context) ? 10 : 30, bottom: 8), + padding: EdgeInsets.only(top: controller.responsiveUtils.isMobile(context) ? 10 : 30, bottom: 8), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -124,7 +124,7 @@ class MailboxView extends BaseMailboxView { ] ) ), - if (!responsiveUtils.isTabletLarge(context)) + if (!controller.responsiveUtils.isTabletLarge(context)) const Divider(color: AppColor.colorDividerMailbox, height: 1), ] ); @@ -132,7 +132,7 @@ class MailboxView extends BaseMailboxView { Widget _buildCloseScreenButton(BuildContext context) { return buildIconWeb( - icon: SvgPicture.asset(imagePaths.icCircleClose, width: 28, height: 28, fit: BoxFit.fill), + icon: SvgPicture.asset(controller.imagePaths.icCircleClose, width: 28, height: 28, fit: BoxFit.fill), tooltip: AppLocalizations.of(context).close, onTap: () => controller.closeMailboxScreen(context)); } @@ -163,7 +163,7 @@ class MailboxView extends BaseMailboxView { padding: const EdgeInsets.only(bottom: 16), child: Column(children: [ Obx(() { - if (controller.isSelectionEnabled() && responsiveUtils.isLandscapeMobile(context)) { + if (controller.isSelectionEnabled() && controller.responsiveUtils.isLandscapeMobile(context)) { return const SizedBox.shrink(); } return UserInformationWidget( @@ -180,7 +180,7 @@ class MailboxView extends BaseMailboxView { }), Obx(() => MailboxLoadingBarWidget(viewState: controller.viewState.value)), AppConfig.appGridDashboardAvailable - ? buildAppGridDashboard(context, responsiveUtils, imagePaths, controller) + ? buildAppGridDashboard(context, controller.responsiveUtils, controller.imagePaths, controller) : const SizedBox.shrink(), const SizedBox(height: 8), Obx(() { @@ -212,7 +212,7 @@ class MailboxView extends BaseMailboxView { const SizedBox(height: 12), Container( margin: EdgeInsetsDirectional.only( - start: responsiveUtils.isLandscapeMobile(context) ? 0 : 8, + start: controller.responsiveUtils.isLandscapeMobile(context) ? 0 : 8, end: 16), padding: const EdgeInsetsDirectional.only(start: 8), child: Row( @@ -232,7 +232,7 @@ class MailboxView extends BaseMailboxView { minSize: 40, iconPadding: EdgeInsets.zero, icon: SvgPicture.asset( - imagePaths.icSearchBar, + controller.imagePaths.icSearchBar, colorFilter: AppColor.colorTextButton.asFilter(), fit: BoxFit.fill ), @@ -245,7 +245,7 @@ class MailboxView extends BaseMailboxView { iconPadding: EdgeInsets.zero, splashRadius: 15, icon: SvgPicture.asset( - imagePaths.icAddNewFolder, + controller.imagePaths.icAddNewFolder, colorFilter: AppColor.colorTextButton.asFilter(), fit: BoxFit.fill), tooltip: AppLocalizations.of(context).newFolder, @@ -285,7 +285,7 @@ class MailboxView extends BaseMailboxView { return Padding( padding: EdgeInsetsDirectional.only( start: 4, - end: responsiveUtils.isLandscapeMobile(context) ? 8 : 28), + end: controller.responsiveUtils.isLandscapeMobile(context) ? 8 : 28), child: Row(children: [ buildIconWeb( minSize: 40, @@ -294,8 +294,8 @@ class MailboxView extends BaseMailboxView { splashRadius: 15, icon: SvgPicture.asset( categories.getExpandMode(controller.mailboxCategoriesExpandMode.value) == ExpandMode.EXPAND - ? imagePaths.icArrowBottom - : DirectionUtils.isDirectionRTLByLanguage(context) ? imagePaths.icArrowLeft : imagePaths.icArrowRight, + ? controller.imagePaths.icArrowBottom + : DirectionUtils.isDirectionRTLByLanguage(context) ? controller.imagePaths.icArrowLeft : controller.imagePaths.icArrowRight, colorFilter: AppColor.primaryColor.asFilter(), fit: BoxFit.fill), tooltip: AppLocalizations.of(context).collapse, @@ -312,7 +312,7 @@ class MailboxView extends BaseMailboxView { return Container( margin: EdgeInsetsDirectional.only( - start: responsiveUtils.isLandscapeMobile(context) ? 0 : 8, + start: controller.responsiveUtils.isLandscapeMobile(context) ? 0 : 8, end: 16 ), padding: const EdgeInsetsDirectional.only(start: 12), @@ -348,7 +348,7 @@ class MailboxView extends BaseMailboxView { mailboxNode: mailboxNode, selectionMode: controller.currentSelectMode.value, mailboxNodeSelected: controller.mailboxDashBoardController.selectedMailbox.value, - onLongPressMailboxNodeAction: (mailboxNode) => openMailboxMenuActionOnMobile(context, imagePaths, mailboxNode.item, controller), + onLongPressMailboxNodeAction: (mailboxNode) => openMailboxMenuActionOnMobile(context, controller.imagePaths, mailboxNode.item, controller), onOpenMailboxFolderClick: (mailboxNode) => controller.openMailbox(context, mailboxNode.item), onExpandFolderActionClick: (mailboxNode) => controller.toggleMailboxFolder(mailboxNode, controller.mailboxListScrollController), onSelectMailboxFolderClick: (mailboxNode) => controller.selectMailboxNode(mailboxNode), @@ -360,7 +360,7 @@ class MailboxView extends BaseMailboxView { mailboxNode: mailboxNode, selectionMode: controller.currentSelectMode.value, mailboxNodeSelected: controller.mailboxDashBoardController.selectedMailbox.value, - onLongPressMailboxNodeAction: (mailboxNode) => openMailboxMenuActionOnMobile(context, imagePaths, mailboxNode.item, controller), + onLongPressMailboxNodeAction: (mailboxNode) => openMailboxMenuActionOnMobile(context, controller.imagePaths, mailboxNode.item, controller), onOpenMailboxFolderClick: (mailboxNode) => controller.openMailbox(context, mailboxNode.item), onSelectMailboxFolderClick: (mailboxNode) => controller.selectMailboxNode(mailboxNode) )); diff --git a/lib/features/mailbox/presentation/mailbox_view_web.dart b/lib/features/mailbox/presentation/mailbox_view_web.dart index eedd557af..4e4deabca 100644 --- a/lib/features/mailbox/presentation/mailbox_view_web.dart +++ b/lib/features/mailbox/presentation/mailbox_view_web.dart @@ -22,25 +22,25 @@ class MailboxView extends BaseMailboxView { @override Widget build(BuildContext context) { return Drawer( - elevation: responsiveUtils.isDesktop(context) ? 0 : 16.0, + elevation: controller.responsiveUtils.isDesktop(context) ? 0 : 16.0, child: Scaffold( - backgroundColor: responsiveUtils.isWebDesktop(context) + backgroundColor: controller.responsiveUtils.isWebDesktop(context) ? AppColor.colorBgDesktop : Colors.white, body: Column(children: [ - if (!responsiveUtils.isDesktop(context)) _buildLogoApp(context), - if (!responsiveUtils.isDesktop(context)) + if (!controller.responsiveUtils.isDesktop(context)) _buildLogoApp(context), + if (!controller.responsiveUtils.isDesktop(context)) const Divider( color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2), Expanded(child: Container( - padding: EdgeInsetsDirectional.only(start: responsiveUtils.isDesktop(context) ? 16 : 0), - color: responsiveUtils.isDesktop(context) + padding: EdgeInsetsDirectional.only(start: controller.responsiveUtils.isDesktop(context) ? 16 : 0), + color: controller.responsiveUtils.isDesktop(context) ? AppColor.colorBgDesktop : Colors.white, child: Container( - color: responsiveUtils.isDesktop(context) + color: controller.responsiveUtils.isDesktop(context) ? AppColor.colorBgDesktop : Colors.white, child: _buildListMailbox(context), @@ -56,9 +56,9 @@ class MailboxView extends BaseMailboxView { return Container( color: Colors.white, padding: EdgeInsetsDirectional.only( - top: responsiveUtils.isDesktop(context) ? 25 : 16, - bottom: responsiveUtils.isDesktop(context) ? 25 : 16, - start: responsiveUtils.isDesktop(context) ? 32 : 16, + top: controller.responsiveUtils.isDesktop(context) ? 25 : 16, + bottom: controller.responsiveUtils.isDesktop(context) ? 25 : 16, + start: controller.responsiveUtils.isDesktop(context) ? 32 : 16, ), child: Row(children: [ SloganBuilder( @@ -66,7 +66,7 @@ class MailboxView extends BaseMailboxView { text: AppLocalizations.of(context).app_name, textAlign: TextAlign.center, textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold), - logoSVG: imagePaths.icTMailLogo + logoSVG: controller.imagePaths.icTMailLogo ), Obx(() { if (controller.mailboxDashBoardController.appInformation.value != null) { @@ -98,9 +98,9 @@ class MailboxView extends BaseMailboxView { controller: controller.mailboxListScrollController, key: const PageStorageKey('mailbox_list'), physics: const AlwaysScrollableScrollPhysics(), - padding: EdgeInsetsDirectional.only(end: responsiveUtils.isDesktop(context) ? 16 : 0), + padding: EdgeInsetsDirectional.only(end: controller.responsiveUtils.isDesktop(context) ? 16 : 0), child: Column(children: [ - if (!responsiveUtils.isDesktop(context)) + if (!controller.responsiveUtils.isDesktop(context)) Obx(() => UserInformationWidget( userProfile: controller.mailboxDashBoardController.userProfile.value, subtitle: AppLocalizations.of(context).manage_account, @@ -113,8 +113,8 @@ class MailboxView extends BaseMailboxView { ), )), Obx(() => MailboxLoadingBarWidget(viewState: controller.viewState.value)), - AppConfig.appGridDashboardAvailable && responsiveUtils.isWebNotDesktop(context) - ? buildAppGridDashboard(context, responsiveUtils, imagePaths, controller) + AppConfig.appGridDashboardAvailable && controller.responsiveUtils.isWebNotDesktop(context) + ? buildAppGridDashboard(context, controller.responsiveUtils, controller.imagePaths, controller) : const SizedBox.shrink(), const SizedBox(height: 8), Obx(() { @@ -133,7 +133,7 @@ class MailboxView extends BaseMailboxView { const SizedBox(height: 13), Padding( padding: EdgeInsetsDirectional.only( - start: responsiveUtils.isDesktop(context) ? 0 : 12, + start: controller.responsiveUtils.isDesktop(context) ? 0 : 12, bottom: 8 ), child: Row( @@ -148,14 +148,14 @@ class MailboxView extends BaseMailboxView { ) )), Padding( - padding: EdgeInsetsDirectional.only(end: responsiveUtils.isDesktop(context) ? 0 : 12), + padding: EdgeInsetsDirectional.only(end: controller.responsiveUtils.isDesktop(context) ? 0 : 12), child: Row( children: [ buildIconWeb( minSize: 40, iconPadding: EdgeInsets.zero, icon: SvgPicture.asset( - imagePaths.icSearchBar, + controller.imagePaths.icSearchBar, colorFilter: AppColor.colorTextButton.asFilter(), fit: BoxFit.fill ), @@ -167,7 +167,7 @@ class MailboxView extends BaseMailboxView { iconPadding: EdgeInsets.zero, splashRadius: 15, icon: SvgPicture.asset( - imagePaths.icAddNewFolder, + controller.imagePaths.icAddNewFolder, colorFilter: AppColor.colorTextButton.asFilter(), fit: BoxFit.fill), tooltip: AppLocalizations.of(context).newFolder, @@ -233,8 +233,8 @@ class MailboxView extends BaseMailboxView { return Container( padding: EdgeInsets.only( - right: responsiveUtils.isDesktop(context) ? 0 : 16, - left: responsiveUtils.isDesktop(context) ? 0 : 16), + right: controller.responsiveUtils.isDesktop(context) ? 0 : 16, + left: controller.responsiveUtils.isDesktop(context) ? 0 : 16), child: TreeView( key: Key('${categories.keyValue}_mailbox_list'), children: _buildListChildTileWidget( @@ -255,8 +255,8 @@ class MailboxView extends BaseMailboxView { children: [ buildHeaderMailboxCategory( context, - responsiveUtils, - imagePaths, + controller.responsiveUtils, + controller.imagePaths, categories, controller, toggleMailboxCategories: controller.toggleMailboxCategories @@ -295,8 +295,8 @@ class MailboxView extends BaseMailboxView { onMenuActionClick: (position, mailboxNode) { openMailboxMenuActionOnWeb( context, - imagePaths, - responsiveUtils, + controller.imagePaths, + controller.responsiveUtils, position, mailboxNode.item, controller @@ -316,8 +316,8 @@ class MailboxView extends BaseMailboxView { onMenuActionClick: (position, mailboxNode) { openMailboxMenuActionOnWeb( context, - imagePaths, - responsiveUtils, + controller.imagePaths, + controller.responsiveUtils, position, mailboxNode.item, controller diff --git a/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart b/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart index ed99b0884..f6c122922 100644 --- a/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart +++ b/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart @@ -1,6 +1,4 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/views/text/text_field_builder.dart'; import 'package:core/utils/app_logger.dart'; @@ -19,8 +17,6 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class MailboxCreatorView extends GetWidget { final _maxHeight = 656.0; - final _imagePaths = Get.find(); - final _responsiveUtils = Get.find(); @override final controller = Get.find(); @@ -38,7 +34,7 @@ class MailboxCreatorView extends GetWidget { borderOnForeground: false, color: Colors.transparent, child: SafeArea( - top: PlatformInfo.isMobile && _responsiveUtils.isPortraitMobile(context), + top: PlatformInfo.isMobile && controller.responsiveUtils.isPortraitMobile(context), bottom: false, left: false, right: false, @@ -69,8 +65,8 @@ class MailboxCreatorView extends GetWidget { child: SafeArea( top: false, bottom: false, - left: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context), - right: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context), + left: PlatformInfo.isMobile && controller.responsiveUtils.isLandscapeMobile(context), + right: PlatformInfo.isMobile && controller.responsiveUtils.isLandscapeMobile(context), child: Column(children: [ _buildAppBar(context), const Divider(color: AppColor.colorDividerDestinationPicker, height: 1), @@ -148,7 +144,7 @@ class MailboxCreatorView extends GetWidget { child: Row(children: [ const SizedBox(width: 12), Obx(() => SvgPicture.asset( - controller.selectedMailbox.value?.getMailboxIcon(_imagePaths) ?? _imagePaths.icFolderMailbox, + controller.selectedMailbox.value?.getMailboxIcon(controller.imagePaths) ?? controller.imagePaths.icFolderMailbox, width: PlatformInfo.isWeb ? 20 : 24, height: PlatformInfo.isWeb ? 20 : 24, fit: BoxFit.fill)), @@ -168,7 +164,9 @@ class MailboxCreatorView extends GetWidget { IconButton( color: AppColor.primaryColor, icon: SvgPicture.asset( - DirectionUtils.isDirectionRTLByLanguage(context) ? _imagePaths.icBack : _imagePaths.icCollapseFolder, + DirectionUtils.isDirectionRTLByLanguage(context) + ? controller.imagePaths.icBack + : controller.imagePaths.icCollapseFolder, colorFilter: AppColor.colorCollapseMailbox.asFilter(), fit: BoxFit.fill), onPressed: () => controller.selectMailboxLocation(context)) @@ -180,14 +178,14 @@ class MailboxCreatorView extends GetWidget { double _getWidthView(BuildContext context) { if (PlatformInfo.isWeb) { - if (_responsiveUtils.isMobile(context)) { + if (controller.responsiveUtils.isMobile(context)) { return double.infinity; } else { return 556; } } else { - if (_responsiveUtils.isLandscapeMobile(context) || - _responsiveUtils.isPortraitMobile(context)) { + if (controller.responsiveUtils.isLandscapeMobile(context) || + controller.responsiveUtils.isPortraitMobile(context)) { return double.infinity; } else { return 556; @@ -197,21 +195,21 @@ class MailboxCreatorView extends GetWidget { double _getHeightView(BuildContext context) { if (PlatformInfo.isWeb) { - if (_responsiveUtils.isMobile(context)) { + if (controller.responsiveUtils.isMobile(context)) { return double.infinity; } else { - if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { + if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { return _maxHeight; } else { return double.infinity; } } } else { - if (_responsiveUtils.isLandscapeMobile(context) || - _responsiveUtils.isPortraitMobile(context)) { + if (controller.responsiveUtils.isLandscapeMobile(context) || + controller.responsiveUtils.isPortraitMobile(context)) { return double.infinity; } else { - if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { + if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { return _maxHeight; } else { return double.infinity; @@ -223,21 +221,21 @@ class MailboxCreatorView extends GetWidget { EdgeInsets _getMarginView(BuildContext context) { if (PlatformInfo.isWeb) { - if (_responsiveUtils.isMobile(context)) { + if (controller.responsiveUtils.isMobile(context)) { return EdgeInsets.zero; } else { - if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { + if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { return const EdgeInsets.symmetric(vertical: 12); } else { return const EdgeInsets.symmetric(vertical: 50); } } } else { - if (_responsiveUtils.isLandscapeMobile(context) || - _responsiveUtils.isPortraitMobile(context)) { + if (controller.responsiveUtils.isLandscapeMobile(context) || + controller.responsiveUtils.isPortraitMobile(context)) { return EdgeInsets.zero; } else { - if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { + if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) { return const EdgeInsets.symmetric(vertical: 12); } else { return const EdgeInsets.symmetric(vertical: 50); @@ -247,9 +245,9 @@ class MailboxCreatorView extends GetWidget { } BorderRadius _getRadiusView(BuildContext context) { - if (PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context)) { + if (PlatformInfo.isMobile && controller.responsiveUtils.isLandscapeMobile(context)) { return BorderRadius.zero; - } else if (_responsiveUtils.isMobile(context)) { + } else if (controller.responsiveUtils.isMobile(context)) { return const BorderRadius.only( topRight: Radius.circular(16), topLeft: Radius.circular(16)); diff --git a/lib/features/mailbox_dashboard/presentation/base_mailbox_dashboard_view.dart b/lib/features/mailbox_dashboard/presentation/base_mailbox_dashboard_view.dart index e38501d6e..344dd661b 100644 --- a/lib/features/mailbox_dashboard/presentation/base_mailbox_dashboard_view.dart +++ b/lib/features/mailbox_dashboard/presentation/base_mailbox_dashboard_view.dart @@ -1,5 +1,3 @@ -import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart'; @@ -11,7 +9,4 @@ abstract class BaseMailboxDashBoardView extends GetWidget(); - final imagePaths = Get.find(); } \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart index c71718a5f..0fd4b85a0 100644 --- a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart +++ b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart @@ -27,9 +27,8 @@ import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_int import 'package:tmail_ui_user/features/email/presentation/controller/email_supervisor_controller.dart'; import 'package:tmail_ui_user/features/email/presentation/controller/single_email_controller.dart'; import 'package:tmail_ui_user/features/email/presentation/bindings/email_bindings.dart'; -import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart'; -import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart'; -import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart'; +import 'package:tmail_ui_user/features/home/domain/repository/session_repository.dart'; +import 'package:tmail_ui_user/features/home/domain/usecases/store_session_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.dart'; import 'package:tmail_ui_user/features/mailbox/data/datasource/state_datasource.dart'; import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/mailbox_cache_datasource_impl.dart'; @@ -93,8 +92,6 @@ import 'package:tmail_ui_user/features/sending_queue/domain/usecases/update_send import 'package:tmail_ui_user/features/sending_queue/presentation/bindings/sending_queue_bindings.dart'; import 'package:tmail_ui_user/features/sending_queue/presentation/bindings/sending_queue_interactor_bindings.dart'; import 'package:tmail_ui_user/features/sending_queue/presentation/sending_queue_controller.dart'; -import 'package:tmail_ui_user/features/session/domain/repository/session_repository.dart'; -import 'package:tmail_ui_user/features/session/domain/usecases/store_session_interactor.dart'; import 'package:tmail_ui_user/features/thread/data/datasource/thread_datasource.dart'; import 'package:tmail_ui_user/features/thread/data/datasource_impl/local_thread_datasource_impl.dart'; import 'package:tmail_ui_user/features/thread/data/datasource_impl/thread_datasource_impl.dart'; @@ -147,8 +144,6 @@ class MailboxDashBoardBindings extends BaseBindings { Get.find())); Get.put(MailboxDashBoardController( - Get.find(), - Get.find(), Get.find(), Get.find(), Get.find(), @@ -288,7 +283,6 @@ class MailboxDashBoardBindings extends BaseBindings { Get.lazyPut(() => GetEmailByIdInteractor( Get.find(), Get.find())); - Get.lazyPut(() => UpdateAuthenticationAccountInteractor(Get.find())); Get.lazyPut(() => StoreSpamReportInteractor( Get.find())); Get.lazyPut(() => GetUnreadSpamMailboxInteractor( diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index e39becf23..0f70c2384 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -57,8 +57,7 @@ import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_int import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart'; import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart'; import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart'; -import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart'; -import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart'; +import 'package:tmail_ui_user/features/home/domain/usecases/store_session_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart'; import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read_state.dart'; import 'package:tmail_ui_user/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart'; @@ -118,7 +117,6 @@ import 'package:tmail_ui_user/features/sending_queue/domain/usecases/get_all_sen import 'package:tmail_ui_user/features/sending_queue/domain/usecases/store_sending_email_interactor.dart'; import 'package:tmail_ui_user/features/sending_queue/domain/usecases/update_sending_email_interactor.dart'; import 'package:tmail_ui_user/features/sending_queue/presentation/model/sending_email_arguments.dart'; -import 'package:tmail_ui_user/features/session/domain/usecases/store_session_interactor.dart'; import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart'; import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart'; import 'package:tmail_ui_user/features/thread/domain/state/empty_spam_folder_state.dart'; @@ -143,22 +141,17 @@ import 'package:tmail_ui_user/main/routes/navigation_router.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import 'package:tmail_ui_user/main/routes/route_utils.dart'; import 'package:tmail_ui_user/main/utils/email_receive_manager.dart'; -import 'package:uuid/uuid.dart'; import 'package:workmanager/workmanager.dart' as work_manager; class MailboxDashBoardController extends ReloadableController { - final AppToast _appToast = Get.find(); - final ImagePaths _imagePaths = Get.find(); final RemoveEmailDraftsInteractor _removeEmailDraftsInteractor = Get.find(); - final ResponsiveUtils _responsiveUtils = Get.find(); final EmailReceiveManager _emailReceiveManager = Get.find(); final search.SearchController searchController = Get.find(); final DownloadController downloadController = Get.find(); final AppGridDashboardController appGridDashboardController = Get.find(); final SpamReportController spamReportController = Get.find(); final NetworkConnectionController networkConnectionController = Get.find(); - final Uuid _uuid = Get.find(); final MoveToMailboxInteractor _moveToMailboxInteractor; final DeleteEmailPermanentlyInteractor _deleteEmailPermanentlyInteractor; @@ -237,8 +230,6 @@ class MailboxDashBoardController extends ReloadableController { final _fcmService = FcmService.instance; MailboxDashBoardController( - GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor, - UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor, this._moveToMailboxInteractor, this._deleteEmailPermanentlyInteractor, this._markAsMailboxReadInteractor, @@ -260,9 +251,6 @@ class MailboxDashBoardController extends ReloadableController { this._saveEmailAsDraftsInteractor, this._updateEmailDraftsInteractor, this._deleteSendingEmailInteractor, - ) : super( - getAuthenticatedAccountInteractor, - updateAuthenticationAccountInteractor ); @override @@ -297,10 +285,10 @@ class MailboxDashBoardController extends ReloadableController { super.handleSuccessViewState(success); if (success is SendEmailLoading) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).your_email_being_sent, - leadingSVGIcon: _imagePaths.icSendToast); + leadingSVGIcon: imagePaths.icSendToast); } } else if (success is GetEmailStateToRefreshSuccess) { dispatchEmailUIAction(RefreshChangeEmailAction(success.storedState)); @@ -607,7 +595,7 @@ class MailboxDashBoardController extends ReloadableController { } void hideMailboxMenuWhenScreenSizeChange(BuildContext context) { - if (isDrawerOpen && _responsiveUtils.isWebDesktop(context)) { + if (isDrawerOpen && responsiveUtils.isWebDesktop(context)) { WidgetsBinding.instance.addPostFrameCallback((_) { closeMailboxMenuDrawer(); }); @@ -635,7 +623,7 @@ class MailboxDashBoardController extends ReloadableController { bool _searchInsideEmailDetailedViewIsActive(BuildContext context) { return PlatformInfo.isWeb - && _responsiveUtils.isDesktop(context) + && responsiveUtils.isDesktop(context) && dashboardRoute.value == DashboardRoutes.emailDetailed; } @@ -656,16 +644,16 @@ class MailboxDashBoardController extends ReloadableController { void _saveEmailAsDraftsSuccess(SaveEmailAsDraftsSuccess success) { if (currentContext != null && currentOverlayContext != null) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).drafts_saved, actionName: AppLocalizations.of(currentContext!).discard, onActionClick: () => _discardEmail(success.emailAsDrafts), - leadingSVGIcon: _imagePaths.icMailboxDrafts, + leadingSVGIcon: imagePaths.icMailboxDrafts, leadingSVGIconColor: Colors.white, backgroundColor: AppColor.toastSuccessBackgroundColor, textColor: Colors.white, - actionIcon: SvgPicture.asset(_imagePaths.icUndo)); + actionIcon: SvgPicture.asset(imagePaths.icUndo)); } } @@ -675,7 +663,7 @@ class MailboxDashBoardController extends ReloadableController { void _moveToMailboxSuccess(MoveToMailboxSuccess success) { if (success.moveAction == MoveAction.moving && currentContext != null && currentOverlayContext != null) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, success.emailActionType.getToastMessageMoveToMailboxSuccess(currentContext!, destinationPath: success.destinationPath), actionName: AppLocalizations.of(currentContext!).undo, @@ -687,11 +675,11 @@ class MailboxDashBoardController extends ReloadableController { success.emailActionType )); }, - leadingSVGIcon: _imagePaths.icFolderMailbox, + leadingSVGIcon: imagePaths.icFolderMailbox, leadingSVGIconColor: Colors.white, backgroundColor: AppColor.toastSuccessBackgroundColor, textColor: Colors.white, - actionIcon: SvgPicture.asset(_imagePaths.icUndo)); + actionIcon: SvgPicture.asset(imagePaths.icUndo)); } } @@ -721,10 +709,10 @@ class MailboxDashBoardController extends ReloadableController { void _deleteEmailPermanentlySuccess(DeleteEmailPermanentlySuccess success) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toast_message_delete_a_email_permanently_success, - leadingSVGIcon: _imagePaths.icDeleteToast + leadingSVGIcon: imagePaths.icDeleteToast ); } } @@ -778,12 +766,12 @@ class MailboxDashBoardController extends ReloadableController { ? AppLocalizations.of(currentContext!).marked_message_toast(AppLocalizations.of(currentContext!).unread) : AppLocalizations.of(currentContext!).marked_message_toast(AppLocalizations.of(currentContext!).read); - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, message, leadingSVGIcon: readActions == ReadActions.markAsUnread - ? _imagePaths.icUnreadToast - : _imagePaths.icReadToast + ? imagePaths.icUnreadToast + : imagePaths.icReadToast ); } } @@ -806,17 +794,17 @@ class MailboxDashBoardController extends ReloadableController { final undoAction = readActions == ReadActions.markAsUnread ? ReadActions.markAsRead : ReadActions.markAsUnread; - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, message, actionName: AppLocalizations.of(currentContext!).undo, onActionClick: () { markAsEmailRead(presentationEmail!, undoAction, MarkReadAction.undo); }, - leadingSVGIcon: _imagePaths.icToastSuccessMessage, + leadingSVGIcon: imagePaths.icToastSuccessMessage, backgroundColor: AppColor.toastSuccessBackgroundColor, textColor: Colors.white, - actionIcon: SvgPicture.asset(_imagePaths.icUndo), + actionIcon: SvgPicture.asset(imagePaths.icUndo), ); } } @@ -852,12 +840,12 @@ class MailboxDashBoardController extends ReloadableController { : AppLocalizations.of(currentContext!).marked_star_multiple_item(countMarkStarSuccess); if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, message, leadingSVGIcon: markStarAction == MarkStarAction.unMarkStar - ? _imagePaths.icUnStar - : _imagePaths.icStar); + ? imagePaths.icUnStar + : imagePaths.icStar); } } } @@ -1037,7 +1025,7 @@ class MailboxDashBoardController extends ReloadableController { currentOverlayContext != null && emailActionType != null && moveAction == MoveAction.moving) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, emailActionType.getToastMessageMoveToMailboxSuccess( currentContext!, @@ -1057,10 +1045,10 @@ class MailboxDashBoardController extends ReloadableController { } }, leadingSVGIconColor: Colors.white, - leadingSVGIcon: _imagePaths.icFolderMailbox, + leadingSVGIcon: imagePaths.icFolderMailbox, backgroundColor: AppColor.toastSuccessBackgroundColor, textColor: Colors.white, - actionIcon: SvgPicture.asset(_imagePaths.icUndo), + actionIcon: SvgPicture.asset(imagePaths.icUndo), ); } } @@ -1129,7 +1117,7 @@ class MailboxDashBoardController extends ReloadableController { Function? onCancelSelectionEmail, } ) { - if (_responsiveUtils.isScreenWithShortestSide(context)) { + if (responsiveUtils.isScreenWithShortestSide(context)) { (ConfirmationDialogActionSheetBuilder(context) ..messageText(actionType.getContentDialog( context, @@ -1147,14 +1135,14 @@ class MailboxDashBoardController extends ReloadableController { showDialog( context: context, barrierColor: AppColor.colorDefaultCupertinoActionSheet, - builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(_imagePaths) + builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths) ..key(const Key('confirm_dialog_delete_emails_permanently')) ..title(actionType.getTitleDialog(context)) ..content(actionType.getContentDialog( context, count: listEmails?.length, mailboxName: mailboxCurrent?.getDisplayName(context))) - ..addIcon(SvgPicture.asset(_imagePaths.icRemoveDialog, fit: BoxFit.fill)) + ..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill)) ..colorConfirmButton(AppColor.colorConfirmActionDialog) ..styleTextConfirmButton(const TextStyle( fontSize: 17, @@ -1202,7 +1190,7 @@ class MailboxDashBoardController extends ReloadableController { void _emptyTrashFolderSuccess(EmptyTrashFolderSuccess success) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toast_message_empty_trash_folder_success); } @@ -1228,7 +1216,7 @@ class MailboxDashBoardController extends ReloadableController { } if (currentOverlayContext != null && currentContext != null && listEmailIdResult.isNotEmpty) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toast_message_delete_multiple_email_permanently_success(listEmailIdResult.length)); } @@ -1348,17 +1336,17 @@ class MailboxDashBoardController extends ReloadableController { if (success is MarkAsMailboxReadAllSuccess) { if (currentContext != null && currentOverlayContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toastMessageMarkAsMailboxReadSuccess(success.mailboxDisplayName), - leadingSVGIcon: _imagePaths.icReadToast); + leadingSVGIcon: imagePaths.icReadToast); } } else if (success is MarkAsMailboxReadHasSomeEmailFailure) { if (currentContext != null && currentOverlayContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toastMessageMarkAsMailboxReadHasSomeEmailFailure(success.mailboxDisplayName, success.countEmailsRead), - leadingSVGIcon: _imagePaths.icReadToast); + leadingSVGIcon: imagePaths.icReadToast); } } } @@ -1366,7 +1354,7 @@ class MailboxDashBoardController extends ReloadableController { void _markAsReadMailboxFailure(MarkAsMailboxReadFailure failure) { viewStateMarkAsReadMailbox.value = Right(UIState.idle); if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toastMessageMarkAsReadFolderFailureWithReason( failure.mailboxDisplayName, @@ -1379,7 +1367,7 @@ class MailboxDashBoardController extends ReloadableController { void _markAsReadMailboxAllFailure(MarkAsMailboxReadAllFailure failure) { viewStateMarkAsReadMailbox.value = Right(UIState.idle); if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toastMessageMarkAsReadFolderAllFailure(failure.mailboxDisplayName) ); @@ -1487,7 +1475,7 @@ class MailboxDashBoardController extends ReloadableController { void _handleUpdateVacationSuccess(UpdateVacationSuccess success) { if (success.listVacationResponse.isNotEmpty) { if (currentContext != null && currentOverlayContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).yourVacationResponderIsDisabledSuccessfully); } @@ -1547,7 +1535,7 @@ class MailboxDashBoardController extends ReloadableController { selectedMailbox.value!.isTrash && selectedMailbox.value!.countTotalEmails > 0 && !searchController.isSearchActive() && - _responsiveUtils.isWebDesktop(context); + responsiveUtils.isWebDesktop(context); } bool isEmptyTrashBannerEnabledOnMobile(BuildContext context) { @@ -1555,7 +1543,7 @@ class MailboxDashBoardController extends ReloadableController { selectedMailbox.value!.isTrash && selectedMailbox.value!.countTotalEmails > 0 && !searchController.isSearchActive() && - !_responsiveUtils.isWebDesktop(context); + !responsiveUtils.isWebDesktop(context); } void emptyTrashAction(BuildContext context) { @@ -1795,10 +1783,10 @@ class MailboxDashBoardController extends ReloadableController { void _showToastSendMessageFailure(String message) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, message, - leadingSVGIcon: _imagePaths.icSendSuccessToast); + leadingSVGIcon: imagePaths.icSendSuccessToast); } } @@ -1880,7 +1868,7 @@ class MailboxDashBoardController extends ReloadableController { CreateNewMailboxRequest? mailboxRequest, ) { log('MailboxDashBoardController::_handleStoreSendingEmail:'); - final sendingEmail = emailRequest.toSendingEmail(_uuid.v1(), mailboxRequest: mailboxRequest); + final sendingEmail = emailRequest.toSendingEmail(uuid.v1(), mailboxRequest: mailboxRequest); consumeState(_storeSendingEmailInteractor.execute( accountId, session.username, @@ -1920,11 +1908,11 @@ class MailboxDashBoardController extends ReloadableController { } getAllSendingEmails(); if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).messageHasBeenSavedToTheSendingQueue, leadingSVGIconColor: Colors.white, - leadingSVGIcon: _imagePaths.icEmail); + leadingSVGIcon: imagePaths.icEmail); } } @@ -1998,7 +1986,7 @@ class MailboxDashBoardController extends ReloadableController { void _emptySpamFolderSuccess(EmptySpamFolderSuccess success) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toast_message_empty_trash_folder_success); } @@ -2009,7 +1997,7 @@ class MailboxDashBoardController extends ReloadableController { selectedMailbox.value!.isSpam && selectedMailbox.value!.countTotalEmails > 0 && !searchController.isSearchActive() && - _responsiveUtils.isWebDesktop(context); + responsiveUtils.isWebDesktop(context); } bool isEmptySpamBannerEnabledOnMobile(BuildContext context) { @@ -2017,7 +2005,7 @@ class MailboxDashBoardController extends ReloadableController { selectedMailbox.value!.isSpam && selectedMailbox.value!.countTotalEmails > 0 && !searchController.isSearchActive() && - !_responsiveUtils.isWebDesktop(context); + !responsiveUtils.isWebDesktop(context); } void openDialogEmptySpamFolder(BuildContext context) { @@ -2027,7 +2015,7 @@ class MailboxDashBoardController extends ReloadableController { return; } - if (_responsiveUtils.isScreenWithShortestSide(context)) { + if (responsiveUtils.isScreenWithShortestSide(context)) { (ConfirmationDialogActionSheetBuilder(context) ..messageText(AppLocalizations.of(context).emptySpamMessageDialog) ..onCancelAction(AppLocalizations.of(context).cancel, popBack) @@ -2036,7 +2024,7 @@ class MailboxDashBoardController extends ReloadableController { if (spamMailbox.countTotalEmails > 0) { emptySpamFolderAction(spamFolderId: spamMailbox.id); } else { - _appToast.showToastWarningMessage( + appToast.showToastWarningMessage( context, AppLocalizations.of(context).noEmailInYourCurrentFolder ); @@ -2047,11 +2035,11 @@ class MailboxDashBoardController extends ReloadableController { showDialog( context: context, barrierColor: AppColor.colorDefaultCupertinoActionSheet, - builder: (context) => PointerInterceptor(child: (ConfirmDialogBuilder(_imagePaths) + builder: (context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths) ..key(const Key('confirm_dialog_empty_spam')) ..title(AppLocalizations.of(context).emptySpamFolder) ..content(AppLocalizations.of(context).emptySpamMessageDialog) - ..addIcon(SvgPicture.asset(_imagePaths.icRemoveDialog, fit: BoxFit.fill)) + ..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill)) ..colorConfirmButton(AppColor.colorConfirmActionDialog) ..styleTextConfirmButton(const TextStyle( fontSize: 17, @@ -2063,7 +2051,7 @@ class MailboxDashBoardController extends ReloadableController { if (spamMailbox.countTotalEmails > 0) { emptySpamFolderAction(spamFolderId: spamMailbox.id); } else { - _appToast.showToastWarningMessage( + appToast.showToastWarningMessage( context, AppLocalizations.of(context).noEmailInYourCurrentFolder ); @@ -2146,10 +2134,10 @@ class MailboxDashBoardController extends ReloadableController { )); } if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).message_has_been_sent_successfully, - leadingSVGIcon: _imagePaths.icSendSuccessToast + leadingSVGIcon: imagePaths.icSendSuccessToast ); } } diff --git a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view.dart b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view.dart index 9f0a33655..412190aaa 100644 --- a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view.dart +++ b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view.dart @@ -26,34 +26,34 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { width: ResponsiveUtils.defaultSizeLeftMenuMobile, child: _buildScaffoldHaveDrawer(body: ThreadView())), const VerticalDivider(color: AppColor.lineItemListColor, width: 12), - Expanded(child: EmailView()), + const Expanded(child: EmailView()), ], ); return FocusDetector( onForegroundGained: controller.handleOnForegroundGained, child: Scaffold( - drawerEnableOpenDragGesture: responsiveUtils.hasLeftMenuDrawerActive(context), + drawerEnableOpenDragGesture: controller.responsiveUtils.hasLeftMenuDrawerActive(context), body: Obx(() { var bodyView = controller.searchController.isSearchEmailRunning - ? EmailView() + ? const EmailView() : bodyLandscapeTablet; switch(controller.dashboardRoute.value) { case DashboardRoutes.thread: return ResponsiveWidget( - responsiveUtils: responsiveUtils, + responsiveUtils: controller.responsiveUtils, desktop: bodyView, tabletLarge: bodyView, landscapeTablet: bodyView, mobile: _buildScaffoldHaveDrawer(body: ThreadView())); case DashboardRoutes.emailDetailed: return ResponsiveWidget( - responsiveUtils: responsiveUtils, + responsiveUtils: controller.responsiveUtils, desktop: bodyView, tabletLarge: bodyView, landscapeTablet: bodyView, - mobile: EmailView()); + mobile: const EmailView()); case DashboardRoutes.searchEmail: return SafeArea(child: SearchEmailView()); case DashboardRoutes.sendingQueue: @@ -64,11 +64,11 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { width: ResponsiveUtils.defaultSizeLeftMenuMobile, child: _buildScaffoldHaveDrawer(body: const SendingQueueView())), const VerticalDivider(color: AppColor.lineItemListColor, width: 12), - Expanded(child: EmailView()), + const Expanded(child: EmailView()), ], ); return ResponsiveWidget( - responsiveUtils: responsiveUtils, + responsiveUtils: controller.responsiveUtils, desktop: bodyView, tabletLarge: bodyView, landscapeTablet: bodyView, @@ -81,7 +81,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { child: CupertinoActivityIndicator(color: AppColor.colorLoading))); default: return ResponsiveWidget( - responsiveUtils: responsiveUtils, + responsiveUtils: controller.responsiveUtils, desktop: bodyView, tabletLarge: bodyView, landscapeTablet: bodyView, @@ -97,7 +97,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { key: controller.scaffoldKey, body: body, drawer: ResponsiveWidget( - responsiveUtils: responsiveUtils, + responsiveUtils: controller.responsiveUtils, mobile: SizedBox( width: double.infinity, child: MailboxView() diff --git a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart index 37c05c354..14d6bdaed 100644 --- a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart +++ b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart @@ -50,7 +50,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { return Portal( child: Stack(children: [ ResponsiveWidget( - responsiveUtils: responsiveUtils, + responsiveUtils: controller.responsiveUtils, desktop: Scaffold( body: GestureDetector( onTap: () => FocusScope.of(context).unfocus(), @@ -73,7 +73,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { text: AppLocalizations.of(context).app_name, textAlign: TextAlign.center, textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold), - logoSVG: imagePaths.icTMailLogo, + logoSVG: controller.imagePaths.icTMailLogo, onTapCallback: controller.redirectToInboxAction, ), Obx(() { @@ -160,7 +160,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { case DashboardRoutes.thread: return _buildThreadViewForWebDesktop(context); case DashboardRoutes.emailDetailed: - return EmailView(); + return const EmailView(); default: return const SizedBox.shrink(); } @@ -177,7 +177,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { return SearchEmailView(); case DashboardRoutes.emailDetailed: return controller.searchController.isSearchEmailRunning - ? EmailView() + ? const EmailView() : _buildScaffoldHaveDrawer( body: Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -186,7 +186,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { width: ResponsiveUtils.defaultSizeLeftMenuMobile, child: ThreadView()), const VerticalDivider(color: AppColor.lineItemListColor, width: 12), - Expanded(child: EmailView()), + const Expanded(child: EmailView()), ], ), ); @@ -199,7 +199,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { width: ResponsiveUtils.defaultSizeLeftMenuMobile, child: ThreadView()), const VerticalDivider(color: AppColor.lineItemListColor, width: 12), - Expanded(child: EmailView()), + const Expanded(child: EmailView()), ], ), ); @@ -210,7 +210,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { case DashboardRoutes.thread: return _buildScaffoldHaveDrawer(body: ThreadView()); case DashboardRoutes.emailDetailed: - return EmailView(); + return const EmailView(); case DashboardRoutes.searchEmail: return SearchEmailView(); default: @@ -219,10 +219,10 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { }), ), Obx(() => controller.composerOverlayState.value == ComposerOverlayState.active - ? ComposerView() + ? const ComposerView() : const SizedBox.shrink() ), - Obx(() => controller.searchMailboxActivated.value == true && !responsiveUtils.isWebDesktop(context) + Obx(() => controller.searchMailboxActivated.value == true && !controller.responsiveUtils.isWebDesktop(context) ? const SearchMailboxView() : const SizedBox.shrink() ), @@ -235,7 +235,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { return Scaffold( key: controller.scaffoldKey, drawer: ResponsiveWidget( - responsiveUtils: responsiveUtils, + responsiveUtils: controller.responsiveUtils, mobile: SizedBox(width: ResponsiveUtils.defaultSizeDrawer, child: MailboxView()), tabletLarge: SizedBox(width: ResponsiveUtils.defaultSizeLeftMenuMobile, child: MailboxView()), desktop: const SizedBox.shrink() @@ -326,7 +326,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { onTap: controller.showAppDashboardAction, splashRadius: 20, icon: SvgPicture.asset( - imagePaths.icAppDashboard, + controller.imagePaths.icAppDashboard, width: 28, height: 28, fit: BoxFit.fill @@ -370,7 +370,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { (failure) { return TMailButtonWidget.fromIcon( key: const Key('refresh_mailbox_button'), - icon: imagePaths.icRefresh, + icon: controller.imagePaths.icRefresh, borderRadius: 10, iconSize: 16, onTapActionCallback: controller.refreshMailboxAction, @@ -385,7 +385,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { } else { return TMailButtonWidget.fromIcon( key: const Key('refresh_mailbox_button'), - icon: imagePaths.icRefresh, + icon: controller.imagePaths.icRefresh, borderRadius: 10, iconSize: 16, onTapActionCallback: controller.refreshMailboxAction, @@ -398,7 +398,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { TMailButtonWidget( key: const Key('select_all_emails_button'), text: AppLocalizations.of(context).select_all, - icon: imagePaths.icSelectAll, + icon: controller.imagePaths.icSelectAll, borderRadius: 10, iconSize: 16, padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8), @@ -410,7 +410,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { child: TMailButtonWidget( key: const Key('mark_as_read_emails_button'), text: AppLocalizations.of(context).mark_all_as_read, - icon: imagePaths.icSelectAll, + icon: controller.imagePaths.icSelectAll, borderRadius: 10, iconSize: 16, padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8), @@ -423,13 +423,13 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { text: controller.filterMessageOption.value == FilterMessageOption.all ? AppLocalizations.of(context).filter_messages : controller.filterMessageOption.value.getTitle(context), - icon: controller.filterMessageOption.value.getIconSelected(imagePaths), + icon: controller.filterMessageOption.value.getIconSelected(controller.imagePaths), borderRadius: 10, iconSize: 16, padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8), backgroundColor: controller.filterMessageOption.value.getBackgroundColor(), textStyle: controller.filterMessageOption.value.getTextStyle(), - trailingIcon: imagePaths.icArrowDown, + trailingIcon: controller.imagePaths.icArrowDown, onTapActionAtPositionCallback: (position) { return controller.openPopupMenuAction( context, @@ -455,19 +455,19 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { if (success is MarkAsMailboxReadLoading) { return Padding( padding: EdgeInsets.only( - top: responsiveUtils.isDesktop(context) ? 16 : 0, + top: controller.responsiveUtils.isDesktop(context) ? 16 : 0, left: 16, right: 16, - bottom: responsiveUtils.isDesktop(context) ? 0 : 16), + bottom: controller.responsiveUtils.isDesktop(context) ? 0 : 16), child: horizontalLoadingWidget); } else if (success is UpdatingMarkAsMailboxReadState) { final percent = success.countRead / success.totalUnread; return Padding( padding: EdgeInsets.only( - top: responsiveUtils.isDesktop(context) ? 16 : 0, + top: controller.responsiveUtils.isDesktop(context) ? 16 : 0, left: 16, right: 16, - bottom: responsiveUtils.isDesktop(context) ? 0 : 16), + bottom: controller.responsiveUtils.isDesktop(context) ? 0 : 16), child: horizontalPercentLoadingWidget(percent)); } return const SizedBox.shrink(); @@ -622,7 +622,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ SvgPicture.asset( - filter.getIcon(imagePaths, isFilterSelected: isFilterSelected), + filter.getIcon(controller.imagePaths, isFilterSelected: isFilterSelected), width: 16, height: 16, fit: BoxFit.fill), @@ -643,7 +643,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { ... [ const SizedBox(width: 4), SvgPicture.asset( - imagePaths.icChevronDown, + controller.imagePaths.icChevronDown, width: 16, height: 16, fit: BoxFit.fill), @@ -664,7 +664,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { padding: EdgeInsets.zero, child: PopupItemNoIconWidget( receiveTime.getTitle(context), - svgIconSelected: imagePaths.icFilterSelected, + svgIconSelected: controller.imagePaths.icFilterSelected, maxWidth: 320, isSelected: receiveTimeSelected == receiveTime, onCallbackAction: () => onCallBack?.call(receiveTime), @@ -682,7 +682,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { padding: EdgeInsets.zero, child: PopupItemNoIconWidget( sortType.getTitle(context), - svgIconSelected: imagePaths.icFilterSelected, + svgIconSelected: controller.imagePaths.icFilterSelected, maxWidth: 332, isSelected: sortOrderSelected == sortType, onCallbackAction: () => onCallBack?.call(sortType), @@ -703,7 +703,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { child: TMailButtonWidget( key: const Key('compose_email_button'), text: AppLocalizations.of(context).compose, - icon: imagePaths.icComposeWeb, + icon: controller.imagePaths.icComposeWeb, borderRadius: 10, iconSize: 24, iconColor: Colors.white, diff --git a/lib/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_form_bottom_view.dart b/lib/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_form_bottom_view.dart index f170a5607..ed2ec0262 100644 --- a/lib/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_form_bottom_view.dart +++ b/lib/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_form_bottom_view.dart @@ -21,10 +21,8 @@ class AdvancedSearchFilterFormBottomView extends GetWidget(); - return Padding( - padding: EdgeInsets.only(top: !responsiveUtils.isWebDesktop(context) ? 8 : 20), + padding: EdgeInsets.only(top: !controller.responsiveUtils.isWebDesktop(context) ? 8 : 20), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -35,7 +33,7 @@ class AdvancedSearchFilterFormBottomView extends GetWidget Key? key, }) : super(key: key); - final ImagePaths _imagePaths = Get.find(); - final ResponsiveUtils _responsiveUtils = Get.find(); - @override Widget build(BuildContext context) { return FocusTraversalGroup( @@ -102,7 +99,7 @@ class AdvancedSearchInputForm extends GetWidget const SizedBox(width: 10), buildIconWeb( icon: SvgPicture.asset( - _imagePaths.icCalendarSB, + controller.imagePaths.icCalendarSB, width: 24, height: 24, fit: BoxFit.fill), @@ -126,7 +123,7 @@ class AdvancedSearchInputForm extends GetWidget padding: EdgeInsets.zero, child: PopupItemNoIconWidget( receiveTime.getTitle(context), - svgIconSelected: _imagePaths.icFilterSelected, + svgIconSelected: controller.imagePaths.icFilterSelected, maxWidth: 320, isSelected: controller.dateFilterSelectedFormAdvancedSearch.value == receiveTime, onCallbackAction: () => controller.updateReceiveDateSearchFilter(context, receiveTime), @@ -146,7 +143,7 @@ class AdvancedSearchInputForm extends GetWidget }) { final child = [ SizedBox( - width: _responsiveUtils.isMobile(context) || _responsiveUtils.landscapeTabletSupported(context) + width: controller.responsiveUtils.isMobile(context) || controller.responsiveUtils.landscapeTabletSupported(context) ? null : 112, child: Text( advancedSearchFilterField.getTitle(context), @@ -157,7 +154,7 @@ class AdvancedSearchInputForm extends GetWidget ), ), const Padding(padding: EdgeInsets.all(4)), - if (_responsiveUtils.isMobile(context)) + if (controller.responsiveUtils.isMobile(context)) _buildTextField( isSelectFormList: isSelectFormList, onTap: onTap, @@ -168,10 +165,10 @@ class AdvancedSearchInputForm extends GetWidget advancedSearchFilterField: advancedSearchFilterField, textEditingController: textEditingController, ) - else if (_responsiveUtils.landscapeTabletSupported(context)) + else if (controller.responsiveUtils.landscapeTabletSupported(context)) if (advancedSearchFilterField == AdvancedSearchFilterField.date) Obx(() => DateDropDownButton( - _imagePaths, + controller.imagePaths, startDate: controller.startDate.value, endDate: controller.endDate.value, receiveTimeSelected: controller.dateFilterSelectedFormAdvancedSearch.value, @@ -179,7 +176,7 @@ class AdvancedSearchInputForm extends GetWidget )) else if (advancedSearchFilterField == AdvancedSearchFilterField.sortBy) Obx(() => SortByDropDownButton( - imagePaths: _imagePaths, + imagePaths: controller.imagePaths, sortOrderSelected: controller.searchController.sortOrderFiltered.value, onSortOrderSelected: controller.updateSortOrder, )) @@ -210,7 +207,7 @@ class AdvancedSearchInputForm extends GetWidget ]; return Padding( padding: const EdgeInsets.symmetric(vertical: 8), - child: _responsiveUtils.isMobile(context) || _responsiveUtils.landscapeTabletSupported(context) + child: controller.responsiveUtils.isMobile(context) || controller.responsiveUtils.landscapeTabletSupported(context) ? Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, @@ -234,7 +231,7 @@ class AdvancedSearchInputForm extends GetWidget switch (advancedSearchFilterField) { case AdvancedSearchFilterField.date: return Obx(() => DateDropDownButton( - _imagePaths, + controller.imagePaths, startDate: controller.startDate.value, endDate: controller.endDate.value, receiveTimeSelected: controller.dateFilterSelectedFormAdvancedSearch.value, @@ -242,7 +239,7 @@ class AdvancedSearchInputForm extends GetWidget )); case AdvancedSearchFilterField.sortBy: return Obx(() => SortByDropDownButton( - imagePaths: _imagePaths, + imagePaths: controller.imagePaths, sortOrderSelected: controller.searchController.sortOrderFiltered.value, onSortOrderSelected: controller.updateSortOrder, )); @@ -336,7 +333,7 @@ class AdvancedSearchInputForm extends GetWidget suffixIcon: isSelectFormList ? buildIconWeb( icon: SvgPicture.asset( - _imagePaths.icDropDown, + controller.imagePaths.icDropDown, ), ) : null, diff --git a/lib/features/mailto/presentation/mailto_url_bindings.dart b/lib/features/mailto/presentation/mailto_url_bindings.dart index 22264cf58..0d2de10fc 100644 --- a/lib/features/mailto/presentation/mailto_url_bindings.dart +++ b/lib/features/mailto/presentation/mailto_url_bindings.dart @@ -1,34 +1,10 @@ import 'package:get/get.dart'; -import 'package:tmail_ui_user/features/base/base_bindings.dart'; -import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart'; -import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart'; -import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart'; import 'package:tmail_ui_user/features/mailto/presentation/mailto_url_controller.dart'; -class MailtoUrlBindings extends BaseBindings { +class MailtoUrlBindings extends Bindings { @override - void bindingsController() { - Get.lazyPut(() => MailtoUrlController( - Get.find(), - Get.find(), - )); + void dependencies() { + Get.lazyPut(() => MailtoUrlController()); } - - @override - void bindingsDataSource() {} - - @override - void bindingsDataSourceImpl() {} - - @override - void bindingsInteractor() { - Get.lazyPut(() => UpdateAuthenticationAccountInteractor(Get.find())); - } - - @override - void bindingsRepository() {} - - @override - void bindingsRepositoryImpl() {} } \ No newline at end of file diff --git a/lib/features/mailto/presentation/mailto_url_controller.dart b/lib/features/mailto/presentation/mailto_url_controller.dart index 9953d08aa..dde78b90c 100644 --- a/lib/features/mailto/presentation/mailto_url_controller.dart +++ b/lib/features/mailto/presentation/mailto_url_controller.dart @@ -2,8 +2,6 @@ import 'package:core/utils/app_logger.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/login/domain/usecases/get_authenticated_account_interactor.dart'; -import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart'; import 'package:tmail_ui_user/features/mailto/presentation/model/mailto_arguments.dart'; import 'package:tmail_ui_user/main/routes/app_routes.dart'; import 'package:tmail_ui_user/main/routes/navigation_router.dart'; @@ -12,14 +10,6 @@ import 'package:tmail_ui_user/main/routes/route_utils.dart'; class MailtoUrlController extends ReloadableController { - MailtoUrlController( - GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor, - UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor, - ) : super( - getAuthenticatedAccountInteractor, - updateAuthenticationAccountInteractor - ); - @override void onReady() { super.onReady(); diff --git a/lib/features/manage_account/presentation/email_rules/email_rules_controller.dart b/lib/features/manage_account/presentation/email_rules/email_rules_controller.dart index 9af571c8a..4911e5b63 100644 --- a/lib/features/manage_account/presentation/email_rules/email_rules_controller.dart +++ b/lib/features/manage_account/presentation/email_rules/email_rules_controller.dart @@ -1,8 +1,5 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/utils/app_toast.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/bottom_popup/confirmation_dialog_action_sheet_builder.dart'; import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart'; import 'package:core/utils/app_logger.dart'; @@ -42,9 +39,6 @@ class EmailRulesController extends BaseController { EditEmailRuleFilterInteractor? _editEmailRuleFilterInteractor; final _accountDashBoardController = Get.find(); - final _imagePaths = Get.find(); - final _appToast = Get.find(); - final _responsiveUtils = Get.find(); final listEmailRule = [].obs; @@ -111,7 +105,7 @@ class EmailRulesController extends BaseController { void _createNewRuleFilterSuccess(CreateNewRuleFilterSuccess success) { if (success.newListRules.isNotEmpty == true) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).newFilterWasCreated); } @@ -152,7 +146,7 @@ class EmailRulesController extends BaseController { void _editEmailRuleFilterSuccess(EditEmailRuleFilterSuccess success) { if (success.listRulesUpdated.isNotEmpty == true) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).yourFilterHasBeenUpdated); } @@ -162,7 +156,7 @@ class EmailRulesController extends BaseController { } void deleteEmailRule(BuildContext context, TMailRule emailRule) { - if (_responsiveUtils.isMobile(context)) { + if (responsiveUtils.isMobile(context)) { (ConfirmationDialogActionSheetBuilder(context) ..messageText(AppLocalizations.of(context).messageConfirmationDialogDeleteEmailRule(emailRule.name)) ..onCancelAction(AppLocalizations.of(context).cancel, () => @@ -176,10 +170,10 @@ class EmailRulesController extends BaseController { context: context, barrierColor: AppColor.colorDefaultCupertinoActionSheet, builder: (BuildContext context) => - PointerInterceptor(child: (ConfirmDialogBuilder(_imagePaths) + PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths) ..title(AppLocalizations.of(context).deleteEmailRule) ..content(AppLocalizations.of(context).messageConfirmationDialogDeleteEmailRule(emailRule.name)) - ..addIcon(SvgPicture.asset(_imagePaths.icRemoveDialog, + ..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill)) ..marginIcon(EdgeInsets.zero) ..colorConfirmButton(AppColor.colorConfirmActionDialog) @@ -236,7 +230,7 @@ class EmailRulesController extends BaseController { void _handleDeleteEmailRuleSuccess(DeleteEmailRuleSuccess success) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toastMessageDeleteEmailRuleSuccessfully); } @@ -267,7 +261,7 @@ class EmailRulesController extends BaseController { return (EmailRuleBottomSheetActionTileBuilder( const Key('delete_emailRule_action'), SvgPicture.asset( - _imagePaths.icDeleteComposer, + imagePaths.icDeleteComposer, colorFilter: AppColor.colorActionDeleteConfirmDialog.asFilter()), AppLocalizations.of(context).deleteRule, rule, @@ -284,7 +278,7 @@ class EmailRulesController extends BaseController { Widget _editEmailRuleActionTile(BuildContext context, TMailRule rule) { return (EmailRuleBottomSheetActionTileBuilder( const Key('edit_emailRule_action'), - SvgPicture.asset(_imagePaths.icEdit), + SvgPicture.asset(imagePaths.icEdit), AppLocalizations.of(context).editRule, rule, iconLeftPadding: const EdgeInsets.only(left: 12, right: 16), diff --git a/lib/features/manage_account/presentation/email_rules/email_rules_view.dart b/lib/features/manage_account/presentation/email_rules/email_rules_view.dart index 39f074bd2..d79550d68 100644 --- a/lib/features/manage_account/presentation/email_rules/email_rules_view.dart +++ b/lib/features/manage_account/presentation/email_rules/email_rules_view.dart @@ -8,31 +8,29 @@ import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/w import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings_utils.dart'; class EmailRulesView extends GetWidget with AppLoaderMixin { - final _responsiveUtils = Get.find(); - final _imagePaths = Get.find(); EmailRulesView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( - backgroundColor: _responsiveUtils.isWebDesktop(context) + backgroundColor: controller.responsiveUtils.isWebDesktop(context) ? AppColor.colorBgDesktop : Colors.white, body: Container( width: double.infinity, - margin: SettingsUtils.getMarginViewForSettingDetails(context, _responsiveUtils), + margin: SettingsUtils.getMarginViewForSettingDetails(context, controller.responsiveUtils), child: SingleChildScrollView( physics: const ClampingScrollPhysics(), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ EmailRulesHeaderWidget( - imagePaths: _imagePaths, - responsiveUtils: _responsiveUtils, + imagePaths: controller.imagePaths, + responsiveUtils: controller.responsiveUtils, createRule: () => controller.goToCreateNewRule(context), ), - SizedBox(height: _responsiveUtils.isWebDesktop(context) ? 24 : 16), + SizedBox(height: controller.responsiveUtils.isWebDesktop(context) ? 24 : 16), _buildLoadingView(), const ListEmailRulesWidget() ], diff --git a/lib/features/manage_account/presentation/forward/forward_controller.dart b/lib/features/manage_account/presentation/forward/forward_controller.dart index 5f6bea7d9..c24b5d9f2 100644 --- a/lib/features/manage_account/presentation/forward/forward_controller.dart +++ b/lib/features/manage_account/presentation/forward/forward_controller.dart @@ -1,8 +1,6 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/keyboard_utils.dart'; import 'package:core/utils/app_logger.dart'; import 'package:flutter/material.dart'; @@ -41,8 +39,6 @@ class ForwardController extends BaseController { EditLocalCopyInForwardingInteractor? _editLocalCopyInForwardingInteractor; final accountDashBoardController = Get.find(); - final _imagePaths = Get.find(); - final _appToast = Get.find(); final selectionMode = Rx(SelectMode.INACTIVE); final listRecipientForward = RxList(); @@ -120,7 +116,7 @@ class ForwardController extends BaseController { AppLocalizations.of(context).remove, onConfirmAction: () => _handleDeleteRecipientAction({emailAddress}), showAsBottomSheet: true, - icon: SvgPicture.asset(_imagePaths.icDeleteDialogRecipients, fit: BoxFit.fill), + icon: SvgPicture.asset(imagePaths.icDeleteDialogRecipients, fit: BoxFit.fill), titleStyle: const TextStyle( fontSize: 20, fontWeight: FontWeight.w600, @@ -153,7 +149,7 @@ class ForwardController extends BaseController { void _handleDeleteRecipientSuccess(DeleteRecipientInForwardingSuccess success) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toastMessageDeleteRecipientSuccessfully); } @@ -205,7 +201,7 @@ class ForwardController extends BaseController { AppLocalizations.of(currentContext!).remove, onConfirmAction: () => _handleDeleteRecipientAction(listEmailAddress), showAsBottomSheet: true, - icon: SvgPicture.asset(_imagePaths.icDeleteDialogRecipients, fit: BoxFit.fill), + icon: SvgPicture.asset(imagePaths.icDeleteDialogRecipients, fit: BoxFit.fill), titleStyle: const TextStyle( fontSize: 20, fontWeight: FontWeight.w600, @@ -255,7 +251,7 @@ class ForwardController extends BaseController { void _handleAddRecipientsSuccess(AddRecipientsInForwardingSuccess success) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toastMessageAddRecipientsSuccessfully); } @@ -281,7 +277,7 @@ class ForwardController extends BaseController { void _handleEditLocalCopySuccess(EditLocalCopyInForwardingSuccess success) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, success.forward.localCopy ? AppLocalizations.of(currentContext!).toastMessageLocalCopyEnable @@ -306,11 +302,11 @@ class ForwardController extends BaseController { void handleExceptionCallback(BuildContext context, bool isListEmailEmpty) { if (isListEmailEmpty) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( context, AppLocalizations.of(context).emptyListEmailForward); } else { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( context, AppLocalizations.of(context).incorrectEmailFormat); } diff --git a/lib/features/manage_account/presentation/forward/forward_view.dart b/lib/features/manage_account/presentation/forward/forward_view.dart index 4b18f1245..35509171c 100644 --- a/lib/features/manage_account/presentation/forward/forward_view.dart +++ b/lib/features/manage_account/presentation/forward/forward_view.dart @@ -1,7 +1,5 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/style_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -15,33 +13,31 @@ import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class ForwardView extends GetWidget with AppLoaderMixin { - final _responsiveUtils = Get.find(); - final _imagePaths = Get.find(); ForwardView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( - backgroundColor: SettingsUtils.getBackgroundColor(context, _responsiveUtils), + backgroundColor: SettingsUtils.getBackgroundColor(context, controller.responsiveUtils), body: Container( width: double.infinity, height: double.infinity, - color: SettingsUtils.getContentBackgroundColor(context, _responsiveUtils), - decoration: SettingsUtils.getBoxDecorationForContent(context, _responsiveUtils), - margin: SettingsUtils.getMarginViewForForwardSettingDetails(context, _responsiveUtils), + color: SettingsUtils.getContentBackgroundColor(context, controller.responsiveUtils), + decoration: SettingsUtils.getBoxDecorationForContent(context, controller.responsiveUtils), + margin: SettingsUtils.getMarginViewForForwardSettingDetails(context, controller.responsiveUtils), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (_responsiveUtils.isWebDesktop(context)) + if (controller.responsiveUtils.isWebDesktop(context)) ...[ - ForwardHeaderWidget(imagePaths: _imagePaths, responsiveUtils: _responsiveUtils), + ForwardHeaderWidget(imagePaths: controller.imagePaths, responsiveUtils: controller.responsiveUtils), const Divider(height: 1, color: AppColor.colorDividerHeaderSetting) ], Expanded(child: SingleChildScrollView( physics: const ClampingScrollPhysics(), child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (!_responsiveUtils.isWebDesktop(context)) + if (!controller.responsiveUtils.isWebDesktop(context)) _buildTitleHeader(context), _buildKeepLocalSwitchButton(context), Obx(() => controller.currentForward.value != null @@ -51,7 +47,7 @@ class ForwardView extends GetWidget with AppLoaderMixin { _buildLoadingView(), Obx(() { if (controller.listRecipientForward.isNotEmpty) { - return ListEmailForwardsWidget(); + return const ListEmailForwardsWidget(); } else { return const SizedBox.shrink(); } @@ -68,7 +64,7 @@ class ForwardView extends GetWidget with AppLoaderMixin { return Container( color: Colors.transparent, width: double.infinity, - padding: SettingsUtils.getPaddingTitleHeaderForwarding(context, _responsiveUtils), + padding: SettingsUtils.getPaddingTitleHeaderForwarding(context, controller.responsiveUtils), child: Text( AppLocalizations.of(context).forwardingSettingExplanation, style: const TextStyle( @@ -85,7 +81,7 @@ class ForwardView extends GetWidget with AppLoaderMixin { return controller.listRecipientForward.isNotEmpty ? Container( color: Colors.transparent, - padding: SettingsUtils.getPaddingKeepLocalSwitchButtonForwarding(context, _responsiveUtils), + padding: SettingsUtils.getPaddingKeepLocalSwitchButtonForwarding(context, controller.responsiveUtils), child: Row(children: [ Padding( padding: const EdgeInsets.only(right: 16), @@ -93,8 +89,8 @@ class ForwardView extends GetWidget with AppLoaderMixin { onTap: controller.handleEditLocalCopy, child: SvgPicture.asset( controller.currentForwardLocalCopyState - ? _imagePaths.icSwitchOn - : _imagePaths.icSwitchOff, + ? controller.imagePaths.icSwitchOn + : controller.imagePaths.icSwitchOff, fit: BoxFit.fill, width: 36, height: 24))), diff --git a/lib/features/manage_account/presentation/forward/widgets/list_email_forward_widget.dart b/lib/features/manage_account/presentation/forward/widgets/list_email_forward_widget.dart index fd1dbbe86..99e05b52f 100644 --- a/lib/features/manage_account/presentation/forward/widgets/list_email_forward_widget.dart +++ b/lib/features/manage_account/presentation/forward/widgets/list_email_forward_widget.dart @@ -1,6 +1,4 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -15,16 +13,13 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class ListEmailForwardsWidget extends GetWidget { - final _imagePaths = Get.find(); - final _responsiveUtils = Get.find(); - - ListEmailForwardsWidget({Key? key}) : super(key: key); + const ListEmailForwardsWidget({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Container( color: Colors.transparent, - padding: SettingsUtils.getPaddingListRecipientForwarding(context, _responsiveUtils), + padding: SettingsUtils.getPaddingListRecipientForwarding(context, controller.responsiveUtils), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, @@ -106,7 +101,7 @@ class ListEmailForwardsWidget extends GetWidget { children: [ buildIconWeb( icon: SvgPicture.asset( - _imagePaths.icClose, + controller.imagePaths.icClose, colorFilter: AppColor.colorTextButton.asFilter(), fit: BoxFit.fill), tooltip: AppLocalizations.of(context).cancel, diff --git a/lib/features/manage_account/presentation/language_and_region/language_and_region_view.dart b/lib/features/manage_account/presentation/language_and_region/language_and_region_view.dart index 20fdcfd1a..8bc230254 100644 --- a/lib/features/manage_account/presentation/language_and_region/language_and_region_view.dart +++ b/lib/features/manage_account/presentation/language_and_region/language_and_region_view.dart @@ -1,6 +1,5 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_portal/flutter_portal.dart'; import 'package:get/get.dart'; @@ -12,24 +11,22 @@ import 'package:tmail_ui_user/main/utils/app_utils.dart'; class LanguageAndRegionView extends GetWidget { - final _responsiveUtils = Get.find(); - - LanguageAndRegionView({Key? key}) : super(key: key); + const LanguageAndRegionView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Portal( child: Scaffold( - backgroundColor: _responsiveUtils.isWebDesktop(context) + backgroundColor: controller.responsiveUtils.isWebDesktop(context) ? AppColor.colorBgDesktop : Colors.white, body: Container( width: double.infinity, - margin: _responsiveUtils.isWebDesktop(context) + margin: controller.responsiveUtils.isWebDesktop(context) ? const EdgeInsets.all(24) - : EdgeInsets.symmetric(horizontal: SettingsUtils.getHorizontalPadding(context, _responsiveUtils)), - color: _responsiveUtils.isWebDesktop(context) ? null : Colors.white, - decoration: _responsiveUtils.isWebDesktop(context) + : EdgeInsets.symmetric(horizontal: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils)), + color: controller.responsiveUtils.isWebDesktop(context) ? null : Colors.white, + decoration: controller.responsiveUtils.isWebDesktop(context) ? BoxDecoration( borderRadius: BorderRadius.circular(20), border: Border.all(color: AppColor.colorBorderBodyThread, width: 1), @@ -37,15 +34,15 @@ class LanguageAndRegionView extends GetWidget { : null, child: ClipRRect( borderRadius: BorderRadius.circular( - _responsiveUtils.isWebDesktop(context) ? 20 : 0), + controller.responsiveUtils.isWebDesktop(context) ? 20 : 0), child: Padding( padding: EdgeInsets.only( right: AppUtils.isDirectionRTL(context) - ? _responsiveUtils.isWebDesktop(context) ? 24 : 0 + ? controller.responsiveUtils.isWebDesktop(context) ? 24 : 0 : 0, left: AppUtils.isDirectionRTL(context) ? 0 - : _responsiveUtils.isWebDesktop(context) ? 24 : 0, + : controller.responsiveUtils.isWebDesktop(context) ? 24 : 0, top: 24 ), child: Column( diff --git a/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart b/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart index 3c4e654ab..ceb7b0669 100644 --- a/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart +++ b/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart @@ -1,7 +1,5 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/utils/app_logger.dart'; import 'package:dartz/dartz.dart'; import 'package:flutter/material.dart'; @@ -40,8 +38,6 @@ class MailboxVisibilityController extends BaseMailboxController { SubscribeMailboxInteractor? _subscribeMailboxInteractor; SubscribeMultipleMailboxInteractor? _subscribeMultipleMailboxInteractor; final _accountDashBoardController = Get.find(); - final _appToast = Get.find(); - final _imagePaths = Get.find(); final mailboxListScrollController = ScrollController(); MailboxVisibilityController( @@ -221,7 +217,7 @@ class MailboxVisibilityController extends BaseMailboxController { {List? listDescendantMailboxIds} ) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toastMsgHideFolderSuccess, actionName: AppLocalizations.of(currentContext!).undo, @@ -233,10 +229,10 @@ class MailboxVisibilityController extends BaseMailboxController { ) ), leadingSVGIconColor: Colors.white, - leadingSVGIcon: _imagePaths.icFolderMailbox, + leadingSVGIcon: imagePaths.icFolderMailbox, backgroundColor: AppColor.toastSuccessBackgroundColor, textColor: Colors.white, - actionIcon: SvgPicture.asset(_imagePaths.icUndo), + actionIcon: SvgPicture.asset(imagePaths.icUndo), ); } } diff --git a/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_view.dart b/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_view.dart index b536af0ea..25490c5dd 100644 --- a/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_view.dart +++ b/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_view.dart @@ -1,7 +1,5 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/list/tree_view.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -21,19 +19,16 @@ class MailboxVisibilityView extends GetWidget with AppLoaderMixin, MailboxWidgetMixin { - final _responsiveUtils = Get.find(); - final _imagePaths = Get.find(); - MailboxVisibilityView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return SettingDetailViewBuilder( - responsiveUtils: _responsiveUtils, + responsiveUtils: controller.responsiveUtils, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (_responsiveUtils.isWebDesktop(context)) + if (controller.responsiveUtils.isWebDesktop(context)) ...[ const SizedBox(height: 24), const MailboxVisibilityHeaderWidget(), @@ -46,7 +41,7 @@ class MailboxVisibilityView extends GetWidget ], _buildLoadingView(), Expanded(child: Padding( - padding: MailboxVisibilityUtils.getPaddingListView(context, _responsiveUtils), + padding: MailboxVisibilityUtils.getPaddingListView(context, controller.responsiveUtils), child: _buildListMailbox(context) )) ] @@ -100,8 +95,8 @@ class MailboxVisibilityView extends GetWidget return Column(children: [ buildHeaderMailboxCategory( context, - _responsiveUtils, - _imagePaths, + controller.responsiveUtils, + controller.imagePaths, categories, controller, padding: const EdgeInsets.all(8), @@ -139,7 +134,7 @@ class MailboxVisibilityView extends GetWidget isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND, paddingChild: const EdgeInsetsDirectional.only(start: 10), parent: MailBoxVisibilityFolderTileBuilder( - _imagePaths, + controller.imagePaths, mailboxNode, onClickExpandMailboxNodeAction: (mailboxNode) { controller.toggleMailboxFolder(mailboxNode, controller.mailboxListScrollController); @@ -148,7 +143,7 @@ class MailboxVisibilityView extends GetWidget ), children: _buildListChildTileWidget(context, mailboxNode)).build() : MailBoxVisibilityFolderTileBuilder( - _imagePaths, + controller.imagePaths, mailboxNode, onClickExpandMailboxNodeAction: (mailboxNode) { controller.toggleMailboxFolder(mailboxNode, controller.mailboxListScrollController); diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart b/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart index 4824aeab0..a964d8324 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart @@ -1,8 +1,5 @@ import 'package:get/get.dart'; import 'package:tmail_ui_user/features/base/base_bindings.dart'; -import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart'; -import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart'; -import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/data/datasource/manage_account_datasource.dart'; import 'package:tmail_ui_user/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart'; import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart'; @@ -26,10 +23,7 @@ class ManageAccountDashBoardBindings extends BaseBindings { @override void bindingsController() { - Get.put(ManageAccountDashBoardController( - Get.find(), - Get.find() - )); + Get.put(ManageAccountDashBoardController()); } @override @@ -45,9 +39,7 @@ class ManageAccountDashBoardBindings extends BaseBindings { } @override - void bindingsInteractor() { - Get.lazyPut(() => UpdateAuthenticationAccountInteractor(Get.find())); - } + void bindingsInteractor() {} @override void bindingsRepository() { diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart index d2fc46980..4ea243a37 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart @@ -1,6 +1,5 @@ import 'package:core/core.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:forward/forward/capability_forward.dart'; import 'package:get/get.dart'; @@ -13,8 +12,6 @@ import 'package:package_info_plus/package_info_plus.dart'; import 'package:rule_filter/rule_filter/capability_rule_filter.dart'; import 'package:tmail_ui_user/features/base/action/ui_action.dart'; import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart'; -import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart'; -import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_user_profile_state.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_vacation_state.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/update_vacation_state.dart'; @@ -40,9 +37,6 @@ import 'package:tmail_ui_user/main/routes/route_utils.dart'; class ManageAccountDashBoardController extends ReloadableController { - final _appToast = Get.find(); - final _responsiveUtils = Get.find(); - GetAllVacationInteractor? _getAllVacationInteractor; UpdateVacationInteractor? _updateVacationInteractor; @@ -56,14 +50,6 @@ class ManageAccountDashBoardController extends ReloadableController { Session? sessionCurrent; - ManageAccountDashBoardController( - GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor, - UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor - ) : super( - getAuthenticatedAccountInteractor, - updateAuthenticationAccountInteractor - ); - @override void onReady() { _initialPageLevel(); @@ -74,7 +60,6 @@ class ManageAccountDashBoardController extends ReloadableController { @override void handleSuccessViewState(Success success) { - super.handleSuccessViewState(success); if (success is GetUserProfileSuccess) { userProfile.value = success.userProfile; } else if (success is GetAllVacationSuccess) { @@ -83,13 +68,15 @@ class ManageAccountDashBoardController extends ReloadableController { } } else if (success is UpdateVacationSuccess) { _handleUpdateVacationSuccess(success); + } else { + super.handleSuccessViewState(success); } } @override void handleReloaded(Session session) { sessionCurrent = session; - accountId.value = session.accounts.keys.first; + accountId.value = session.personalAccount.accountId; _getUserProfile(); _bindingInteractorForMenuItemView(sessionCurrent, accountId.value); _getVacationResponse(); @@ -100,22 +87,20 @@ class ManageAccountDashBoardController extends ReloadableController { log('ManageAccountDashBoardController::_getArguments(): $arguments'); if (arguments is ManageAccountArguments) { sessionCurrent = arguments.session; - accountId.value = arguments.session?.accounts.keys.first; + accountId.value = arguments.session?.personalAccount.accountId; _getUserProfile(); _bindingInteractorForMenuItemView(sessionCurrent, accountId.value); _getVacationResponse(); if (arguments.menuSettingCurrent != null) { _goToSettingMenuCurrent(arguments.menuSettingCurrent!); } - } else { - if (kIsWeb) { - reload(); - } + } else if (PlatformInfo.isWeb) { + reload(); } } void _initialPageLevel() { - if (currentContext != null && _responsiveUtils.isWebDesktop(currentContext!)) { + if (currentContext != null && responsiveUtils.isWebDesktop(currentContext!)) { settingsPageLevel.value = SettingsPageLevel.level1; } else { settingsPageLevel.value = SettingsPageLevel.universal; @@ -261,7 +246,7 @@ class ManageAccountDashBoardController extends ReloadableController { void _handleUpdateVacationSuccess(UpdateVacationSuccess success) { if (success.listVacationResponse.isNotEmpty) { if (currentContext != null && currentOverlayContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).yourVacationResponderIsDisabledSuccessfully); } diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_view.dart b/lib/features/manage_account/presentation/manage_account_dashboard_view.dart index 6b552547c..b66dba9c6 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_view.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_view.dart @@ -1,6 +1,5 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/image/avatar_builder.dart'; import 'package:core/presentation/views/responsive/responsive_widget.dart'; @@ -28,9 +27,6 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart'; class ManageAccountDashBoardView extends GetWidget with UserSettingPopupMenuMixin { - final _responsiveUtils = Get.find(); - final _imagePaths = Get.find(); - ManageAccountDashBoardView({Key? key}) : super(key: key); @override @@ -43,7 +39,7 @@ class ManageAccountDashBoardView extends GetWidget FocusScope.of(context).unfocus(), child: ResponsiveWidget( - responsiveUtils: _responsiveUtils, + responsiveUtils: controller.responsiveUtils, desktop: Column(children: [ Row(children: [ Container(width: 256, color: Colors.white, @@ -54,7 +50,7 @@ class ManageAccountDashBoardView extends GetWidget controller.backToMailboxDashBoard(context), ), Obx(() { @@ -78,7 +74,10 @@ class ManageAccountDashBoardView extends GetWidget(); - final _responsiveUtils = Get.find(); + final responsiveUtils = Get.find(); + final imagePaths = Get.find(); final listAccountMenuItem = RxList([ AccountMenuItem.profiles, @@ -46,7 +48,7 @@ class ManageAccountMenuController extends GetxController { listAccountMenuItem.value = newListMenuSetting; if (listAccountMenuItem.isNotEmpty) { - if (currentContext != null && _responsiveUtils.isWebDesktop(currentContext!)) { + if (currentContext != null && responsiveUtils.isWebDesktop(currentContext!)) { selectAccountMenuItem(listAccountMenuItem.first); } else { selectAccountMenuItem(AccountMenuItem.none); diff --git a/lib/features/manage_account/presentation/menu/manage_account_menu_view.dart b/lib/features/manage_account/presentation/menu/manage_account_menu_view.dart index c94b0c887..1ed326041 100644 --- a/lib/features/manage_account/presentation/menu/manage_account_menu_view.dart +++ b/lib/features/manage_account/presentation/menu/manage_account_menu_view.dart @@ -10,21 +10,18 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class ManageAccountMenuView extends GetWidget { - final _responsiveUtils = Get.find(); - final _imagePaths = Get.find(); - - ManageAccountMenuView({Key? key}) : super(key: key); + const ManageAccountMenuView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Drawer( - elevation: _responsiveUtils.isDesktop(context) ? 0 : 16.0, + elevation: controller.responsiveUtils.isDesktop(context) ? 0 : 16.0, child: Scaffold( backgroundColor: Colors.white, body: SafeArea(right: false, bottom: false, child: Column( children: [ - if (!_responsiveUtils.isWebDesktop(context)) + if (!controller.responsiveUtils.isWebDesktop(context)) Container( color: Colors.white, padding: const EdgeInsets.only(top: 16, bottom: 16, left: 16), @@ -34,7 +31,7 @@ class ManageAccountMenuView extends GetWidget { text: AppLocalizations.of(context).app_name, textAlign: TextAlign.center, textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold), - logoSVG: _imagePaths.icTMailLogo + logoSVG: controller.imagePaths.icTMailLogo ), Obx(() { if (controller.dashBoardController.appInformation.value != null) { @@ -52,10 +49,10 @@ class ManageAccountMenuView extends GetWidget { }), ]) ), - if (!_responsiveUtils.isWebDesktop(context)) + if (!controller.responsiveUtils.isWebDesktop(context)) const Divider(color: AppColor.colorDividerMailbox, height: 1), Expanded(child: Container( - color: _responsiveUtils.isWebDesktop(context) ? AppColor.colorBgDesktop : Colors.white, + color: controller.responsiveUtils.isWebDesktop(context) ? AppColor.colorBgDesktop : Colors.white, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -65,8 +62,8 @@ class ManageAccountMenuView extends GetWidget { key: const Key('back_to_dashboard_button'), text: AppLocalizations.of(context).back, icon: DirectionUtils.isDirectionRTLByLanguage(context) - ? _imagePaths.icArrowRight - : _imagePaths.icBack, + ? controller.imagePaths.icArrowRight + : controller.imagePaths.icBack, borderRadius: 10, backgroundColor: AppColor.colorBgMailboxSelected, iconColor: AppColor.colorTextButton, @@ -133,7 +130,7 @@ class ManageAccountMenuView extends GetWidget { child: Padding( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), child: Row(children: [ - SvgPicture.asset(_imagePaths.icSignOut, fit: BoxFit.fill), + SvgPicture.asset(controller.imagePaths.icSignOut, fit: BoxFit.fill), const SizedBox(width: 12), Expanded(child: Text( AppLocalizations.of(context).sign_out, diff --git a/lib/features/manage_account/presentation/menu/settings/settings_controller.dart b/lib/features/manage_account/presentation/menu/settings/settings_controller.dart index 0c602b495..0aab462b4 100644 --- a/lib/features/manage_account/presentation/menu/settings/settings_controller.dart +++ b/lib/features/manage_account/presentation/menu/settings/settings_controller.dart @@ -1,3 +1,5 @@ +import 'package:core/presentation/resources/image_paths.dart'; +import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/utils/app_logger.dart'; import 'package:get/get.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart'; @@ -6,6 +8,8 @@ import 'package:tmail_ui_user/features/manage_account/presentation/model/setting class SettingsController extends GetxController { final manageAccountDashboardController = Get.find(); + final responsiveUtils = Get.find(); + final imagePaths = Get.find(); void selectSettings(AccountMenuItem accountMenuItem) { log('SettingsController::selectSettings(): $accountMenuItem'); diff --git a/lib/features/manage_account/presentation/menu/settings/settings_first_level_view.dart b/lib/features/manage_account/presentation/menu/settings/settings_first_level_view.dart index 32f258944..1fc143591 100644 --- a/lib/features/manage_account/presentation/menu/settings/settings_first_level_view.dart +++ b/lib/features/manage_account/presentation/menu/settings/settings_first_level_view.dart @@ -1,6 +1,4 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget.dart'; @@ -11,10 +9,7 @@ import 'package:tmail_ui_user/features/manage_account/presentation/model/account import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class SettingsFirstLevelView extends GetWidget { - SettingsFirstLevelView({Key? key}) : super(key: key); - - final _responsiveUtils = Get.find(); - final _imagePaths = Get.find(); + const SettingsFirstLevelView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -22,40 +17,40 @@ class SettingsFirstLevelView extends GetWidget { child: Column(children: [ Obx(() => UserInformationWidget( userProfile: controller.manageAccountDashboardController.userProfile.value, - padding: SettingsUtils.getPaddingInFirstLevel(context, _responsiveUtils), + padding: SettingsUtils.getPaddingInFirstLevel(context, controller.responsiveUtils), titlePadding: const EdgeInsetsDirectional.only(start: 16))), Divider( color: AppColor.colorDividerComposer, height: 1, - indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils), - endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils) + indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils), + endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils) ), SettingFirstLevelTileBuilder( AppLocalizations.of(context).profiles, - AccountMenuItem.profiles.getIcon(_imagePaths), + AccountMenuItem.profiles.getIcon(controller.imagePaths), subtitle: AppLocalizations.of(context).profilesSettingExplanation, () => controller.selectSettings(AccountMenuItem.profiles) ), Divider( color: AppColor.colorDividerComposer, height: 1, - indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils), - endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils) + indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils), + endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils) ), Obx(() { if (controller.manageAccountDashboardController.isRuleFilterCapabilitySupported) { return Column(children: [ SettingFirstLevelTileBuilder( AccountMenuItem.emailRules.getName(context), - AccountMenuItem.emailRules.getIcon(_imagePaths), + AccountMenuItem.emailRules.getIcon(controller.imagePaths), subtitle: AppLocalizations.of(context).emailRuleSettingExplanation, () => controller.selectSettings(AccountMenuItem.emailRules) ), Divider( color: AppColor.colorDividerComposer, height: 1, - indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils), - endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils) + indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils), + endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils) ), ]); } else { @@ -67,15 +62,15 @@ class SettingsFirstLevelView extends GetWidget { return Column(children: [ SettingFirstLevelTileBuilder( AccountMenuItem.forward.getName(context), - AccountMenuItem.forward.getIcon(_imagePaths), + AccountMenuItem.forward.getIcon(controller.imagePaths), subtitle: AppLocalizations.of(context).forwardingSettingExplanation, () => controller.selectSettings(AccountMenuItem.forward) ), Divider( color: AppColor.colorDividerComposer, height: 1, - indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils), - endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils) + indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils), + endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils) ), ]); } else { @@ -87,15 +82,15 @@ class SettingsFirstLevelView extends GetWidget { return Column(children: [ SettingFirstLevelTileBuilder( AccountMenuItem.vacation.getName(context), - AccountMenuItem.vacation.getIcon(_imagePaths), + AccountMenuItem.vacation.getIcon(controller.imagePaths), subtitle: AppLocalizations.of(context).vacationSettingExplanation, () => controller.selectSettings(AccountMenuItem.vacation) ), Divider( color: AppColor.colorDividerComposer, height: 1, - indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils), - endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils) + indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils), + endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils) ), ]); } else { @@ -105,31 +100,31 @@ class SettingsFirstLevelView extends GetWidget { Column(children: [ SettingFirstLevelTileBuilder( AccountMenuItem.mailboxVisibility.getName(context), - AccountMenuItem.mailboxVisibility.getIcon(_imagePaths), + AccountMenuItem.mailboxVisibility.getIcon(controller.imagePaths), subtitle: AppLocalizations.of(context).folderVisibilitySubtitle, () => controller.selectSettings(AccountMenuItem.mailboxVisibility) ), Divider( color: AppColor.colorDividerComposer, height: 1, - indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils), - endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils) + indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils), + endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils) ), ]), SettingFirstLevelTileBuilder( AccountMenuItem.languageAndRegion.getName(context), - AccountMenuItem.languageAndRegion.getIcon(_imagePaths), + AccountMenuItem.languageAndRegion.getIcon(controller.imagePaths), () => controller.selectSettings(AccountMenuItem.languageAndRegion) ), Divider( color: AppColor.colorDividerComposer, height: 1, - indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils), - endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils) + indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils), + endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils) ), SettingFirstLevelTileBuilder( AppLocalizations.of(context).sign_out, - _imagePaths.icSignOut, + controller.imagePaths.icSignOut, () => controller.manageAccountDashboardController.logout( controller.manageAccountDashboardController.sessionCurrent, controller.manageAccountDashboardController.accountId.value) diff --git a/lib/features/manage_account/presentation/menu/settings/settings_view.dart b/lib/features/manage_account/presentation/menu/settings/settings_view.dart index bc90407a6..9ef981242 100644 --- a/lib/features/manage_account/presentation/menu/settings/settings_view.dart +++ b/lib/features/manage_account/presentation/menu/settings/settings_view.dart @@ -1,6 +1,4 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/utils/direction_utils.dart'; @@ -27,10 +25,8 @@ import 'package:tmail_ui_user/main/utils/app_utils.dart'; typedef CloseSettingsViewAction = void Function(); class SettingsView extends GetWidget { - SettingsView({Key? key, this.closeAction}) : super(key: key); + const SettingsView({Key? key, this.closeAction}) : super(key: key); - final _responsiveUtils = Get.find(); - final _imagePaths = Get.find(); final CloseSettingsViewAction? closeAction; @override @@ -44,7 +40,7 @@ class SettingsView extends GetWidget { SizedBox.fromSize( size: const Size.fromHeight(52), child: Padding( - padding: SettingsUtils.getPaddingAppBar(context, _responsiveUtils), + padding: SettingsUtils.getPaddingAppBar(context, controller.responsiveUtils), child: _buildAppbar(context))), const Divider(color: AppColor.colorDividerComposer, height: 1), Obx(() { @@ -138,8 +134,8 @@ class SettingsView extends GetWidget { child: Row(mainAxisSize: MainAxisSize.min, children: [ SvgPicture.asset( DirectionUtils.isDirectionRTLByLanguage(context) - ? _imagePaths.icCollapseFolder - : _imagePaths.icBack, + ? controller.imagePaths.icCollapseFolder + : controller.imagePaths.icBack, colorFilter: AppColor.colorTextButton.asFilter(), fit: BoxFit.fill), Container( @@ -179,7 +175,7 @@ class SettingsView extends GetWidget { Widget _buildCloseSettingButton(BuildContext context) { return buildIconWeb( - icon: SvgPicture.asset(_imagePaths.icClose, width: 28, height: 28, fit: BoxFit.fill), + icon: SvgPicture.asset(controller.imagePaths.icClose, width: 28, height: 28, fit: BoxFit.fill), tooltip: AppLocalizations.of(context).close, onTap: closeAction); } @@ -188,7 +184,7 @@ class SettingsView extends GetWidget { return Obx(() { switch (controller.manageAccountDashboardController.settingsPageLevel.value) { case SettingsPageLevel.universal: - return SettingsFirstLevelView(); + return const SettingsFirstLevelView(); case SettingsPageLevel.level1: return _viewDisplayedOfAccountMenuItem(); } @@ -201,7 +197,7 @@ class SettingsView extends GetWidget { case AccountMenuItem.profiles: return ProfilesView(); case AccountMenuItem.languageAndRegion: - return LanguageAndRegionView(); + return const LanguageAndRegionView(); case AccountMenuItem.emailRules: if (controller.manageAccountDashboardController.isRuleFilterCapabilitySupported) { return EmailRulesView(); diff --git a/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart b/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart index 982184458..0072efb2e 100644 --- a/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart +++ b/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart @@ -1,10 +1,7 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/utils/app_toast.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart'; import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; @@ -42,9 +39,6 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart'; class IdentitiesController extends BaseController { final _accountDashBoardController = Get.find(); - final _appToast = Get.find(); - final _imagePaths = Get.find(); - final _responsiveUtils = Get.find(); final GetAllIdentitiesInteractor _getAllIdentitiesInteractor; final CreateNewIdentityInteractor _createNewIdentityInteractor; @@ -179,7 +173,7 @@ class IdentitiesController extends BaseController { void _createNewIdentitySuccess(CreateNewIdentitySuccess success) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).you_have_created_a_new_identity); } @@ -189,7 +183,7 @@ class IdentitiesController extends BaseController { void _createNewDefaultIdentitySuccess(CreateNewDefaultIdentitySuccess success) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).you_have_created_a_new_default_identity); } @@ -202,8 +196,8 @@ class IdentitiesController extends BaseController { context: context, barrierColor: AppColor.colorDefaultCupertinoActionSheet, builder: (BuildContext context) => DeleteIdentityDialogBuilder( - responsiveUtils: _responsiveUtils, - imagePaths: _imagePaths, + responsiveUtils: responsiveUtils, + imagePaths: imagePaths, onDeleteIdentityAction: () => _deleteIdentityAction(identity), )); } @@ -220,10 +214,10 @@ class IdentitiesController extends BaseController { void _deleteIdentitySuccess(DeleteIdentitySuccess success) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).identity_has_been_deleted, - leadingSVGIcon: _imagePaths.icDeleteToast); + leadingSVGIcon: imagePaths.icDeleteToast); } _refreshAllIdentities(); @@ -234,10 +228,10 @@ class IdentitiesController extends BaseController { showDialog( context: currentContext!, barrierColor: AppColor.colorDefaultCupertinoActionSheet, - builder: (BuildContext context) => (ConfirmDialogBuilder(_imagePaths) + builder: (BuildContext context) => (ConfirmDialogBuilder(imagePaths) ..key(const Key('dialog_message_delete_identity_failed')) ..title(AppLocalizations.of(context).delete_failed) - ..addIcon(SvgPicture.asset(_imagePaths.icDeleteDialogFailed, fit: BoxFit.fill)) + ..addIcon(SvgPicture.asset(imagePaths.icDeleteDialogFailed, fit: BoxFit.fill)) ..marginIcon(EdgeInsets.zero) ..styleTitle(const TextStyle(fontSize: 20, fontWeight: FontWeight.bold, @@ -291,7 +285,7 @@ class IdentitiesController extends BaseController { void _editIdentitySuccess(EditIdentitySuccess success) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).you_are_changed_your_identity_successfully); } @@ -299,7 +293,5 @@ class IdentitiesController extends BaseController { _refreshAllIdentities(); } - ImagePaths get imagePaths => _imagePaths; - bool get isSignatureShow => identitySelected.value != null; } \ No newline at end of file diff --git a/lib/features/manage_account/presentation/profiles/identities/identities_view.dart b/lib/features/manage_account/presentation/profiles/identities/identities_view.dart index 75e4092af..476ce7f53 100644 --- a/lib/features/manage_account/presentation/profiles/identities/identities_view.dart +++ b/lib/features/manage_account/presentation/profiles/identities/identities_view.dart @@ -1,5 +1,3 @@ -import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart'; @@ -10,16 +8,13 @@ import 'package:tmail_ui_user/features/manage_account/presentation/profiles/iden class IdentitiesView extends GetWidget with PopupMenuWidgetMixin, AppLoaderMixin { - final _responsiveUtils = Get.find(); - final _imagePaths = Get.find(); - IdentitiesView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Container( margin: const EdgeInsets.all(24), - child: _responsiveUtils.isWebDesktop(context) + child: controller.responsiveUtils.isWebDesktop(context) ? _buildIdentitiesViewWebDesktop(context) : _buildIdentitiesViewMobile(context), ); @@ -35,8 +30,8 @@ class IdentitiesView extends GetWidget with PopupMenuWidge const SizedBox(height: 12), IdentitiesRadioListBuilder( controller: controller, - responsiveUtils: _responsiveUtils, - imagePaths: _imagePaths + responsiveUtils: controller.responsiveUtils, + imagePaths: controller.imagePaths ) ], ); @@ -55,8 +50,8 @@ class IdentitiesView extends GetWidget with PopupMenuWidge const SizedBox(width: 12), Expanded(child: IdentitiesRadioListBuilder( controller: controller, - responsiveUtils: _responsiveUtils, - imagePaths: _imagePaths + responsiveUtils: controller.responsiveUtils, + imagePaths: controller.imagePaths )), ], ); diff --git a/lib/features/manage_account/presentation/vacation/vacation_controller.dart b/lib/features/manage_account/presentation/vacation/vacation_controller.dart index a19ebc27c..81328d497 100644 --- a/lib/features/manage_account/presentation/vacation/vacation_controller.dart +++ b/lib/features/manage_account/presentation/vacation/vacation_controller.dart @@ -26,7 +26,6 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart'; class VacationController extends BaseController { final _accountDashBoardController = Get.find(); - final _appToast = Get.find(); final _settingController = Get.find(); final GetAllVacationInteractor _getAllVacationInteractor; @@ -242,7 +241,7 @@ class VacationController extends BaseController { final fromDate = vacationPresentation.value.fromDate; if (fromDate == null) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).errorMessageWhenStartDateVacationIsEmpty); } @@ -253,7 +252,7 @@ class VacationController extends BaseController { final toDate = vacationPresentation.value.toDate; if (vacationStopEnabled && toDate != null && toDate.isBefore(fromDate)) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).errorMessageWhenEndDateVacationIsInValid); } @@ -263,7 +262,7 @@ class VacationController extends BaseController { final messageHtmlText = (PlatformInfo.isWeb ? _vacationMessageHtmlText : await _getMessageHtmlText()) ?? ''; if (messageHtmlText.isEmpty && context.mounted) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).errorMessageWhenMessageVacationIsEmpty); } @@ -299,7 +298,7 @@ class VacationController extends BaseController { void _handleUpdateVacationSuccess(UpdateVacationSuccess success) { if (success.listVacationResponse.isNotEmpty) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).vacationSettingSaved); } diff --git a/lib/features/manage_account/presentation/vacation/vacation_view.dart b/lib/features/manage_account/presentation/vacation/vacation_view.dart index c64355758..b567bce35 100644 --- a/lib/features/manage_account/presentation/vacation/vacation_view.dart +++ b/lib/features/manage_account/presentation/vacation/vacation_view.dart @@ -22,9 +22,6 @@ import 'package:tmail_ui_user/main/utils/app_utils.dart'; class VacationView extends GetWidget with RichTextButtonMixin { - final _responsiveUtils = Get.find(); - final _imagePaths = Get.find(); - VacationView({Key? key}) : super(key: key); @override @@ -52,18 +49,18 @@ class VacationView extends GetWidget with RichTextButtonMixi Widget _buildVacationFormView(BuildContext context) { return SettingDetailViewBuilder( - responsiveUtils: _responsiveUtils, + responsiveUtils: controller.responsiveUtils, padding: const EdgeInsets.symmetric(horizontal: 4), onTapGestureDetector: () => controller.clearFocusEditor(context), child: SingleChildScrollView( physics: const ClampingScrollPhysics(), controller: controller.scrollController, child: Padding( - padding: VacationUtils.getPaddingView(context, _responsiveUtils), + padding: VacationUtils.getPaddingView(context, controller.responsiveUtils), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (_responsiveUtils.isWebDesktop(context)) + if (controller.responsiveUtils.isWebDesktop(context)) ...[ Text( AppLocalizations.of(context).vacation, @@ -94,7 +91,9 @@ class VacationView extends GetWidget with RichTextButtonMixi controller.updateVacationPresentation(newStatus: newStatus); }, child: SvgPicture.asset( - controller.isVacationDeactivated ? _imagePaths.icSwitchOff : _imagePaths.icSwitchOn, + controller.isVacationDeactivated + ? controller.imagePaths.icSwitchOff + : controller.imagePaths.icSwitchOn, fit: BoxFit.fill, width: 24, height: 24 @@ -121,7 +120,7 @@ class VacationView extends GetWidget with RichTextButtonMixi absorbing: controller.isVacationDeactivated, child: Opacity( opacity: controller.isVacationDeactivated ? 0.3 : 1.0, - child: _responsiveUtils.isPortraitMobile(context) + child: controller.responsiveUtils.isPortraitMobile(context) ? Column(children: [ BorderButtonField( label: AppLocalizations.of(context).startDate, @@ -175,8 +174,8 @@ class VacationView extends GetWidget with RichTextButtonMixi }, child: SvgPicture.asset( controller.vacationPresentation.value.vacationStopEnabled - ? _imagePaths.icSwitchOn - : _imagePaths.icSwitchOff, + ? controller.imagePaths.icSwitchOn + : controller.imagePaths.icSwitchOff, fit: BoxFit.fill, width: 24, height: 24 @@ -201,7 +200,7 @@ class VacationView extends GetWidget with RichTextButtonMixi absorbing: !controller.canChangeEndDate, child: Opacity( opacity: !controller.canChangeEndDate ? 0.3 : 1.0, - child: _responsiveUtils.isPortraitMobile(context) + child: controller.responsiveUtils.isPortraitMobile(context) ? Column(children: [ BorderButtonField( label: AppLocalizations.of(context).endDate, @@ -245,7 +244,7 @@ class VacationView extends GetWidget with RichTextButtonMixi const SizedBox(height: 24), Obx(() => AbsorbPointer( absorbing: controller.isVacationDeactivated, - child: _responsiveUtils.isPortraitMobile(context) + child: controller.responsiveUtils.isPortraitMobile(context) ? Opacity( opacity: controller.isVacationDeactivated ? 0.3 : 1.0, child: TextInputFieldBuilder( @@ -289,7 +288,7 @@ class VacationView extends GetWidget with RichTextButtonMixi } Widget _buildListButtonAction(BuildContext context) { - if (_responsiveUtils.isWebDesktop(context)) { + if (controller.responsiveUtils.isWebDesktop(context)) { return Align( alignment: Alignment.centerRight, child: buildTextButton( @@ -305,7 +304,7 @@ class VacationView extends GetWidget with RichTextButtonMixi onTap: () => controller.saveVacation(context)), ); } else { - if (_responsiveUtils.isPortraitMobile(context)) { + if (controller.responsiveUtils.isPortraitMobile(context)) { return Row(children: [ Expanded( child: buildTextButton( diff --git a/lib/features/quotas/presentation/quotas_controller.dart b/lib/features/quotas/presentation/quotas_controller.dart index 797176530..aebf99ad7 100644 --- a/lib/features/quotas/presentation/quotas_controller.dart +++ b/lib/features/quotas/presentation/quotas_controller.dart @@ -1,6 +1,4 @@ -import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart'; @@ -15,8 +13,6 @@ import 'package:tmail_ui_user/main/error/capability_validator.dart'; class QuotasController extends BaseController { final mailboxDashBoardController = Get.find(); - final responsiveUtils = Get.find(); - final imagePaths = Get.find(); final GetQuotasInteractor _getQuotasInteractor; diff --git a/lib/features/rules_filter_creator/presentation/rules_filter_creator_controller.dart b/lib/features/rules_filter_creator/presentation/rules_filter_creator_controller.dart index ebcfe3c6f..1c4e1ecb8 100644 --- a/lib/features/rules_filter_creator/presentation/rules_filter_creator_controller.dart +++ b/lib/features/rules_filter_creator/presentation/rules_filter_creator_controller.dart @@ -1,5 +1,4 @@ import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/keyboard_utils.dart'; import 'package:core/utils/app_logger.dart'; import 'package:core/utils/platform_info.dart'; @@ -47,8 +46,6 @@ import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/r class RulesFilterCreatorController extends BaseMailboxController { - final _appToast = Get.find(); - final GetAllMailboxInteractor _getAllMailboxInteractor; GetAllRulesInteractor? _getAllRulesInteractor; @@ -373,7 +370,7 @@ class RulesFilterCreatorController extends BaseMailboxController { } final int duplicatedIndex = listEmailRuleFilterActionSelected.indexWhere((filterAction) => filterAction.action == newAction); if (duplicatedIndex != -1) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).duplicatedActionError, ); @@ -440,7 +437,7 @@ class RulesFilterCreatorController extends BaseMailboxController { if (listRuleCondition.isEmpty == true || listEmailRuleFilterActionSelected.isEmpty == true) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).toastErrorMessageWhenCreateNewRule); } @@ -454,7 +451,7 @@ class RulesFilterCreatorController extends BaseMailboxController { log('RulesFilterCreatorController::createNewRuleFilter:errorAction: $errorAction'); if (errorAction?.isNotEmpty == true) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).notSelectedMailboxToMoveMessage); } diff --git a/lib/features/rules_filter_creator/presentation/rules_filter_creator_view.dart b/lib/features/rules_filter_creator/presentation/rules_filter_creator_view.dart index bb9b9c399..98ae46d81 100644 --- a/lib/features/rules_filter_creator/presentation/rules_filter_creator_view.dart +++ b/lib/features/rules_filter_creator/presentation/rules_filter_creator_view.dart @@ -23,9 +23,6 @@ import 'model/rule_filter_condition_type.dart'; class RuleFilterCreatorView extends GetWidget { - final _imagePaths = Get.find(); - final _responsiveUtils = Get.find(); - @override final controller = Get.find(); @@ -35,7 +32,7 @@ class RuleFilterCreatorView extends GetWidget { Widget build(BuildContext context) { return PointerInterceptor( child: ResponsiveWidget( - responsiveUtils: _responsiveUtils, + responsiveUtils: controller.responsiveUtils, mobile: Scaffold( backgroundColor: PlatformInfo.isWeb ? Colors.black.withAlpha(24) @@ -75,7 +72,7 @@ class RuleFilterCreatorView extends GetWidget { topRight: Radius.circular(16), )), width: double.infinity, - height: _responsiveUtils.getSizeScreenHeight(context) * 0.7, + height: controller.responsiveUtils.getSizeScreenHeight(context) * 0.7, child: ClipRRect( borderRadius: const BorderRadius.only( topLeft: Radius.circular(16), @@ -97,8 +94,8 @@ class RuleFilterCreatorView extends GetWidget { decoration: const BoxDecoration( color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(16))), - width: _responsiveUtils.getSizeScreenWidth(context) * 0.6, - height: _responsiveUtils.getSizeScreenHeight(context) * 0.7, + width: controller.responsiveUtils.getSizeScreenWidth(context) * 0.6, + height: controller.responsiveUtils.getSizeScreenHeight(context) * 0.7, child: ClipRRect( borderRadius: const BorderRadius.all(Radius.circular(16)), child: _buildRulesFilterFormOnDesktop(context) @@ -153,7 +150,7 @@ class RuleFilterCreatorView extends GetWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ SvgPicture.asset( - _imagePaths.icAddNewFolder, + controller.imagePaths.icAddNewFolder, fit: BoxFit.fill, ), const SizedBox(width: 15,), @@ -182,7 +179,7 @@ class RuleFilterCreatorView extends GetWidget { const SizedBox(height: 24), Obx(() { return RuleFilterActionListWidget( - responsiveUtils: _responsiveUtils, + responsiveUtils: controller.responsiveUtils, actionList: controller.listEmailRuleFilterActionSelected, onActionChanged: (newAction, index) { controller.selectEmailRuleFilterAction(newAction, index); @@ -195,7 +192,7 @@ class RuleFilterCreatorView extends GetWidget { controller.selectMailbox(context, index); }, tapRemoveCallback: (index) => controller.tapRemoveAction(index), - imagePaths: _imagePaths, + imagePaths: controller.imagePaths, errorForwardEmail: controller.errorForwardEmailValue.value, errorMailboxSelected: controller.errorMailboxSelectedValue.value, ); @@ -210,7 +207,7 @@ class RuleFilterCreatorView extends GetWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ SvgPicture.asset( - _imagePaths.icAddNewFolder, + controller.imagePaths.icAddNewFolder, fit: BoxFit.fill, ), const SizedBox(width: 15,), @@ -264,7 +261,7 @@ class RuleFilterCreatorView extends GetWidget { Positioned(top: 8, right: 8, child: buildIconWeb( icon: SvgPicture.asset( - _imagePaths.icCircleClose, + controller.imagePaths.icCircleClose, fit: BoxFit.fill), tooltip: AppLocalizations.of(context).close, onTap: () => controller.closeView(context))) @@ -314,7 +311,7 @@ class RuleFilterCreatorView extends GetWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ SvgPicture.asset( - _imagePaths.icAddNewFolder, + controller.imagePaths.icAddNewFolder, fit: BoxFit.fill, ), const SizedBox(width: 15,), @@ -343,7 +340,7 @@ class RuleFilterCreatorView extends GetWidget { const SizedBox(height: 24), Obx(() { return RuleFilterActionListWidget( - responsiveUtils: _responsiveUtils, + responsiveUtils: controller.responsiveUtils, actionList: controller.listEmailRuleFilterActionSelected, onActionChanged: (newAction, index) { controller.selectEmailRuleFilterAction(newAction, index); @@ -356,7 +353,7 @@ class RuleFilterCreatorView extends GetWidget { controller.selectMailbox(context, index); }, tapRemoveCallback: (index) => controller.tapRemoveAction(index), - imagePaths: _imagePaths, + imagePaths: controller.imagePaths, errorForwardEmail: controller.errorForwardEmailValue.value, errorMailboxSelected: controller.errorMailboxSelectedValue.value, ); @@ -371,7 +368,7 @@ class RuleFilterCreatorView extends GetWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ SvgPicture.asset( - _imagePaths.icAddNewFolder, + controller.imagePaths.icAddNewFolder, fit: BoxFit.fill, ), const SizedBox(width: 15,), @@ -424,7 +421,7 @@ class RuleFilterCreatorView extends GetWidget { Positioned(top: 8, right: 8, child: buildIconWeb( icon: SvgPicture.asset( - _imagePaths.icCircleClose, + controller.imagePaths.icCircleClose, fit: BoxFit.fill), tooltip: AppLocalizations.of(context).close, onTap: () => controller.closeView(context))) @@ -489,7 +486,7 @@ class RuleFilterCreatorView extends GetWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ SvgPicture.asset( - _imagePaths.icAddNewFolder, + controller.imagePaths.icAddNewFolder, fit: BoxFit.fill, ), const SizedBox(width: 15,), @@ -523,7 +520,7 @@ class RuleFilterCreatorView extends GetWidget { const SizedBox(height: 24), Obx(() { return RuleFilterActionListWidget( - responsiveUtils: _responsiveUtils, + responsiveUtils: controller.responsiveUtils, actionList: controller.listEmailRuleFilterActionSelected, onActionChangeMobile: (currentAction, index) { KeyboardUtils.hideKeyboard(context); @@ -544,7 +541,7 @@ class RuleFilterCreatorView extends GetWidget { controller.selectMailbox(context, index); }, tapRemoveCallback: (index) => controller.tapRemoveAction(index), - imagePaths: _imagePaths, + imagePaths: controller.imagePaths, errorForwardEmail: controller.errorForwardEmailValue.value, errorMailboxSelected: controller.errorMailboxSelectedValue.value, ); @@ -560,7 +557,7 @@ class RuleFilterCreatorView extends GetWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ SvgPicture.asset( - _imagePaths.icAddNewFolder, + controller.imagePaths.icAddNewFolder, fit: BoxFit.fill, ), const SizedBox(width: 15,), @@ -613,7 +610,7 @@ class RuleFilterCreatorView extends GetWidget { Positioned(top: 8, right: 8, child: buildIconWeb( icon: SvgPicture.asset( - _imagePaths.icCircleClose, + controller.imagePaths.icCircleClose, fit: BoxFit.fill), tooltip: AppLocalizations.of(context).close, onTap: () => controller.closeView(context))) @@ -634,7 +631,7 @@ class RuleFilterCreatorView extends GetWidget { key: ValueKey(controller.listRuleConditionValueArguments[index].focusNode), ruleFilterConditionScreenType: ruleFilterConditionScreenType, ruleCondition: controller.listRuleCondition[index], - imagePaths: _imagePaths, + imagePaths: controller.imagePaths, conditionValueErrorText: controller.listRuleConditionValueArguments[index].errorText, conditionValueFocusNode: controller.listRuleConditionValueArguments[index].focusNode, conditionValueEditingController: controller.listRuleConditionValueArguments[index].controller, @@ -702,7 +699,7 @@ class RuleFilterCreatorView extends GetWidget { iconLeftPadding: const EdgeInsets.only(left: 12, right: 16), iconRightPadding: const EdgeInsets.only(right: 12), actionSelected: SvgPicture.asset( - _imagePaths.icFilterSelected, + controller.imagePaths.icFilterSelected, width: 20, height: 20, fit: BoxFit.fill)) @@ -737,7 +734,7 @@ class RuleFilterCreatorView extends GetWidget { iconLeftPadding: const EdgeInsets.only(left: 12, right: 16), iconRightPadding: const EdgeInsets.only(right: 12), actionSelected: SvgPicture.asset( - _imagePaths.icFilterSelected, + controller.imagePaths.icFilterSelected, width: 20, height: 20, fit: BoxFit.fill)) @@ -770,7 +767,7 @@ class RuleFilterCreatorView extends GetWidget { iconLeftPadding: const EdgeInsets.only(left: 12, right: 16), iconRightPadding: const EdgeInsets.only(right: 12), actionSelected: SvgPicture.asset( - _imagePaths.icFilterSelected, + controller.imagePaths.icFilterSelected, width: 20, height: 20, fit: BoxFit.fill)) @@ -808,7 +805,7 @@ class RuleFilterCreatorView extends GetWidget { iconLeftPadding: const EdgeInsets.only(left: 12, right: 16), iconRightPadding: const EdgeInsets.only(right: 12), actionSelected: SvgPicture.asset( - _imagePaths.icFilterSelected, + controller.imagePaths.icFilterSelected, width: 20, height: 20, fit: BoxFit.fill)) diff --git a/lib/features/search/email/presentation/search_email_view.dart b/lib/features/search/email/presentation/search_email_view.dart index 3d3a4759f..cd655dcb5 100644 --- a/lib/features/search/email/presentation/search_email_view.dart +++ b/lib/features/search/email/presentation/search_email_view.dart @@ -1,7 +1,5 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/text/text_field_builder.dart'; @@ -35,14 +33,11 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class SearchEmailView extends GetWidget with AppLoaderMixin { - final _imagePaths = Get.find(); - final _responsiveUtils = Get.find(); - SearchEmailView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { - if (_responsiveUtils.isWebDesktop(context)) { + if (controller.responsiveUtils.isWebDesktop(context)) { WidgetsBinding.instance.addPostFrameCallback((_) { controller.closeSearchView(context); }); @@ -57,7 +52,7 @@ class SearchEmailView extends GetWidget Container( height: 52, color: Colors.white, - padding: SearchEmailUtils.getPaddingAppBar(context, _responsiveUtils), + padding: SearchEmailUtils.getPaddingAppBar(context, controller.responsiveUtils), child: Obx(() { if (controller.selectionMode.value == SelectMode.ACTIVE) { return AppBarSelectionMode( @@ -110,7 +105,7 @@ class SearchEmailView extends GetWidget children: [ buildIconWeb( icon: SvgPicture.asset( - DirectionUtils.isDirectionRTLByLanguage(context) ? _imagePaths.icCollapseFolder : _imagePaths.icBack, + DirectionUtils.isDirectionRTLByLanguage(context) ? controller.imagePaths.icCollapseFolder : controller.imagePaths.icBack, colorFilter: AppColor.colorTextButton.asFilter(), fit: BoxFit.fill ), @@ -138,7 +133,7 @@ class SearchEmailView extends GetWidget return buildIconWeb( icon: SvgPicture.asset( - _imagePaths.icClearTextSearch, + controller.imagePaths.icClearTextSearch, width: 18, height: 18, fit: BoxFit.fill), @@ -154,8 +149,8 @@ class SearchEmailView extends GetWidget Widget _buildListSearchFilterAction(BuildContext context) { return Container( - margin: SearchEmailUtils.getMarginSearchFilterButton(context, _responsiveUtils), - padding: SearchEmailUtils.getPaddingSearchFilterButton(context, _responsiveUtils), + margin: SearchEmailUtils.getMarginSearchFilterButton(context, controller.responsiveUtils), + padding: SearchEmailUtils.getPaddingSearchFilterButton(context, controller.responsiveUtils), height: 60, child: ListView( scrollDirection: Axis.horizontal, @@ -181,7 +176,7 @@ class SearchEmailView extends GetWidget onTap: () { if (filter != QuickSearchFilter.last7Days) { controller.selectQuickSearchFilter(context, filter); - } else if (_responsiveUtils.isMobile(context)) { + } else if (controller.responsiveUtils.isMobile(context)) { controller.openContextMenuAction( context, _emailReceiveTimeCupertinoActionTile( @@ -192,7 +187,7 @@ class SearchEmailView extends GetWidget }, onTapDown: (detail) { if (filter == QuickSearchFilter.last7Days && - !_responsiveUtils.isMobile(context)) { + !controller.responsiveUtils.isMobile(context)) { final screenSize = MediaQuery.of(context).size; final offset = detail.globalPosition; final position = RelativeRect.fromLTRB( @@ -218,7 +213,7 @@ class SearchEmailView extends GetWidget padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ SvgPicture.asset( - filter.getIcon(_imagePaths, isFilterSelected: filterSelected), + filter.getIcon(controller.imagePaths, isFilterSelected: filterSelected), width: 16, height: 16, fit: BoxFit.fill), @@ -239,7 +234,7 @@ class SearchEmailView extends GetWidget ... [ const SizedBox(width: 4), SvgPicture.asset( - _imagePaths.icChevronDownOutline, + controller.imagePaths.icChevronDownOutline, colorFilter: filterSelected ? AppColor.primaryColor.asFilter() : AppColor.colorDefaultRichTextButton.asFilter(), @@ -278,14 +273,14 @@ class SearchEmailView extends GetWidget timeType.getTitle(context), timeType, timeTypeCurrent: receiveTimeSelected, - iconLeftPadding: _responsiveUtils.isMobile(context) + iconLeftPadding: controller.responsiveUtils.isMobile(context) ? const EdgeInsets.only(left: 12, right: 16) : const EdgeInsets.only(right: 12), - iconRightPadding: _responsiveUtils.isMobile(context) + iconRightPadding: controller.responsiveUtils.isMobile(context) ? const EdgeInsets.only(right: 12) : EdgeInsets.zero, actionSelected: SvgPicture.asset( - _imagePaths.icFilterSelected, + controller.imagePaths.icFilterSelected, width: 20, height: 20, fit: BoxFit.fill)) @@ -306,7 +301,7 @@ class SearchEmailView extends GetWidget } }, child: Padding( - padding: SearchEmailUtils.getPaddingShowAllResultButton(context, _responsiveUtils), + padding: SearchEmailUtils.getPaddingShowAllResultButton(context, controller.responsiveUtils), child: Row(children: [ Text(AppLocalizations.of(context).showingResultsFor, style: const TextStyle(fontSize: 13.0, @@ -331,7 +326,7 @@ class SearchEmailView extends GetWidget ) { return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - padding: SearchEmailUtils.getPaddingSearchRecentTitle(context, _responsiveUtils), + padding: SearchEmailUtils.getPaddingSearchRecentTitle(context, controller.responsiveUtils), child: Text(AppLocalizations.of(context).recent, style: const TextStyle(fontSize: 13.0, color: AppColor.colorTextButtonHeaderThread, @@ -349,7 +344,7 @@ class SearchEmailView extends GetWidget child: InkWell( child: RecentSearchItemTileWidget( recentSearch, - contentPadding: SearchEmailUtils.getPaddingListRecentSearch(context, _responsiveUtils)), + contentPadding: SearchEmailUtils.getPaddingListRecentSearch(context, controller.responsiveUtils)), onTap: () => controller.searchEmailByRecentAction(context, recentSearch), ), ); @@ -372,7 +367,7 @@ class SearchEmailView extends GetWidget child: EmailQuickSearchItemTileWidget( listSuggestionSearch[index], controller.currentMailbox, - contentPadding: SearchEmailUtils.getPaddingSearchSuggestionList(context, _responsiveUtils)), + contentPadding: SearchEmailUtils.getPaddingSearchSuggestionList(context, controller.responsiveUtils)), onTap: () { final emailPreview = listSuggestionSearch[index]; final mailboxContain = emailPreview @@ -395,7 +390,7 @@ class SearchEmailView extends GetWidget ? EmptyEmailsWidget( key: const Key('empty_search_email_view'), title: AppLocalizations.of(context).no_emails_matching_your_search, - iconSVG: _imagePaths.icEmptyEmail + iconSVG: controller.imagePaths.icEmptyEmail ) : const SizedBox.shrink()) ); @@ -426,12 +421,12 @@ class SearchEmailView extends GetWidget controller.searchQuery, controller.mailboxDashBoardController.selectedEmail.value?.id == currentPresentationEmail.id, isSearchEmailRunning: true, - padding: SearchEmailUtils.getPaddingSearchResultList(context, _responsiveUtils), - paddingDivider: SearchEmailUtils.getPaddingDividerSearchResultList(context, _responsiveUtils), + padding: SearchEmailUtils.getPaddingSearchResultList(context, controller.responsiveUtils), + paddingDivider: SearchEmailUtils.getPaddingDividerSearchResultList(context, controller.responsiveUtils), mailboxContain: currentPresentationEmail.mailboxContain) ..addOnPressEmailActionClick((action, email) => controller.pressEmailAction(context, action, email, mailboxContain: currentPresentationEmail.mailboxContain)) - ..addOnMoreActionClick((email, position) => _responsiveUtils.isScreenWithShortestSide(context) + ..addOnMoreActionClick((email, position) => controller.responsiveUtils.isScreenWithShortestSide(context) ? controller.openContextMenuAction(context, _contextMenuActionTile(context, email)) : controller.openPopupMenuAction(context, position, _popupMenuActionTile(context, email))) ).build()); @@ -441,7 +436,7 @@ class SearchEmailView extends GetWidget double? _getItemExtent(BuildContext context) { if (PlatformInfo.isWeb) { - return _responsiveUtils.isDesktop(context) ? 52 : 95; + return controller.responsiveUtils.isDesktop(context) ? 52 : 95; } else { return null; } @@ -469,7 +464,7 @@ class SearchEmailView extends GetWidget return (EmailActionCupertinoActionSheetActionBuilder( const Key('mark_as_spam_or_un_spam_action'), SvgPicture.asset( - mailboxContain?.isSpam == true ? _imagePaths.icNotSpam : _imagePaths.icSpam, + mailboxContain?.isSpam == true ? controller.imagePaths.icNotSpam : controller.imagePaths.icSpam, width: 28, height: 28, fit: BoxFit.fill, @@ -478,10 +473,10 @@ class SearchEmailView extends GetWidget ? AppLocalizations.of(context).remove_from_spam : AppLocalizations.of(context).mark_as_spam, email, - iconLeftPadding: _responsiveUtils.isMobile(context) + iconLeftPadding: controller.responsiveUtils.isMobile(context) ? const EdgeInsets.only(left: 12, right: 16) : const EdgeInsets.only(right: 12), - iconRightPadding: _responsiveUtils.isMobile(context) + iconRightPadding: controller.responsiveUtils.isMobile(context) ? const EdgeInsets.only(right: 12) : EdgeInsets.zero) ..onActionClick((email) => controller.pressEmailAction(context, @@ -531,7 +526,7 @@ class SearchEmailView extends GetWidget padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ SvgPicture.asset( - filterSelected ? _imagePaths.icSelectedSB : _imagePaths.icFolderMailbox, + filterSelected ? controller.imagePaths.icSelectedSB : controller.imagePaths.icFolderMailbox, width: 16, height: 16, fit: BoxFit.fill), @@ -555,7 +550,7 @@ class SearchEmailView extends GetWidget ), const SizedBox(width: 4), SvgPicture.asset( - _imagePaths.icChevronDownOutline, + controller.imagePaths.icChevronDownOutline, colorFilter: filterSelected ? AppColor.primaryColor.asFilter() : AppColor.colorDefaultRichTextButton.asFilter(), @@ -585,7 +580,7 @@ class SearchEmailView extends GetWidget padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ SvgPicture.asset( - filterSelected ? _imagePaths.icSelectedSB : _imagePaths.icUserSB, + filterSelected ? controller.imagePaths.icSelectedSB : controller.imagePaths.icUserSB, width: 16, height: 16, fit: BoxFit.fill), @@ -609,7 +604,7 @@ class SearchEmailView extends GetWidget ), const SizedBox(width: 4), SvgPicture.asset( - _imagePaths.icChevronDownOutline, + controller.imagePaths.icChevronDownOutline, colorFilter: filterSelected ? AppColor.primaryColor.asFilter() : AppColor.colorDefaultRichTextButton.asFilter(), diff --git a/lib/features/search/mailbox/presentation/search_mailbox_controller.dart b/lib/features/search/mailbox/presentation/search_mailbox_controller.dart index 938f10b14..2adefe0b0 100644 --- a/lib/features/search/mailbox/presentation/search_mailbox_controller.dart +++ b/lib/features/search/mailbox/presentation/search_mailbox_controller.dart @@ -1,11 +1,8 @@ import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/keyboard_utils.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/utils/app_logger.dart'; import 'package:core/utils/platform_info.dart'; import 'package:debounce_throttle/debounce_throttle.dart'; @@ -69,7 +66,6 @@ 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/dialog_router.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; -import 'package:uuid/uuid.dart'; class SearchMailboxController extends BaseMailboxController with MailboxActionHandlerMixin { @@ -82,10 +78,6 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa final CreateNewMailboxInteractor _createNewMailboxInteractor; final dashboardController = Get.find(); - final responsiveUtils = Get.find(); - final imagePaths = Get.find(); - final _appToast = Get.find(); - final _uuid = Get.find(); final currentSearchQuery = RxString(''); final listMailboxSearched = RxList(); @@ -387,7 +379,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa void _moveMailboxSuccess(MoveMailboxSuccess success) { if (success.moveAction == MoveAction.moving && currentOverlayContext != null && currentContext != null) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).movedToFolder(success.destinationMailboxDisplayName ?? AppLocalizations.of(currentContext!).allFolders), actionName: AppLocalizations.of(currentContext!).undo, @@ -449,7 +441,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa void _deleteMultipleMailboxSuccess(List listMailboxIdDeleted, jmap.State? currentMailboxState) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).deleteFoldersSuccessfully); } @@ -464,7 +456,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa void _deleteMailboxFailure(DeleteMultipleMailboxFailure failure) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).deleteFoldersFailure); } @@ -563,7 +555,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa {List? listDescendantMailboxIds} ) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastMessage( + appToast.showToastMessage( currentOverlayContext!, subscribeAction.getToastMessageSuccess(currentContext!), actionName: AppLocalizations.of(currentContext!).undo, @@ -683,7 +675,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa : await push(AppRoutes.mailboxCreator, arguments: arguments); if (result != null && result is NewMailboxArguments) { - final generateCreateId = Id(_uuid.v1()); + final generateCreateId = Id(uuid.v1()); _createNewMailboxAction(session, accountId, CreateNewMailboxRequest( generateCreateId, result.newName, @@ -698,7 +690,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa void _createNewMailboxSuccess(CreateNewMailboxSuccess success) { if (currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).createFolderSuccessfullyMessage(success.newMailbox.name?.name ?? ''), leadingSVGIconColor: Colors.white, @@ -715,7 +707,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa if (exception is ErrorMethodResponse) { messageError = exception.description ?? AppLocalizations.of(currentContext!).createNewFolderFailure; } - _appToast.showToastErrorMessage(currentOverlayContext!, messageError); + appToast.showToastErrorMessage(currentOverlayContext!, messageError); } } diff --git a/lib/features/sending_queue/presentation/sending_queue_controller.dart b/lib/features/sending_queue/presentation/sending_queue_controller.dart index cab19a0bf..303fbfc22 100644 --- a/lib/features/sending_queue/presentation/sending_queue_controller.dart +++ b/lib/features/sending_queue/presentation/sending_queue_controller.dart @@ -1,9 +1,7 @@ import 'package:core/utils/app_logger.dart'; import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -53,8 +51,6 @@ class SendingQueueController extends BaseController with MessageDialogActionMixi final dashboardController = Get.find(); final _networkConnectionController = Get.find(); final _sendingQueueIsolateManager = getBinding(); - final _imagePaths = Get.find(); - final _appToast = Get.find(); final listSendingEmailController = ScrollController(); @@ -210,7 +206,7 @@ class SendingQueueController extends BaseController with MessageDialogActionMixi AppLocalizations.of(context).messageDialogDeleteSendingEmail, AppLocalizations.of(currentContext!).delete, title: AppLocalizations.of(currentContext!).deleteOfflineEmail, - icon: SvgPicture.asset(_imagePaths.icDeleteDialogRecipients), + icon: SvgPicture.asset(imagePaths.icDeleteDialogRecipients), alignCenter: true, messageStyle: const TextStyle( color: AppColor.colorTitleSendingItem, @@ -259,7 +255,7 @@ class SendingQueueController extends BaseController with MessageDialogActionMixi } if (currentContext != null && currentOverlayContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).messageHaveBeenDeletedSuccessfully); } @@ -329,7 +325,7 @@ class SendingQueueController extends BaseController with MessageDialogActionMixi } if (currentContext != null && currentOverlayContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).messagesHaveBeenResent); } diff --git a/lib/features/thread/presentation/thread_controller.dart b/lib/features/thread/presentation/thread_controller.dart index 0477a5cda..78ce3978f 100644 --- a/lib/features/thread/presentation/thread_controller.dart +++ b/lib/features/thread/presentation/thread_controller.dart @@ -1,7 +1,5 @@ -import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/utils/app_logger.dart'; import 'package:core/utils/platform_info.dart'; import 'package:dartz/dartz.dart'; @@ -85,8 +83,6 @@ typedef EndRangeSelection = int; class ThreadController extends BaseController with EmailActionController { - final _imagePaths = Get.find(); - final _appToast = Get.find(); final networkConnectionController = Get.find(); final GetEmailsInMailboxInteractor _getEmailsInMailboxInteractor; @@ -377,6 +373,14 @@ class ThreadController extends BaseController with EmailActionController { await cachingManager.clearEmailCacheAndAllStateCache(); } _getAllEmailAction(); + } else if (error is MethodLevelErrors) { + if (currentOverlayContext != null && error.message?.isNotEmpty == true) { + appToast.showToastErrorMessage( + currentOverlayContext!, + error.message! + ); + } + clearState(); } } @@ -683,10 +687,10 @@ class ThreadController extends BaseController with EmailActionController { mailboxDashBoardController.filterMessageOption.value = newFilterOption; - _appToast.showToastMessage( + appToast.showToastMessage( context, newFilterOption.getMessageToast(context), - leadingSVGIcon: newFilterOption.getIconToast(_imagePaths), + leadingSVGIcon: newFilterOption.getIconToast(imagePaths), ); if (searchController.isSearchEmailRunning) { @@ -1060,7 +1064,7 @@ class ThreadController extends BaseController with EmailActionController { if (success.newListRules.isNotEmpty == true && currentOverlayContext != null && currentContext != null) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).newFilterWasCreated ); diff --git a/lib/features/thread/presentation/thread_view.dart b/lib/features/thread/presentation/thread_view.dart index bd52df9fa..264b2ef27 100644 --- a/lib/features/thread/presentation/thread_view.dart +++ b/lib/features/thread/presentation/thread_view.dart @@ -44,9 +44,6 @@ class ThreadView extends GetWidget FilterEmailPopupMenuMixin, PopupMenuWidgetMixin { - final _responsiveUtils = Get.find(); - final _imagePaths = Get.find(); - ThreadView({Key? key}) : super(key: key); @override @@ -63,12 +60,12 @@ class ThreadView extends GetWidget if (supportVerticalDivider(context)) const VerticalDivider(color: AppColor.colorDividerVertical, width: 1), Expanded(child: SafeArea( - right: _responsiveUtils.isLandscapeMobile(context), - left: _responsiveUtils.isLandscapeMobile(context), + right: controller.responsiveUtils.isLandscapeMobile(context), + left: controller.responsiveUtils.isLandscapeMobile(context), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (!_responsiveUtils.isWebDesktop(context)) + if (!controller.responsiveUtils.isWebDesktop(context)) ... [ Obx(() { return AppBarThreadWidget( @@ -86,13 +83,13 @@ class ThreadView extends GetWidget selectionEmail ); }, - onContextMenuFilterEmailAction: _responsiveUtils.isScreenWithShortestSide(context) + onContextMenuFilterEmailAction: controller.responsiveUtils.isScreenWithShortestSide(context) ? (filterOption) => controller.openContextMenuAction( context, _filterMessagesCupertinoActionTile(context, filterOption) ) : null, - onPopupMenuFilterEmailAction: !_responsiveUtils.isScreenWithShortestSide(context) + onPopupMenuFilterEmailAction: !controller.responsiveUtils.isScreenWithShortestSide(context) ? (filterOption, position) => controller.openPopupMenuAction( context, position, @@ -148,7 +145,7 @@ class ThreadView extends GetWidget return const SizedBox.shrink(); } }), - if (!_responsiveUtils.isDesktop(context)) + if (!controller.responsiveUtils.isDesktop(context)) _buildMarkAsMailboxReadLoading(context), Obx(() => ThreadViewLoadingBarWidget(viewState: controller.viewState.value)), Expanded(child: _buildListEmail(context)), @@ -167,9 +164,9 @@ class ThreadView extends GetWidget child: ScrollToTopButtonWidget( scrollController: controller.listEmailController, onTap: controller.scrollToTop, - responsiveUtils: _responsiveUtils, + responsiveUtils: controller.responsiveUtils, icon: SvgPicture.asset( - _imagePaths.icArrowUpOutline, + controller.imagePaths.icArrowUpOutline, width: ScrollToTopButtonWidgetStyles.iconWidth, height: ScrollToTopButtonWidgetStyles.iconHeight, fit: BoxFit.fill, @@ -188,11 +185,11 @@ class ThreadView extends GetWidget bool supportVerticalDivider(BuildContext context) { if (PlatformInfo.isWeb) { - return _responsiveUtils.isTabletLarge(context); + return controller.responsiveUtils.isTabletLarge(context); } else { - return _responsiveUtils.isDesktop(context) || - _responsiveUtils.isTabletLarge(context) || - _responsiveUtils.isLandscapeTablet(context); + return controller.responsiveUtils.isDesktop(context) || + controller.responsiveUtils.isTabletLarge(context) || + controller.responsiveUtils.isLandscapeTablet(context); } } @@ -201,9 +198,9 @@ class ThreadView extends GetWidget color: Colors.white, padding: EdgeInsets.symmetric( horizontal: 16, - vertical: _responsiveUtils.isWebNotDesktop(context) ? 8 : 0), + vertical: controller.responsiveUtils.isWebNotDesktop(context) ? 8 : 0), margin: EdgeInsets.only(bottom: PlatformInfo.isMobile ? 8 : 0), - child: SearchBarView(_imagePaths, + child: SearchBarView(controller.imagePaths, hintTextSearch: AppLocalizations.of(context).search_emails, onOpenSearchViewAction: controller.goToSearchView)); } @@ -226,11 +223,11 @@ class ThreadView extends GetWidget Widget _buildListButtonSelectionForMobile(BuildContext context) { return Obx(() { if ((PlatformInfo.isMobile || (PlatformInfo.isWeb && controller.isSelectionEnabled() - && controller.isSearchActive() && !_responsiveUtils.isDesktop(context))) + && controller.isSearchActive() && !controller.responsiveUtils.isDesktop(context))) && controller.mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected.isNotEmpty) { return BottomBarThreadSelectionWidget( - _imagePaths, - _responsiveUtils, + controller.imagePaths, + controller.responsiveUtils, controller.mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected, controller.mailboxDashBoardController.selectedMailbox.value, onPressEmailSelectionActionClick: (actionType, selectionEmail) => @@ -247,7 +244,7 @@ class ThreadView extends GetWidget } Widget _buildFloatingButtonCompose(BuildContext context) { - if (_responsiveUtils.isWebDesktop(context)) { + if (controller.responsiveUtils.isWebDesktop(context)) { return const SizedBox.shrink(); } @@ -255,7 +252,7 @@ class ThreadView extends GetWidget if (controller.isAllSearchInActive) { return Container( padding: PlatformInfo.isMobile && controller.listEmailSelected.isNotEmpty - ? EdgeInsets.only(bottom: _responsiveUtils.isTabletLarge(context) ? 85 : 70) + ? EdgeInsets.only(bottom: controller.responsiveUtils.isTabletLarge(context) ? 85 : 70) : EdgeInsets.zero, child: ComposeFloatingButton( scrollController: controller.listEmailController, @@ -278,7 +275,7 @@ class ThreadView extends GetWidget return listFilter.map((filter) => (FilterMessageCupertinoActionSheetActionBuilder( Key('filter_email_${filter.name}'), SvgPicture.asset( - filter.getIcon(_imagePaths), + filter.getIcon(controller.imagePaths), width: 20, height: 20, fit: BoxFit.fill, @@ -288,14 +285,14 @@ class ThreadView extends GetWidget filter.getName(context), filter, optionCurrent: optionCurrent, - iconLeftPadding: _responsiveUtils.isMobile(context) + iconLeftPadding: controller.responsiveUtils.isMobile(context) ? const EdgeInsets.only(left: 12, right: 16) : const EdgeInsets.only(right: 12), - iconRightPadding: _responsiveUtils.isMobile(context) + iconRightPadding: controller.responsiveUtils.isMobile(context) ? const EdgeInsets.only(right: 12) : EdgeInsets.zero, actionSelected: SvgPicture.asset( - _imagePaths.icFilterSelected, + controller.imagePaths.icFilterSelected, width: 20, height: 20, fit: BoxFit.fill)) @@ -305,7 +302,7 @@ class ThreadView extends GetWidget Widget _buildListEmail(BuildContext context) { return Container( - margin: PlatformInfo.isWeb && _responsiveUtils.isDesktop(context) + margin: PlatformInfo.isWeb && controller.responsiveUtils.isDesktop(context) ? const EdgeInsets.symmetric(horizontal: 4) : EdgeInsets.zero, alignment: Alignment.center, @@ -371,7 +368,7 @@ class ThreadView extends GetWidget } Widget _buildEmailItem(BuildContext context, PresentationEmail presentationEmail) { - if (_responsiveUtils.isWebDesktop(context)) { + if (controller.responsiveUtils.isWebDesktop(context)) { return _buildEmailItemDraggable(context, presentationEmail); } else { return _buildEmailItemNotDraggable(context, presentationEmail); @@ -421,7 +418,7 @@ class ThreadView extends GetWidget return Dismissible( key: ValueKey(presentationEmail.id), - direction: controller.getSwipeDirection(_responsiveUtils.isWebDesktop(context), selectModeAll), + direction: controller.getSwipeDirection(controller.responsiveUtils.isWebDesktop(context), selectModeAll), background: Container( color: AppColor.colorItemRecipientSelected, child: Padding( @@ -435,11 +432,11 @@ class ThreadView extends GetWidget radius: 24, child: !presentationEmail.hasRead ? SvgPicture.asset( - _imagePaths.icMarkAsRead, + controller.imagePaths.icMarkAsRead, fit: BoxFit.fill, ) : SvgPicture.asset( - _imagePaths.icUnreadEmail, + controller.imagePaths.icUnreadEmail, fit: BoxFit.fill, colorFilter: AppColor.primaryColor.asFilter(), ), @@ -493,7 +490,7 @@ class ThreadView extends GetWidget PresentationEmail presentationEmail, RelativeRect? position ) { - if (_responsiveUtils.isScreenWithShortestSide(context)) { + if (controller.responsiveUtils.isScreenWithShortestSide(context)) { controller.openContextMenuAction( context, _contextMenuActionTile(context, presentationEmail) @@ -519,7 +516,7 @@ class ThreadView extends GetWidget child: Row( children: [ SvgPicture.asset( - _imagePaths.icFilterMessageAll, + controller.imagePaths.icFilterMessageAll, width: 24, height: 24, fit: BoxFit.fill, @@ -546,7 +543,7 @@ class ThreadView extends GetWidget double? _getItemExtent(BuildContext context) { if (PlatformInfo.isWeb) { - return _responsiveUtils.isDesktop(context) ? 52 : 98; + return controller.responsiveUtils.isDesktop(context) ? 52 : 98; } else { return null; } @@ -559,7 +556,7 @@ class ThreadView extends GetWidget ? EmptyEmailsWidget( key: const Key('empty_thread_view'), title: _getMessageEmptyEmail(context), - iconSVG: _imagePaths.icEmptyEmail, + iconSVG: controller.imagePaths.icEmptyEmail, subTitle: _getSubMessageEmptyEmail(context), onCreateFiltersActionCallback: controller.isNewFolderCreated ? controller.goToCreateEmailRuleView @@ -612,7 +609,7 @@ class ThreadView extends GetWidget return (EmailActionCupertinoActionSheetActionBuilder( const Key('mark_as_spam_or_un_spam_action'), SvgPicture.asset( - mailboxContain?.isSpam == true ? _imagePaths.icNotSpam : _imagePaths.icSpam, + mailboxContain?.isSpam == true ? controller.imagePaths.icNotSpam : controller.imagePaths.icSpam, width: 24, height: 24, fit: BoxFit.fill, @@ -621,10 +618,10 @@ class ThreadView extends GetWidget ? AppLocalizations.of(context).remove_from_spam : AppLocalizations.of(context).mark_as_spam, email, - iconLeftPadding: _responsiveUtils.isMobile(context) + iconLeftPadding: controller.responsiveUtils.isMobile(context) ? const EdgeInsets.only(left: 12, right: 16) : const EdgeInsets.only(right: 12), - iconRightPadding: _responsiveUtils.isMobile(context) + iconRightPadding: controller.responsiveUtils.isMobile(context) ? const EdgeInsets.only(right: 12) : EdgeInsets.zero) ..onActionClick((email) => controller.pressEmailAction(context, @@ -639,17 +636,17 @@ class ThreadView extends GetWidget return (EmailActionCupertinoActionSheetActionBuilder( const Key('open_in_new_tab_action'), SvgPicture.asset( - _imagePaths.icOpenInNewTab, + controller.imagePaths.icOpenInNewTab, width: 24, height: 24, fit: BoxFit.fill, colorFilter: AppColor.colorTextButton.asFilter()), AppLocalizations.of(context).openInNewTab, email, - iconLeftPadding: _responsiveUtils.isMobile(context) + iconLeftPadding: controller.responsiveUtils.isMobile(context) ? const EdgeInsets.only(left: 12, right: 16) : const EdgeInsets.only(right: 12), - iconRightPadding: _responsiveUtils.isMobile(context) + iconRightPadding: controller.responsiveUtils.isMobile(context) ? const EdgeInsets.only(right: 12) : EdgeInsets.zero) ..onActionClick((email) { @@ -677,7 +674,7 @@ class ThreadView extends GetWidget return PopupMenuItem( padding: EdgeInsets.zero, child: popupItem( - mailboxContain?.isSpam == true ? _imagePaths.icNotSpam : _imagePaths.icSpam, + mailboxContain?.isSpam == true ? controller.imagePaths.icNotSpam : controller.imagePaths.icSpam, mailboxContain?.isSpam == true ? AppLocalizations.of(context).remove_from_spam : AppLocalizations.of(context).mark_as_spam, @@ -705,7 +702,7 @@ class ThreadView extends GetWidget return PopupMenuItem( padding: EdgeInsets.zero, child: popupItem( - _imagePaths.icOpenInNewTab, + controller.imagePaths.icOpenInNewTab, AppLocalizations.of(context).openInNewTab, colorIcon: AppColor.colorTextButton, styleName: const TextStyle( @@ -730,19 +727,19 @@ class ThreadView extends GetWidget if (success is MarkAsMailboxReadLoading) { return Padding( padding: EdgeInsets.only( - top: _responsiveUtils.isDesktop(context) ? 16 : 0, + top: controller.responsiveUtils.isDesktop(context) ? 16 : 0, left: 16, right: 16, - bottom: _responsiveUtils.isDesktop(context) ? 0 : 16), + bottom: controller.responsiveUtils.isDesktop(context) ? 0 : 16), child: horizontalLoadingWidget); } else if (success is UpdatingMarkAsMailboxReadState) { final percent = success.countRead / success.totalUnread; return Padding( padding: EdgeInsets.only( - top: _responsiveUtils.isDesktop(context) ? 16 : 0, + top: controller.responsiveUtils.isDesktop(context) ? 16 : 0, left: 16, right: 16, - bottom: _responsiveUtils.isDesktop(context) ? 0 : 16), + bottom: controller.responsiveUtils.isDesktop(context) ? 0 : 16), child: horizontalPercentLoadingWidget(percent)); } return const SizedBox.shrink(); diff --git a/lib/features/upload/presentation/controller/upload_controller.dart b/lib/features/upload/presentation/controller/upload_controller.dart index 282cb6fbb..7d5d23316 100644 --- a/lib/features/upload/presentation/controller/upload_controller.dart +++ b/lib/features/upload/presentation/controller/upload_controller.dart @@ -1,10 +1,8 @@ import 'package:async/async.dart'; import 'package:collection/collection.dart'; -import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/utils/app_logger.dart'; import 'package:dartz/dartz.dart'; import 'package:dio/dio.dart'; @@ -27,13 +25,9 @@ import 'package:tmail_ui_user/features/upload/presentation/model/upload_file_sta import 'package:tmail_ui_user/features/upload/presentation/model/upload_file_status.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; -import 'package:uuid/uuid.dart'; class UploadController extends BaseController { - final _imagePaths = Get.find(); - final _appToast = Get.find(); - final _uuid = Get.find(); final _mailboxDashBoardController = Get.find(); final UploadAttachmentInteractor _uploadAttachmentInteractor; @@ -130,11 +124,11 @@ class UploadController extends BaseController { _deleteInlineFileUploaded(failure.uploadId); if (currentContext != null && currentOverlayContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).thisImageCannotBeAdded, leadingSVGIconColor: Colors.white, - leadingSVGIcon: _imagePaths.icInsertImage); + leadingSVGIcon: imagePaths.icInsertImage); } } }, @@ -158,7 +152,7 @@ class UploadController extends BaseController { log('UploadController::_handleProgressUploadInlineImageStateStream():succeed[${success.uploadId}]'); final inlineAttachment = success.attachment.toAttachmentWithDisposition( disposition: ContentDisposition.inline, - cid: _uuid.v1() + cid: uuid.v1() ); final uploadFileState = _uploadingStateInlineFiles.getUploadFileStateById(success.uploadId); @@ -256,21 +250,21 @@ class UploadController extends BaseController { void _handleUploadAttachmentsFailure(ErrorAttachmentUploadState failure) { if (currentContext != null && currentOverlayContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, '${AppLocalizations.of(currentContext!).can_not_upload_this_file_as_attachments}. ${failure.exception ?? ''}', leadingSVGIconColor: Colors.white, - leadingSVGIcon: _imagePaths.icAttachment); + leadingSVGIcon: imagePaths.icAttachment); } } void _handleUploadAttachmentsSuccess(SuccessAttachmentUploadState success) { if (currentContext != null && currentOverlayContext != null && _uploadingStateFiles.allSuccess) { - _appToast.showToastSuccessMessage( + appToast.showToastSuccessMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).attachments_uploaded_successfully, leadingSVGIconColor: Colors.white, - leadingSVGIcon: _imagePaths.icAttachment); + leadingSVGIcon: imagePaths.icAttachment); } } @@ -361,19 +355,19 @@ class UploadController extends BaseController { if (failure is UploadAttachmentFailure) { if (failure.isInline) { if (currentContext != null && currentOverlayContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).thisImageCannotBeAdded, leadingSVGIconColor: Colors.white, - leadingSVGIcon: _imagePaths.icInsertImage); + leadingSVGIcon: imagePaths.icInsertImage); } } else { if (currentContext != null && currentOverlayContext != null) { - _appToast.showToastErrorMessage( + appToast.showToastErrorMessage( currentOverlayContext!, AppLocalizations.of(currentContext!).can_not_upload_this_file_as_attachments, leadingSVGIconColor: Colors.white, - leadingSVGIcon: _imagePaths.icAttachment); + leadingSVGIcon: imagePaths.icAttachment); } } } diff --git a/lib/main/bindings/credential/credential_bindings.dart b/lib/main/bindings/credential/credential_bindings.dart index f4ca49ae9..7f3e6bb5f 100644 --- a/lib/main/bindings/credential/credential_bindings.dart +++ b/lib/main/bindings/credential/credential_bindings.dart @@ -27,6 +27,7 @@ import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_i 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/login/domain/usecases/update_authentication_account_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart'; import 'package:tmail_ui_user/main/exceptions/cache_exception_thrower.dart'; import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart'; @@ -59,6 +60,7 @@ class CredentialBindings extends InteractorsBindings { Get.find(), Get.find() )); + Get.put(UpdateAuthenticationAccountInteractor(Get.find())); } @override