TF-2311 Sync use variables in BaseController to avoid wasting memory
Signed-off-by: dab246 <tdvu@linagora.com> Signed-off-by: dab246 <tdvu@linagora.com> (cherry picked from commit 21ac80615f7bc9e832fd72cb8ae6875c967d3cea)
This commit is contained in:
@@ -1,9 +1,11 @@
|
|||||||
import 'package:contact/contact/model/capability_contact.dart';
|
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/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
import 'package:core/presentation/resources/image_paths.dart';
|
||||||
import 'package:core/presentation/state/failure.dart';
|
import 'package:core/presentation/state/failure.dart';
|
||||||
import 'package:core/presentation/state/success.dart';
|
import 'package:core/presentation/state/success.dart';
|
||||||
import 'package:core/presentation/utils/app_toast.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/presentation/views/toast/tmail_toast.dart';
|
||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:core/utils/fps_manager.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/routes/route_navigation.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||||
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
abstract class BaseController extends GetxController
|
abstract class BaseController extends GetxController
|
||||||
with MessageDialogActionMixin,
|
with MessageDialogActionMixin,
|
||||||
PopupContextMenuActionMixin {
|
PopupContextMenuActionMixin {
|
||||||
|
|
||||||
final CachingManager cachingManager = Get.find<CachingManager>();
|
final CachingManager cachingManager = Get.find<CachingManager>();
|
||||||
final languageCacheManager = Get.find<LanguageCacheManager>();
|
final LanguageCacheManager languageCacheManager = Get.find<LanguageCacheManager>();
|
||||||
final authorizationInterceptors = Get.find<AuthorizationInterceptors>();
|
final AuthorizationInterceptors authorizationInterceptors = Get.find<AuthorizationInterceptors>();
|
||||||
final authorizationIsolateInterceptors = Get.find<AuthorizationInterceptors>(tag: BindingTag.isolateTag);
|
final AuthorizationInterceptors authorizationIsolateInterceptors = Get.find<AuthorizationInterceptors>(tag: BindingTag.isolateTag);
|
||||||
|
final DynamicUrlInterceptors dynamicUrlInterceptors = Get.find<DynamicUrlInterceptors>();
|
||||||
final DeleteCredentialInteractor deleteCredentialInteractor = Get.find<DeleteCredentialInteractor>();
|
final DeleteCredentialInteractor deleteCredentialInteractor = Get.find<DeleteCredentialInteractor>();
|
||||||
final LogoutOidcInteractor logoutOidcInteractor = Get.find<LogoutOidcInteractor>();
|
final LogoutOidcInteractor logoutOidcInteractor = Get.find<LogoutOidcInteractor>();
|
||||||
final DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor = Get.find<DeleteAuthorityOidcInteractor>();
|
final DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor = Get.find<DeleteAuthorityOidcInteractor>();
|
||||||
|
final AppToast appToast = Get.find<AppToast>();
|
||||||
|
final ImagePaths imagePaths = Get.find<ImagePaths>();
|
||||||
|
final ResponsiveUtils responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
|
final Uuid uuid = Get.find<Uuid>();
|
||||||
|
|
||||||
final _fcmReceiver = FcmReceiver.instance;
|
final _fcmReceiver = FcmReceiver.instance;
|
||||||
bool _isFcmEnabled = false;
|
bool _isFcmEnabled = false;
|
||||||
|
|
||||||
GetFCMSubscriptionLocalInteractor? _getSubscriptionLocalInteractor;
|
GetFCMSubscriptionLocalInteractor? _getSubscriptionLocalInteractor;
|
||||||
DestroySubscriptionInteractor? _destroySubscriptionInteractor;
|
DestroySubscriptionInteractor? _destroySubscriptionInteractor;
|
||||||
|
|
||||||
final AppToast _appToast = Get.find<AppToast>();
|
|
||||||
final ImagePaths _imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
final viewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
|
final viewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
|
||||||
FpsCallback? fpsCallback;
|
FpsCallback? fpsCallback;
|
||||||
|
|
||||||
@@ -123,12 +129,12 @@ abstract class BaseController extends GetxController
|
|||||||
logError('BaseController::_performFilterExceptionInError(): $error');
|
logError('BaseController::_performFilterExceptionInError(): $error');
|
||||||
if (error is NoNetworkError || error is ConnectionTimeout || error is InternalServerError) {
|
if (error is NoNetworkError || error is ConnectionTimeout || error is InternalServerError) {
|
||||||
if (PlatformInfo.isWeb && currentOverlayContext != null && currentContext != null) {
|
if (PlatformInfo.isWeb && currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).no_internet_connection,
|
AppLocalizations.of(currentContext!).no_internet_connection,
|
||||||
actionName: AppLocalizations.of(currentContext!).skip,
|
actionName: AppLocalizations.of(currentContext!).skip,
|
||||||
onActionClick: ToastView.dismiss,
|
onActionClick: ToastView.dismiss,
|
||||||
leadingSVGIcon: _imagePaths.icNotConnection,
|
leadingSVGIcon: imagePaths.icNotConnection,
|
||||||
backgroundColor: AppColor.textFieldErrorBorderColor,
|
backgroundColor: AppColor.textFieldErrorBorderColor,
|
||||||
textColor: Colors.white,
|
textColor: Colors.white,
|
||||||
infinityToast: true,
|
infinityToast: true,
|
||||||
@@ -137,7 +143,7 @@ abstract class BaseController extends GetxController
|
|||||||
return error;
|
return error;
|
||||||
} else if (error is BadCredentialsException) {
|
} else if (error is BadCredentialsException) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).badCredentials
|
AppLocalizations.of(currentContext!).badCredentials
|
||||||
);
|
);
|
||||||
@@ -145,7 +151,7 @@ abstract class BaseController extends GetxController
|
|||||||
return error;
|
return error;
|
||||||
} else if (error is ConnectionError) {
|
} else if (error is ConnectionError) {
|
||||||
if (authorizationInterceptors.isAppRunning && currentOverlayContext != null && currentContext != null) {
|
if (authorizationInterceptors.isAppRunning && currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).connectionError
|
AppLocalizations.of(currentContext!).connectionError
|
||||||
);
|
);
|
||||||
@@ -164,38 +170,36 @@ abstract class BaseController extends GetxController
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (exception is BadCredentialsException || exception is ConnectionError) {
|
if (exception is BadCredentialsException || exception is ConnectionError) {
|
||||||
performInvokeLogoutAction();
|
clearDataAndGoToLoginPage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleFailureViewState(Failure failure) {
|
void handleFailureViewState(Failure failure) async {
|
||||||
logError('BaseController::handleFailureViewState(): ${failure.runtimeType}');
|
logError('BaseController::handleFailureViewState(): ${failure.runtimeType}');
|
||||||
if (failure is LogoutOidcFailure) {
|
if (failure is LogoutOidcFailure) {
|
||||||
if (_isFcmEnabled) {
|
if (_isFcmEnabled) {
|
||||||
_getSubscriptionLocalAction();
|
_getSubscriptionLocalAction();
|
||||||
} else {
|
} else {
|
||||||
_logoutOIDCAction();
|
await clearDataAndGoToLoginPage();
|
||||||
}
|
}
|
||||||
} else if (failure is GetFCMSubscriptionLocalFailure) {
|
} else if (failure is GetFCMSubscriptionLocalFailure ||
|
||||||
performInvokeLogoutAction();
|
failure is DestroySubscriptionFailure) {
|
||||||
} else if (failure is DestroySubscriptionFailure) {
|
await clearDataAndGoToLoginPage();
|
||||||
performInvokeLogoutAction();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleSuccessViewState(Success success) {
|
void handleSuccessViewState(Success success) async {
|
||||||
log('BaseController::handleSuccessViewState(): ${success.runtimeType}');
|
log('BaseController::handleSuccessViewState(): ${success.runtimeType}');
|
||||||
if (success is LogoutOidcSuccess) {
|
if (success is LogoutOidcSuccess) {
|
||||||
if (_isFcmEnabled) {
|
if (_isFcmEnabled) {
|
||||||
_getSubscriptionLocalAction();
|
_getSubscriptionLocalAction();
|
||||||
} else {
|
} else {
|
||||||
_logoutOIDCAction();
|
await clearDataAndGoToLoginPage();
|
||||||
}
|
}
|
||||||
} else if (success is GetFCMSubscriptionLocalSuccess) {
|
} else if (success is GetFCMSubscriptionLocalSuccess) {
|
||||||
final subscriptionId = success.fcmSubscription.subscriptionId;
|
_destroySubscriptionAction(success.fcmSubscription.subscriptionId);
|
||||||
_destroySubscriptionAction(subscriptionId);
|
|
||||||
} else if (success is DestroySubscriptionSuccess) {
|
} else if (success is DestroySubscriptionSuccess) {
|
||||||
performInvokeLogoutAction();
|
await clearDataAndGoToLoginPage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -275,7 +279,7 @@ abstract class BaseController extends GetxController
|
|||||||
bool get isAuthenticatedWithOidc => authenticationType == AuthenticationType.oidc;
|
bool get isAuthenticatedWithOidc => authenticationType == AuthenticationType.oidc;
|
||||||
|
|
||||||
bool _isFcmActivated(Session session, AccountId accountId) =>
|
bool _isFcmActivated(Session session, AccountId accountId) =>
|
||||||
[FirebaseCapability.fcmIdentifier].isSupported(session, accountId) && AppConfig.fcmAvailable;
|
FirebaseCapability.fcmIdentifier.isSupported(session, accountId) && AppConfig.fcmAvailable;
|
||||||
|
|
||||||
void goToLogin({LoginArguments? arguments}) {
|
void goToLogin({LoginArguments? arguments}) {
|
||||||
if (Get.currentRoute != AppRoutes.login) {
|
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) {
|
if (session == null || accountId == null) {
|
||||||
logError('BaseController::logout(): Session is $session OR AccountId is $accountId');
|
await clearDataAndGoToLoginPage();
|
||||||
performInvokeLogoutAction();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_isFcmEnabled = _isFcmActivated(session, accountId);
|
_isFcmEnabled = _isFcmActivated(session, accountId);
|
||||||
@@ -296,71 +299,74 @@ abstract class BaseController extends GetxController
|
|||||||
if (_isFcmEnabled) {
|
if (_isFcmEnabled) {
|
||||||
_getSubscriptionLocalAction();
|
_getSubscriptionLocalAction();
|
||||||
} else {
|
} else {
|
||||||
_logoutAction();
|
await clearDataAndGoToLoginPage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _destroySubscriptionAction(String subscriptionId) {
|
void _destroySubscriptionAction(String subscriptionId) async {
|
||||||
try {
|
_destroySubscriptionInteractor = getBinding<DestroySubscriptionInteractor>();
|
||||||
_destroySubscriptionInteractor = Get.find<DestroySubscriptionInteractor>();
|
if (_destroySubscriptionInteractor != null) {
|
||||||
consumeState(_destroySubscriptionInteractor!.execute(subscriptionId));
|
consumeState(_destroySubscriptionInteractor!.execute(subscriptionId));
|
||||||
} catch(e) {
|
|
||||||
logError('BaseController::destroySubscriptionAction(): exception: $e');
|
|
||||||
performInvokeLogoutAction();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void _getSubscriptionLocalAction() {
|
|
||||||
try {
|
|
||||||
_getSubscriptionLocalInteractor = Get.find<GetFCMSubscriptionLocalInteractor>();
|
|
||||||
consumeState(_getSubscriptionLocalInteractor!.execute());
|
|
||||||
} catch (e) {
|
|
||||||
logError('BaseController::getSubscriptionLocalAction(): exception: $e');
|
|
||||||
performInvokeLogoutAction();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void performInvokeLogoutAction() {
|
|
||||||
log('BaseController::performInvokeLogoutAction():');
|
|
||||||
if (isAuthenticatedWithOidc) {
|
|
||||||
_logoutOIDCAction();
|
|
||||||
} else {
|
} else {
|
||||||
_logoutAction();
|
await clearDataAndGoToLoginPage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _logoutAction() async {
|
void _getSubscriptionLocalAction() async {
|
||||||
log('BaseController::_logoutAction():');
|
_getSubscriptionLocalInteractor = getBinding<GetFCMSubscriptionLocalInteractor>();
|
||||||
|
if (_getSubscriptionLocalInteractor != null) {
|
||||||
|
consumeState(_getSubscriptionLocalInteractor!.execute());
|
||||||
|
} else {
|
||||||
|
await clearDataAndGoToLoginPage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> clearDataAndGoToLoginPage() async {
|
||||||
|
log('BaseController::clearDataAndGoToLoginPage:');
|
||||||
|
await clearAllData();
|
||||||
|
goToLogin(arguments: LoginArguments(
|
||||||
|
isAuthenticatedWithOidc
|
||||||
|
? LoginFormType.ssoForm
|
||||||
|
: LoginFormType.credentialForm
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> clearAllData() async {
|
||||||
|
if (isAuthenticatedWithOidc) {
|
||||||
|
await _clearOidcAuthData();
|
||||||
|
} else {
|
||||||
|
await _clearBasicAuthData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _clearBasicAuthData() async {
|
||||||
await Future.wait([
|
await Future.wait([
|
||||||
deleteCredentialInteractor.execute(),
|
deleteCredentialInteractor.execute(),
|
||||||
cachingManager.clearAll(),
|
cachingManager.clearAll(),
|
||||||
languageCacheManager.removeLanguage(),
|
languageCacheManager.removeLanguage(),
|
||||||
]);
|
]);
|
||||||
cachingManager.clearAllFileInStorage();
|
await cachingManager.clearAllFileInStorage();
|
||||||
authorizationInterceptors.clear();
|
authorizationInterceptors.clear();
|
||||||
authorizationIsolateInterceptors.clear();
|
authorizationIsolateInterceptors.clear();
|
||||||
if (_isFcmEnabled) {
|
if (_isFcmEnabled) {
|
||||||
_fcmReceiver.deleteFcmToken();
|
_fcmReceiver.deleteFcmToken();
|
||||||
}
|
}
|
||||||
await cachingManager.closeHive();
|
await cachingManager.closeHive();
|
||||||
goToLogin(arguments: LoginArguments(LoginFormType.credentialForm));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _logoutOIDCAction() async {
|
Future<void> _clearOidcAuthData() async {
|
||||||
log('BaseController::_logoutOIDCAction():');
|
|
||||||
await Future.wait([
|
await Future.wait([
|
||||||
deleteAuthorityOidcInteractor.execute(),
|
deleteAuthorityOidcInteractor.execute(),
|
||||||
cachingManager.clearAll(),
|
cachingManager.clearAll(),
|
||||||
languageCacheManager.removeLanguage(),
|
languageCacheManager.removeLanguage(),
|
||||||
]);
|
]);
|
||||||
cachingManager.clearAllFileInStorage();
|
await cachingManager.clearAllFileInStorage();
|
||||||
authorizationIsolateInterceptors.clear();
|
authorizationIsolateInterceptors.clear();
|
||||||
authorizationInterceptors.clear();
|
authorizationInterceptors.clear();
|
||||||
if (_isFcmEnabled) {
|
if (_isFcmEnabled) {
|
||||||
_fcmReceiver.deleteFcmToken();
|
_fcmReceiver.deleteFcmToken();
|
||||||
}
|
}
|
||||||
await cachingManager.closeHive();
|
await cachingManager.closeHive();
|
||||||
goToLogin(arguments: LoginArguments(LoginFormType.ssoForm));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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/features/upload/presentation/controller/upload_controller.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
|
||||||
import 'package:universal_html/html.dart' as html;
|
import 'package:universal_html/html.dart' as html;
|
||||||
|
|
||||||
class ComposerController extends BaseController {
|
class ComposerController extends BaseController {
|
||||||
@@ -94,10 +93,6 @@ class ComposerController extends BaseController {
|
|||||||
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
||||||
final richTextMobileTabletController = Get.find<RichTextMobileTabletController>();
|
final richTextMobileTabletController = Get.find<RichTextMobileTabletController>();
|
||||||
final networkConnectionController = Get.find<NetworkConnectionController>();
|
final networkConnectionController = Get.find<NetworkConnectionController>();
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final _uuid = Get.find<Uuid>();
|
|
||||||
final _dynamicUrlInterceptors = Get.find<DynamicUrlInterceptors>();
|
final _dynamicUrlInterceptors = Get.find<DynamicUrlInterceptors>();
|
||||||
|
|
||||||
final expandModeAttachments = ExpandMode.EXPAND.obs;
|
final expandModeAttachments = ExpandMode.EXPAND.obs;
|
||||||
@@ -726,7 +721,7 @@ class ComposerController extends BaseController {
|
|||||||
final inReplyTo = _generateInReplyTo(arguments);
|
final inReplyTo = _generateInReplyTo(arguments);
|
||||||
final references = _generateReferences(arguments);
|
final references = _generateReferences(arguments);
|
||||||
|
|
||||||
final generatePartId = PartId(_uuid.v1());
|
final generatePartId = PartId(uuid.v1());
|
||||||
|
|
||||||
return Email(
|
return Email(
|
||||||
mailboxIds: mailboxIds.isNotEmpty ? mailboxIds : null,
|
mailboxIds: mailboxIds.isNotEmpty ? mailboxIds : null,
|
||||||
@@ -828,7 +823,7 @@ class ComposerController extends BaseController {
|
|||||||
AppLocalizations.of(context).add_recipients,
|
AppLocalizations.of(context).add_recipients,
|
||||||
onConfirmAction: () => {isSendEmailLoading.value = false},
|
onConfirmAction: () => {isSendEmailLoading.value = false},
|
||||||
title: AppLocalizations.of(context).sending_failed,
|
title: AppLocalizations.of(context).sending_failed,
|
||||||
icon: SvgPicture.asset(_imagePaths.icSendToastError, fit: BoxFit.fill),
|
icon: SvgPicture.asset(imagePaths.icSendToastError, fit: BoxFit.fill),
|
||||||
hasCancelButton: false);
|
hasCancelButton: false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -848,7 +843,7 @@ class ComposerController extends BaseController {
|
|||||||
isSendEmailLoading.value = false;
|
isSendEmailLoading.value = false;
|
||||||
},
|
},
|
||||||
title: AppLocalizations.of(context).sending_failed,
|
title: AppLocalizations.of(context).sending_failed,
|
||||||
icon: SvgPicture.asset(_imagePaths.icSendToastError, fit: BoxFit.fill),
|
icon: SvgPicture.asset(imagePaths.icSendToastError, fit: BoxFit.fill),
|
||||||
hasCancelButton: false);
|
hasCancelButton: false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -860,7 +855,7 @@ class ComposerController extends BaseController {
|
|||||||
onConfirmAction: () => _handleSendMessages(context),
|
onConfirmAction: () => _handleSendMessages(context),
|
||||||
onCancelAction: () => {isSendEmailLoading.value = false},
|
onCancelAction: () => {isSendEmailLoading.value = false},
|
||||||
title: AppLocalizations.of(context).empty_subject,
|
title: AppLocalizations.of(context).empty_subject,
|
||||||
icon: SvgPicture.asset(_imagePaths.icEmpty, fit: BoxFit.fill),
|
icon: SvgPicture.asset(imagePaths.icEmpty, fit: BoxFit.fill),
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -872,7 +867,7 @@ class ComposerController extends BaseController {
|
|||||||
AppLocalizations.of(context).got_it,
|
AppLocalizations.of(context).got_it,
|
||||||
onConfirmAction: () => {isSendEmailLoading.value = false},
|
onConfirmAction: () => {isSendEmailLoading.value = false},
|
||||||
title: AppLocalizations.of(context).sending_failed,
|
title: AppLocalizations.of(context).sending_failed,
|
||||||
icon: SvgPicture.asset(_imagePaths.icSendToastError, fit: BoxFit.fill),
|
icon: SvgPicture.asset(imagePaths.icSendToastError, fit: BoxFit.fill),
|
||||||
hasCancelButton: false);
|
hasCancelButton: false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -885,7 +880,7 @@ class ComposerController extends BaseController {
|
|||||||
AppLocalizations.of(context).got_it,
|
AppLocalizations.of(context).got_it,
|
||||||
onConfirmAction: () => {isSendEmailLoading.value = false},
|
onConfirmAction: () => {isSendEmailLoading.value = false},
|
||||||
title: AppLocalizations.of(context).sending_failed,
|
title: AppLocalizations.of(context).sending_failed,
|
||||||
icon: SvgPicture.asset(_imagePaths.icSendToastError, fit: BoxFit.fill),
|
icon: SvgPicture.asset(imagePaths.icSendToastError, fit: BoxFit.fill),
|
||||||
hasCancelButton: false);
|
hasCancelButton: false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -957,7 +952,7 @@ class ComposerController extends BaseController {
|
|||||||
|
|
||||||
final mailboxRequest = mailboxDashBoardController.outboxMailbox?.id == null
|
final mailboxRequest = mailboxDashBoardController.outboxMailbox?.id == null
|
||||||
? CreateNewMailboxRequest(
|
? CreateNewMailboxRequest(
|
||||||
Id(_uuid.v1()),
|
Id(uuid.v1()),
|
||||||
MailboxName(PresentationMailbox.outboxRole.inCaps)
|
MailboxName(PresentationMailbox.outboxRole.inCaps)
|
||||||
)
|
)
|
||||||
: null;
|
: null;
|
||||||
@@ -985,7 +980,7 @@ class ComposerController extends BaseController {
|
|||||||
},
|
},
|
||||||
onCancelAction: _closeComposerAction,
|
onCancelAction: _closeComposerAction,
|
||||||
title: AppLocalizations.of(context).youAreInOfflineMode,
|
title: AppLocalizations.of(context).youAreInOfflineMode,
|
||||||
icon: SvgPicture.asset(_imagePaths.icDialogOfflineMode),
|
icon: SvgPicture.asset(imagePaths.icDialogOfflineMode),
|
||||||
alignCenter: true,
|
alignCenter: true,
|
||||||
messageStyle: const TextStyle(
|
messageStyle: const TextStyle(
|
||||||
color: AppColor.colorTitleSendingItem,
|
color: AppColor.colorTitleSendingItem,
|
||||||
@@ -1124,7 +1119,7 @@ class ComposerController extends BaseController {
|
|||||||
void _pickFileFailure(Failure failure) {
|
void _pickFileFailure(Failure failure) {
|
||||||
if (failure is LocalFilePickerFailure) {
|
if (failure is LocalFilePickerFailure) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).can_not_upload_this_file_as_attachments);
|
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 {
|
void insertImage(BuildContext context, double maxWith) async {
|
||||||
clearFocusEditor(context);
|
clearFocusEditor(context);
|
||||||
|
|
||||||
if (_responsiveUtils.isMobile(context)) {
|
if (responsiveUtils.isMobile(context)) {
|
||||||
maxWithEditor = maxWith - 40;
|
maxWithEditor = maxWith - 40;
|
||||||
} else {
|
} else {
|
||||||
maxWithEditor = maxWith - 120;
|
maxWithEditor = maxWith - 120;
|
||||||
@@ -1779,7 +1774,7 @@ class ComposerController extends BaseController {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (context.mounted) {
|
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,
|
BuildContext context,
|
||||||
) {
|
) {
|
||||||
scrollController.jumpTo(
|
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 {
|
) async {
|
||||||
log('ComposerController::handleImageUploadSuccess:NAME: ${fileUpload.name} | TYPE: ${fileUpload.type} | SIZE: ${fileUpload.size}');
|
log('ComposerController::handleImageUploadSuccess:NAME: ${fileUpload.name} | TYPE: ${fileUpload.type} | SIZE: ${fileUpload.size}');
|
||||||
if (fileUpload.base64 == null) {
|
if (fileUpload.base64 == null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
context,
|
context,
|
||||||
AppLocalizations.of(context).can_not_upload_this_file_as_attachments
|
AppLocalizations.of(context).can_not_upload_this_file_as_attachments
|
||||||
);
|
);
|
||||||
@@ -1990,7 +1985,7 @@ class ComposerController extends BaseController {
|
|||||||
if (fileInfo != null) {
|
if (fileInfo != null) {
|
||||||
_uploadInlineAttachmentsAction(fileInfo);
|
_uploadInlineAttachmentsAction(fileInfo);
|
||||||
} else if (context.mounted) {
|
} else if (context.mounted) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
context,
|
context,
|
||||||
AppLocalizations.of(context).can_not_upload_this_file_as_attachments
|
AppLocalizations.of(context).can_not_upload_this_file_as_attachments
|
||||||
);
|
);
|
||||||
@@ -2000,7 +1995,7 @@ class ComposerController extends BaseController {
|
|||||||
if (fileInfo != null) {
|
if (fileInfo != null) {
|
||||||
_addAttachmentFromDragAndDrop(fileInfo: fileInfo);
|
_addAttachmentFromDragAndDrop(fileInfo: fileInfo);
|
||||||
} else if (context.mounted) {
|
} else if (context.mounted) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
context,
|
context,
|
||||||
AppLocalizations.of(context).can_not_upload_this_file_as_attachments
|
AppLocalizations.of(context).can_not_upload_this_file_as_attachments
|
||||||
);
|
);
|
||||||
@@ -2015,7 +2010,7 @@ class ComposerController extends BaseController {
|
|||||||
String? base64Str,
|
String? base64Str,
|
||||||
}) {
|
}) {
|
||||||
logError('ComposerController::handleImageUploadFailure:fileUpload: $fileUpload | uploadError: $uploadError');
|
logError('ComposerController::handleImageUploadFailure:fileUpload: $fileUpload | uploadError: $uploadError');
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
context,
|
context,
|
||||||
'${AppLocalizations.of(context).can_not_upload_this_file_as_attachments}. (${uploadError.name})'
|
'${AppLocalizations.of(context).can_not_upload_this_file_as_attachments}. (${uploadError.name})'
|
||||||
);
|
);
|
||||||
@@ -2083,7 +2078,7 @@ class ComposerController extends BaseController {
|
|||||||
var contentHtml = '';
|
var contentHtml = '';
|
||||||
|
|
||||||
if (PlatformInfo.isWeb) {
|
if (PlatformInfo.isWeb) {
|
||||||
if (_responsiveUtils.isDesktop(context) &&
|
if (responsiveUtils.isDesktop(context) &&
|
||||||
screenDisplayMode.value == ScreenDisplayMode.minimize) {
|
screenDisplayMode.value == ScreenDisplayMode.minimize) {
|
||||||
contentHtml = _textEditorWeb ?? '';
|
contentHtml = _textEditorWeb ?? '';
|
||||||
} else {
|
} else {
|
||||||
@@ -2176,7 +2171,7 @@ class ComposerController extends BaseController {
|
|||||||
(
|
(
|
||||||
FromComposerBottomSheetBuilder(
|
FromComposerBottomSheetBuilder(
|
||||||
context,
|
context,
|
||||||
_imagePaths,
|
imagePaths,
|
||||||
listFromIdentities,
|
listFromIdentities,
|
||||||
scrollControllerIdentities,
|
scrollControllerIdentities,
|
||||||
searchIdentitiesInputController
|
searchIdentitiesInputController
|
||||||
|
|||||||
@@ -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/context_menu/simple_context_menu_action_builder.dart';
|
||||||
import 'package:core/presentation/views/responsive/responsive_widget.dart';
|
import 'package:core/presentation/views/responsive/responsive_widget.dart';
|
||||||
import 'package:file_picker/file_picker.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<ComposerController> {
|
class ComposerView extends GetWidget<ComposerController> {
|
||||||
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
const ComposerView({Key? key}) : super(key: key);
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
ComposerView({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return ResponsiveWidget(
|
return ResponsiveWidget(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
mobile: MobileContainerView(
|
mobile: MobileContainerView(
|
||||||
keyboardRichTextController: controller.keyboardRichTextController,
|
keyboardRichTextController: controller.keyboardRichTextController,
|
||||||
onCloseViewAction: () => controller.saveToDraftAndClose(context, canPop: false),
|
onCloseViewAction: () => controller.saveToDraftAndClose(context, canPop: false),
|
||||||
@@ -55,13 +50,13 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
: null,
|
: null,
|
||||||
backgroundColor: MobileAppBarComposerWidgetStyle.backgroundColor,
|
backgroundColor: MobileAppBarComposerWidgetStyle.backgroundColor,
|
||||||
childBuilder: (context) => SafeArea(
|
childBuilder: (context) => SafeArea(
|
||||||
left: !_responsiveUtils.isLandscapeMobile(context),
|
left: !controller.responsiveUtils.isLandscapeMobile(context),
|
||||||
right: !_responsiveUtils.isLandscapeMobile(context),
|
right: !controller.responsiveUtils.isLandscapeMobile(context),
|
||||||
child: Container(
|
child: Container(
|
||||||
color: ComposerStyle.mobileBackgroundColor,
|
color: ComposerStyle.mobileBackgroundColor,
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
if (_responsiveUtils.isLandscapeMobile(context))
|
if (controller.responsiveUtils.isLandscapeMobile(context))
|
||||||
Obx(() => LandscapeAppBarComposerWidget(
|
Obx(() => LandscapeAppBarComposerWidget(
|
||||||
isSendButtonEnabled: controller.isEnableEmailSendButton.value,
|
isSendButtonEnabled: controller.isEnableEmailSendButton.value,
|
||||||
onCloseViewAction: () => controller.saveToDraftAndClose(context),
|
onCloseViewAction: () => controller.saveToDraftAndClose(context),
|
||||||
@@ -103,8 +98,8 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
if (controller.fromRecipientState.value == PrefixRecipientState.enabled)
|
if (controller.fromRecipientState.value == PrefixRecipientState.enabled)
|
||||||
FromComposerMobileWidget(
|
FromComposerMobileWidget(
|
||||||
selectedIdentity: controller.identitySelected.value,
|
selectedIdentity: controller.identitySelected.value,
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
margin: ComposerStyle.mobileRecipientMargin,
|
margin: ComposerStyle.mobileRecipientMargin,
|
||||||
padding: ComposerStyle.mobileRecipientPadding,
|
padding: ComposerStyle.mobileRecipientPadding,
|
||||||
onTap: () => controller.openSelectIdentityBottomSheet(context)
|
onTap: () => controller.openSelectIdentityBottomSheet(context)
|
||||||
@@ -252,7 +247,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
items: controller.listFromIdentities,
|
items: controller.listFromIdentities,
|
||||||
itemSelected: controller.identitySelected.value,
|
itemSelected: controller.identitySelected.value,
|
||||||
dropdownKey: controller.identityDropdownKey,
|
dropdownKey: controller.identityDropdownKey,
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
padding: ComposerStyle.mobileRecipientPadding,
|
padding: ComposerStyle.mobileRecipientPadding,
|
||||||
margin: ComposerStyle.mobileRecipientMargin,
|
margin: ComposerStyle.mobileRecipientMargin,
|
||||||
onChangeIdentity: controller.onChangeIdentity,
|
onChangeIdentity: controller.onChangeIdentity,
|
||||||
@@ -390,7 +385,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
Widget _pickPhotoAndVideoAction(BuildContext context) {
|
Widget _pickPhotoAndVideoAction(BuildContext context) {
|
||||||
return (SimpleContextMenuActionBuilder(
|
return (SimpleContextMenuActionBuilder(
|
||||||
const Key('pick_photo_and_video_context_menu_action'),
|
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)
|
AppLocalizations.of(context).photos_and_videos)
|
||||||
..onActionClick((_) => controller.openFilePickerByType(context, FileType.media)))
|
..onActionClick((_) => controller.openFilePickerByType(context, FileType.media)))
|
||||||
.build();
|
.build();
|
||||||
@@ -399,7 +394,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
Widget _browseFileAction(BuildContext context) {
|
Widget _browseFileAction(BuildContext context) {
|
||||||
return (SimpleContextMenuActionBuilder(
|
return (SimpleContextMenuActionBuilder(
|
||||||
const Key('browse_file_context_menu_action'),
|
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)
|
AppLocalizations.of(context).browse)
|
||||||
..onActionClick((_) => controller.openFilePickerByType(context, FileType.any)))
|
..onActionClick((_) => controller.openFilePickerByType(context, FileType.any)))
|
||||||
.build();
|
.build();
|
||||||
@@ -410,11 +405,11 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
_imagePaths.icReadReceipt,
|
controller.imagePaths.icReadReceipt,
|
||||||
AppLocalizations.of(context).requestReadReceipt,
|
AppLocalizations.of(context).requestReadReceipt,
|
||||||
styleName: ComposerStyle.popupItemTextStyle,
|
styleName: ComposerStyle.popupItemTextStyle,
|
||||||
padding: ComposerStyle.popupItemPadding,
|
padding: ComposerStyle.popupItemPadding,
|
||||||
selectedIcon: _imagePaths.icFilterSelected,
|
selectedIcon: controller.imagePaths.icFilterSelected,
|
||||||
isSelected: controller.hasRequestReadReceipt.value,
|
isSelected: controller.hasRequestReadReceipt.value,
|
||||||
onCallbackAction: () {
|
onCallbackAction: () {
|
||||||
popBack();
|
popBack();
|
||||||
@@ -430,12 +425,12 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
_imagePaths.icReadReceipt,
|
controller.imagePaths.icReadReceipt,
|
||||||
AppLocalizations.of(context).requestReadReceipt,
|
AppLocalizations.of(context).requestReadReceipt,
|
||||||
styleName: ComposerStyle.popupItemTextStyle,
|
styleName: ComposerStyle.popupItemTextStyle,
|
||||||
padding: ComposerStyle.popupItemPadding,
|
padding: ComposerStyle.popupItemPadding,
|
||||||
colorIcon: ComposerStyle.popupItemIconColor,
|
colorIcon: ComposerStyle.popupItemIconColor,
|
||||||
selectedIcon: _imagePaths.icFilterSelected,
|
selectedIcon: controller.imagePaths.icFilterSelected,
|
||||||
isSelected: controller.hasRequestReadReceipt.value,
|
isSelected: controller.hasRequestReadReceipt.value,
|
||||||
onCallbackAction: () {
|
onCallbackAction: () {
|
||||||
popBack();
|
popBack();
|
||||||
@@ -446,7 +441,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
_imagePaths.icSaveToDraft,
|
controller.imagePaths.icSaveToDraft,
|
||||||
AppLocalizations.of(context).saveAsDraft,
|
AppLocalizations.of(context).saveAsDraft,
|
||||||
colorIcon: ComposerStyle.popupItemIconColor,
|
colorIcon: ComposerStyle.popupItemIconColor,
|
||||||
styleName: ComposerStyle.popupItemTextStyle,
|
styleName: ComposerStyle.popupItemTextStyle,
|
||||||
@@ -460,7 +455,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
_imagePaths.icDeleteMailbox,
|
controller.imagePaths.icDeleteMailbox,
|
||||||
AppLocalizations.of(context).delete,
|
AppLocalizations.of(context).delete,
|
||||||
styleName: ComposerStyle.popupItemTextStyle,
|
styleName: ComposerStyle.popupItemTextStyle,
|
||||||
padding: ComposerStyle.popupItemPadding,
|
padding: ComposerStyle.popupItemPadding,
|
||||||
|
|||||||
@@ -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:core/presentation/views/responsive/responsive_widget.dart';
|
||||||
import 'package:file_picker/file_picker.dart';
|
import 'package:file_picker/file_picker.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@@ -30,15 +28,12 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
|||||||
|
|
||||||
class ComposerView extends GetWidget<ComposerController> {
|
class ComposerView extends GetWidget<ComposerController> {
|
||||||
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
const ComposerView({Key? key}) : super(key: key);
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
ComposerView({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return ResponsiveWidget(
|
return ResponsiveWidget(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
mobile: MobileResponsiveContainerView(
|
mobile: MobileResponsiveContainerView(
|
||||||
childBuilder: (context, constraints) {
|
childBuilder: (context, constraints) {
|
||||||
return Column(
|
return Column(
|
||||||
@@ -67,7 +62,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
maxHeight: ComposerStyle.getMaxHeightEmailAddressWidget(
|
maxHeight: ComposerStyle.getMaxHeightEmailAddressWidget(
|
||||||
context,
|
context,
|
||||||
constraints,
|
constraints,
|
||||||
_responsiveUtils
|
controller.responsiveUtils
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
@@ -79,8 +74,8 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
message: controller.identitySelected.value?.email ?? '',
|
message: controller.identitySelected.value?.email ?? '',
|
||||||
child: FromComposerMobileWidget(
|
child: FromComposerMobileWidget(
|
||||||
selectedIdentity: controller.identitySelected.value,
|
selectedIdentity: controller.identitySelected.value,
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
margin: ComposerStyle.mobileRecipientMargin,
|
margin: ComposerStyle.mobileRecipientMargin,
|
||||||
padding: ComposerStyle.mobileRecipientPadding,
|
padding: ComposerStyle.mobileRecipientPadding,
|
||||||
onTap: () => controller.openSelectIdentityBottomSheet(context)
|
onTap: () => controller.openSelectIdentityBottomSheet(context)
|
||||||
@@ -247,7 +242,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
maxHeight: ComposerStyle.getMaxHeightEmailAddressWidget(
|
maxHeight: ComposerStyle.getMaxHeightEmailAddressWidget(
|
||||||
context,
|
context,
|
||||||
constraints,
|
constraints,
|
||||||
_responsiveUtils
|
controller.responsiveUtils
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
@@ -259,7 +254,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
items: controller.listFromIdentities,
|
items: controller.listFromIdentities,
|
||||||
itemSelected: controller.identitySelected.value,
|
itemSelected: controller.identitySelected.value,
|
||||||
dropdownKey: controller.identityDropdownKey,
|
dropdownKey: controller.identityDropdownKey,
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
padding: ComposerStyle.desktopRecipientPadding,
|
padding: ComposerStyle.desktopRecipientPadding,
|
||||||
margin: ComposerStyle.desktopRecipientMargin,
|
margin: ComposerStyle.desktopRecipientMargin,
|
||||||
onChangeIdentity: controller.onChangeIdentity,
|
onChangeIdentity: controller.onChangeIdentity,
|
||||||
@@ -477,7 +472,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
maxHeight: ComposerStyle.getMaxHeightEmailAddressWidget(
|
maxHeight: ComposerStyle.getMaxHeightEmailAddressWidget(
|
||||||
context,
|
context,
|
||||||
constraints,
|
constraints,
|
||||||
_responsiveUtils
|
controller.responsiveUtils
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
@@ -489,7 +484,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
items: controller.listFromIdentities,
|
items: controller.listFromIdentities,
|
||||||
itemSelected: controller.identitySelected.value,
|
itemSelected: controller.identitySelected.value,
|
||||||
dropdownKey: controller.identityDropdownKey,
|
dropdownKey: controller.identityDropdownKey,
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
padding: ComposerStyle.tabletRecipientPadding,
|
padding: ComposerStyle.tabletRecipientPadding,
|
||||||
margin: ComposerStyle.tabletRecipientMargin,
|
margin: ComposerStyle.tabletRecipientMargin,
|
||||||
onChangeIdentity: controller.onChangeIdentity,
|
onChangeIdentity: controller.onChangeIdentity,
|
||||||
@@ -683,11 +678,11 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
_imagePaths.icReadReceipt,
|
controller.imagePaths.icReadReceipt,
|
||||||
AppLocalizations.of(context).requestReadReceipt,
|
AppLocalizations.of(context).requestReadReceipt,
|
||||||
styleName: ComposerStyle.popupItemTextStyle,
|
styleName: ComposerStyle.popupItemTextStyle,
|
||||||
padding: ComposerStyle.popupItemPadding,
|
padding: ComposerStyle.popupItemPadding,
|
||||||
selectedIcon: _imagePaths.icFilterSelected,
|
selectedIcon: controller.imagePaths.icFilterSelected,
|
||||||
isSelected: controller.hasRequestReadReceipt.value,
|
isSelected: controller.hasRequestReadReceipt.value,
|
||||||
onCallbackAction: () {
|
onCallbackAction: () {
|
||||||
popBack();
|
popBack();
|
||||||
@@ -703,12 +698,12 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
_imagePaths.icStyleCodeView,
|
controller.imagePaths.icStyleCodeView,
|
||||||
AppLocalizations.of(context).embedCode,
|
AppLocalizations.of(context).embedCode,
|
||||||
styleName: ComposerStyle.popupItemTextStyle,
|
styleName: ComposerStyle.popupItemTextStyle,
|
||||||
colorIcon: ComposerStyle.popupItemIconColor,
|
colorIcon: ComposerStyle.popupItemIconColor,
|
||||||
padding: ComposerStyle.popupItemPadding,
|
padding: ComposerStyle.popupItemPadding,
|
||||||
selectedIcon: _imagePaths.icFilterSelected,
|
selectedIcon: controller.imagePaths.icFilterSelected,
|
||||||
isSelected: controller.richTextWebController.codeViewEnabled,
|
isSelected: controller.richTextWebController.codeViewEnabled,
|
||||||
onCallbackAction: () {
|
onCallbackAction: () {
|
||||||
popBack();
|
popBack();
|
||||||
@@ -719,12 +714,12 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
_imagePaths.icReadReceipt,
|
controller.imagePaths.icReadReceipt,
|
||||||
AppLocalizations.of(context).requestReadReceipt,
|
AppLocalizations.of(context).requestReadReceipt,
|
||||||
styleName: ComposerStyle.popupItemTextStyle,
|
styleName: ComposerStyle.popupItemTextStyle,
|
||||||
padding: ComposerStyle.popupItemPadding,
|
padding: ComposerStyle.popupItemPadding,
|
||||||
colorIcon: ComposerStyle.popupItemIconColor,
|
colorIcon: ComposerStyle.popupItemIconColor,
|
||||||
selectedIcon: _imagePaths.icFilterSelected,
|
selectedIcon: controller.imagePaths.icFilterSelected,
|
||||||
isSelected: controller.hasRequestReadReceipt.value,
|
isSelected: controller.hasRequestReadReceipt.value,
|
||||||
onCallbackAction: () {
|
onCallbackAction: () {
|
||||||
popBack();
|
popBack();
|
||||||
@@ -735,7 +730,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
_imagePaths.icSaveToDraft,
|
controller.imagePaths.icSaveToDraft,
|
||||||
AppLocalizations.of(context).saveAsDraft,
|
AppLocalizations.of(context).saveAsDraft,
|
||||||
colorIcon: ComposerStyle.popupItemIconColor,
|
colorIcon: ComposerStyle.popupItemIconColor,
|
||||||
styleName: ComposerStyle.popupItemTextStyle,
|
styleName: ComposerStyle.popupItemTextStyle,
|
||||||
@@ -749,7 +744,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
_imagePaths.icDeleteMailbox,
|
controller.imagePaths.icDeleteMailbox,
|
||||||
AppLocalizations.of(context).delete,
|
AppLocalizations.of(context).delete,
|
||||||
styleName: ComposerStyle.popupItemTextStyle,
|
styleName: ComposerStyle.popupItemTextStyle,
|
||||||
padding: ComposerStyle.popupItemPadding,
|
padding: ComposerStyle.popupItemPadding,
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
|
|
||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -16,10 +14,7 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
|||||||
|
|
||||||
class ContactView extends GetWidget<ContactController> {
|
class ContactView extends GetWidget<ContactController> {
|
||||||
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
const ContactView({super.key});
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
ContactView({super.key});
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -31,38 +26,38 @@ class ContactView extends GetWidget<ContactController> {
|
|||||||
bottom: false,
|
bottom: false,
|
||||||
left: false,
|
left: false,
|
||||||
right: false,
|
right: false,
|
||||||
top: ContactUtils.supportAppBarTopBorder(context, _responsiveUtils),
|
top: ContactUtils.supportAppBarTopBorder(context, controller.responsiveUtils),
|
||||||
child: Container(
|
child: Container(
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.only(
|
borderRadius: BorderRadius.only(
|
||||||
topLeft: Radius.circular(ContactUtils.getRadiusBorderAppBarTop(
|
topLeft: Radius.circular(ContactUtils.getRadiusBorderAppBarTop(
|
||||||
context,
|
context,
|
||||||
_responsiveUtils)),
|
controller.responsiveUtils)),
|
||||||
topRight: Radius.circular(ContactUtils.getRadiusBorderAppBarTop(
|
topRight: Radius.circular(ContactUtils.getRadiusBorderAppBarTop(
|
||||||
context,
|
context,
|
||||||
_responsiveUtils))),
|
controller.responsiveUtils))),
|
||||||
color: Colors.white),
|
color: Colors.white),
|
||||||
child: ClipRRect(
|
child: ClipRRect(
|
||||||
borderRadius: BorderRadius.only(
|
borderRadius: BorderRadius.only(
|
||||||
topLeft: Radius.circular(ContactUtils.getRadiusBorderAppBarTop(
|
topLeft: Radius.circular(ContactUtils.getRadiusBorderAppBarTop(
|
||||||
context,
|
context,
|
||||||
_responsiveUtils)),
|
controller.responsiveUtils)),
|
||||||
topRight: Radius.circular(ContactUtils.getRadiusBorderAppBarTop(
|
topRight: Radius.circular(ContactUtils.getRadiusBorderAppBarTop(
|
||||||
context,
|
context,
|
||||||
_responsiveUtils))),
|
controller.responsiveUtils))),
|
||||||
child: SafeArea(child: Container(
|
child: SafeArea(child: Container(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
child: Column(children: [
|
child: Column(children: [
|
||||||
Container(
|
Container(
|
||||||
height: 52,
|
height: 52,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
padding: ContactUtils.getPaddingAppBar(context, _responsiveUtils),
|
padding: ContactUtils.getPaddingAppBar(context, controller.responsiveUtils),
|
||||||
child: AppBarContactWidget(
|
child: AppBarContactWidget(
|
||||||
onCloseContactView: () => controller.closeContactView(context))
|
onCloseContactView: () => controller.closeContactView(context))
|
||||||
),
|
),
|
||||||
const Divider(color: AppColor.colorDividerComposer, height: 1),
|
const Divider(color: AppColor.colorDividerComposer, height: 1),
|
||||||
SearchAppBarWidget(
|
SearchAppBarWidget(
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
searchQuery: controller.searchQuery.value,
|
searchQuery: controller.searchQuery.value,
|
||||||
searchFocusNode: controller.textInputSearchFocus,
|
searchFocusNode: controller.textInputSearchFocus,
|
||||||
searchInputController: controller.textInputSearchController,
|
searchInputController: controller.textInputSearchController,
|
||||||
@@ -70,12 +65,12 @@ class ContactView extends GetWidget<ContactController> {
|
|||||||
hasSearchButton: true,
|
hasSearchButton: true,
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
heightSearchBar: 44,
|
heightSearchBar: 44,
|
||||||
margin: ContactUtils.getPaddingSearchInputForm(context, _responsiveUtils),
|
margin: ContactUtils.getPaddingSearchInputForm(context, controller.responsiveUtils),
|
||||||
decoration: const BoxDecoration(
|
decoration: const BoxDecoration(
|
||||||
borderRadius: BorderRadius.all(Radius.circular(10)),
|
borderRadius: BorderRadius.all(Radius.circular(10)),
|
||||||
color: AppColor.colorBgSearchBar),
|
color: AppColor.colorBgSearchBar),
|
||||||
iconClearText: SvgPicture.asset(
|
iconClearText: SvgPicture.asset(
|
||||||
_imagePaths.icClearTextSearch,
|
controller.imagePaths.icClearTextSearch,
|
||||||
width: 18,
|
width: 18,
|
||||||
height: 18,
|
height: 18,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
@@ -92,7 +87,7 @@ class ContactView extends GetWidget<ContactController> {
|
|||||||
itemCount: controller.listContactSearched.length,
|
itemCount: controller.listContactSearched.length,
|
||||||
separatorBuilder: (context, index) {
|
separatorBuilder: (context, index) {
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: ContactUtils.getPaddingDividerSearchResultList(context, _responsiveUtils),
|
padding: ContactUtils.getPaddingDividerSearchResultList(context, controller.responsiveUtils),
|
||||||
child: const Divider(
|
child: const Divider(
|
||||||
height: 1,
|
height: 1,
|
||||||
color: AppColor.colorDivider),
|
color: AppColor.colorDivider),
|
||||||
@@ -108,7 +103,7 @@ class ContactView extends GetWidget<ContactController> {
|
|||||||
);
|
);
|
||||||
return ContactSuggestionBoxItem(
|
return ContactSuggestionBoxItem(
|
||||||
suggestionEmailAddress,
|
suggestionEmailAddress,
|
||||||
padding: ContactUtils.getPaddingSearchResultList(context, _responsiveUtils),
|
padding: ContactUtils.getPaddingSearchResultList(context, controller.responsiveUtils),
|
||||||
selectedContactCallbackAction: (contact) => controller.selectContact(context, contact),
|
selectedContactCallbackAction: (contact) => controller.selectContact(context, contact),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
|
|
||||||
import 'package:core/presentation/state/failure.dart';
|
import 'package:core/presentation/state/failure.dart';
|
||||||
import 'package:core/presentation/state/success.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/keyboard_utils.dart';
|
||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:flutter/material.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/features/thread/presentation/model/search_status.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
|
||||||
|
|
||||||
class DestinationPickerController extends BaseMailboxController {
|
class DestinationPickerController extends BaseMailboxController {
|
||||||
|
|
||||||
final _uuid = Get.find<Uuid>();
|
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
|
|
||||||
final SearchMailboxInteractor _searchMailboxInteractor;
|
final SearchMailboxInteractor _searchMailboxInteractor;
|
||||||
final CreateNewMailboxInteractor _createNewMailboxInteractor;
|
final CreateNewMailboxInteractor _createNewMailboxInteractor;
|
||||||
|
|
||||||
@@ -310,7 +305,7 @@ class DestinationPickerController extends BaseMailboxController {
|
|||||||
|
|
||||||
void openCreateNewMailboxView(BuildContext context) async {
|
void openCreateNewMailboxView(BuildContext context) async {
|
||||||
if (mailboxDestination.value == null) {
|
if (mailboxDestination.value == null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(context).toastMessageErrorNotSelectedFolderWhenCreateNewMailbox);
|
AppLocalizations.of(context).toastMessageErrorNotSelectedFolderWhenCreateNewMailbox);
|
||||||
} else {
|
} else {
|
||||||
@@ -346,7 +341,7 @@ class DestinationPickerController extends BaseMailboxController {
|
|||||||
if (exception is ErrorMethodResponse) {
|
if (exception is ErrorMethodResponse) {
|
||||||
messageError = exception.description ?? AppLocalizations.of(currentContext!).createNewFolderFailure;
|
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);
|
KeyboardUtils.hideKeyboard(context);
|
||||||
|
|
||||||
if (mailboxDestination.value == null) {
|
if (mailboxDestination.value == null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(context).toastMessageErrorNotSelectedFolderWhenCreateNewMailbox);
|
AppLocalizations.of(context).toastMessageErrorNotSelectedFolderWhenCreateNewMailbox);
|
||||||
return;
|
return;
|
||||||
@@ -392,7 +387,7 @@ class DestinationPickerController extends BaseMailboxController {
|
|||||||
|
|
||||||
final nameMailbox = newNameMailbox.value;
|
final nameMailbox = newNameMailbox.value;
|
||||||
if (nameMailbox != null && nameMailbox.isNotEmpty) {
|
if (nameMailbox != null && nameMailbox.isNotEmpty) {
|
||||||
final generateCreateId = Id(_uuid.v1());
|
final generateCreateId = Id(uuid.v1());
|
||||||
final parentId = mailboxDestination.value == PresentationMailbox.unifiedMailbox
|
final parentId = mailboxDestination.value == PresentationMailbox.unifiedMailbox
|
||||||
? null
|
? null
|
||||||
: mailboxDestination.value?.id;
|
: mailboxDestination.value?.id;
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/state/success.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/utils/style_utils.dart';
|
||||||
import 'package:core/presentation/views/button/icon_button_web.dart';
|
import 'package:core/presentation/views/button/icon_button_web.dart';
|
||||||
import 'package:core/presentation/views/list/tree_view.dart';
|
import 'package:core/presentation/views/list/tree_view.dart';
|
||||||
@@ -38,8 +36,6 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
MailboxWidgetMixin {
|
MailboxWidgetMixin {
|
||||||
|
|
||||||
final _maxHeight = 656.0;
|
final _maxHeight = 656.0;
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
final controller = Get.find<DestinationPickerController>();
|
final controller = Get.find<DestinationPickerController>();
|
||||||
@@ -59,7 +55,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
borderOnForeground: false,
|
borderOnForeground: false,
|
||||||
color: Colors.transparent,
|
color: Colors.transparent,
|
||||||
child: SafeArea(
|
child: SafeArea(
|
||||||
top: PlatformInfo.isMobile && _responsiveUtils.isPortraitMobile(context),
|
top: PlatformInfo.isMobile && controller.responsiveUtils.isPortraitMobile(context),
|
||||||
bottom: false,
|
bottom: false,
|
||||||
left: false,
|
left: false,
|
||||||
right: false,
|
right: false,
|
||||||
@@ -90,8 +86,8 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
child: SafeArea(
|
child: SafeArea(
|
||||||
top: false,
|
top: false,
|
||||||
bottom: false,
|
bottom: false,
|
||||||
left: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context),
|
left: PlatformInfo.isMobile && controller.responsiveUtils.isLandscapeMobile(context),
|
||||||
right: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context),
|
right: PlatformInfo.isMobile && controller.responsiveUtils.isLandscapeMobile(context),
|
||||||
child: Column(children: [
|
child: Column(children: [
|
||||||
Obx(() => TopBarDestinationPickerBuilder(
|
Obx(() => TopBarDestinationPickerBuilder(
|
||||||
controller.mailboxAction.value,
|
controller.mailboxAction.value,
|
||||||
@@ -201,7 +197,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
if (actions?.canSearch() == true &&
|
if (actions?.canSearch() == true &&
|
||||||
controller.destinationScreenType.value == DestinationScreenType.destinationPicker)
|
controller.destinationScreenType.value == DestinationScreenType.destinationPicker)
|
||||||
SearchBarView(
|
SearchBarView(
|
||||||
_imagePaths,
|
controller.imagePaths,
|
||||||
margin: const EdgeInsets.all(16),
|
margin: const EdgeInsets.all(16),
|
||||||
hintTextSearch: AppLocalizations.of(context).hintSearchFolders,
|
hintTextSearch: AppLocalizations.of(context).hintSearchFolders,
|
||||||
onOpenSearchViewAction: controller.enableSearch
|
onOpenSearchViewAction: controller.enableSearch
|
||||||
@@ -294,8 +290,8 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
children: [
|
children: [
|
||||||
buildHeaderMailboxCategory(
|
buildHeaderMailboxCategory(
|
||||||
context,
|
context,
|
||||||
_responsiveUtils,
|
controller.responsiveUtils,
|
||||||
_imagePaths,
|
controller.imagePaths,
|
||||||
categories,
|
categories,
|
||||||
controller,
|
controller,
|
||||||
toggleMailboxCategories: controller.toggleMailboxCategories,
|
toggleMailboxCategories: controller.toggleMailboxCategories,
|
||||||
@@ -404,8 +400,8 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
return Obx(() => DestinationPickerSearchMailboxItemBuilder(
|
return Obx(() => DestinationPickerSearchMailboxItemBuilder(
|
||||||
_imagePaths,
|
controller.imagePaths,
|
||||||
_responsiveUtils,
|
controller.responsiveUtils,
|
||||||
controller.listMailboxSearched[index],
|
controller.listMailboxSearched[index],
|
||||||
mailboxActions: actions,
|
mailboxActions: actions,
|
||||||
mailboxIdAlreadySelected: mailboxIdSelected,
|
mailboxIdAlreadySelected: mailboxIdSelected,
|
||||||
@@ -443,7 +439,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
: Colors.transparent,
|
: Colors.transparent,
|
||||||
child: Row(children: [
|
child: Row(children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
_imagePaths.icFolderMailbox,
|
controller.imagePaths.icFolderMailbox,
|
||||||
width: PlatformInfo.isWeb ? 20 : 24,
|
width: PlatformInfo.isWeb ? 20 : 24,
|
||||||
height: PlatformInfo.isWeb ? 20 : 24,
|
height: PlatformInfo.isWeb ? 20 : 24,
|
||||||
fit: BoxFit.fill
|
fit: BoxFit.fill
|
||||||
@@ -469,7 +465,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
left: AppUtils.isDirectionRTL(context) ? 30 : 0.0,
|
left: AppUtils.isDirectionRTL(context) ? 30 : 0.0,
|
||||||
),
|
),
|
||||||
child: SvgPicture.asset(
|
child: SvgPicture.asset(
|
||||||
_imagePaths.icFilterSelected,
|
controller.imagePaths.icFilterSelected,
|
||||||
width: 20,
|
width: 20,
|
||||||
height: 20,
|
height: 20,
|
||||||
fit: BoxFit.fill
|
fit: BoxFit.fill
|
||||||
@@ -528,12 +524,12 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
),
|
),
|
||||||
child: buildIconWeb(
|
child: buildIconWeb(
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
_imagePaths.icBack,
|
controller.imagePaths.icBack,
|
||||||
colorFilter: AppColor.colorTextButton.asFilter(),
|
colorFilter: AppColor.colorTextButton.asFilter(),
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
onTap: () => controller.disableSearch(context))),
|
onTap: () => controller.disableSearch(context))),
|
||||||
Expanded(child: SearchAppBarWidget(
|
Expanded(child: SearchAppBarWidget(
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
searchQuery: controller.searchQuery.value,
|
searchQuery: controller.searchQuery.value,
|
||||||
searchFocusNode: controller.searchFocus,
|
searchFocusNode: controller.searchFocus,
|
||||||
searchInputController: controller.searchInputController,
|
searchInputController: controller.searchInputController,
|
||||||
@@ -547,7 +543,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
borderRadius: BorderRadius.all(Radius.circular(12)),
|
borderRadius: BorderRadius.all(Radius.circular(12)),
|
||||||
color: AppColor.colorBgSearchBar),
|
color: AppColor.colorBgSearchBar),
|
||||||
iconClearText: SvgPicture.asset(
|
iconClearText: SvgPicture.asset(
|
||||||
_imagePaths.icClearTextSearch,
|
controller.imagePaths.icClearTextSearch,
|
||||||
width: 18,
|
width: 18,
|
||||||
height: 18,
|
height: 18,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
@@ -562,9 +558,9 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
}
|
}
|
||||||
|
|
||||||
BorderRadius _getRadiusDestinationPicker(BuildContext context) {
|
BorderRadius _getRadiusDestinationPicker(BuildContext context) {
|
||||||
if (PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context)) {
|
if (PlatformInfo.isMobile && controller.responsiveUtils.isLandscapeMobile(context)) {
|
||||||
return BorderRadius.zero;
|
return BorderRadius.zero;
|
||||||
} else if (_responsiveUtils.isMobile(context)) {
|
} else if (controller.responsiveUtils.isMobile(context)) {
|
||||||
return const BorderRadius.only(
|
return const BorderRadius.only(
|
||||||
topRight: Radius.circular(16),
|
topRight: Radius.circular(16),
|
||||||
topLeft: Radius.circular(16));
|
topLeft: Radius.circular(16));
|
||||||
@@ -575,14 +571,14 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
|
|
||||||
double _getWidthDestinationPicker(BuildContext context) {
|
double _getWidthDestinationPicker(BuildContext context) {
|
||||||
if (PlatformInfo.isWeb) {
|
if (PlatformInfo.isWeb) {
|
||||||
if (_responsiveUtils.isMobile(context)) {
|
if (controller.responsiveUtils.isMobile(context)) {
|
||||||
return double.infinity;
|
return double.infinity;
|
||||||
} else {
|
} else {
|
||||||
return 556;
|
return 556;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.isLandscapeMobile(context) ||
|
if (controller.responsiveUtils.isLandscapeMobile(context) ||
|
||||||
_responsiveUtils.isPortraitMobile(context)) {
|
controller.responsiveUtils.isPortraitMobile(context)) {
|
||||||
return double.infinity;
|
return double.infinity;
|
||||||
} else {
|
} else {
|
||||||
return 556;
|
return 556;
|
||||||
@@ -592,21 +588,21 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
|
|
||||||
double _getHeightDestinationPicker(BuildContext context) {
|
double _getHeightDestinationPicker(BuildContext context) {
|
||||||
if (PlatformInfo.isWeb) {
|
if (PlatformInfo.isWeb) {
|
||||||
if (_responsiveUtils.isMobile(context)) {
|
if (controller.responsiveUtils.isMobile(context)) {
|
||||||
return double.infinity;
|
return double.infinity;
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
||||||
return _maxHeight;
|
return _maxHeight;
|
||||||
} else {
|
} else {
|
||||||
return double.infinity;
|
return double.infinity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.isLandscapeMobile(context) ||
|
if (controller.responsiveUtils.isLandscapeMobile(context) ||
|
||||||
_responsiveUtils.isPortraitMobile(context)) {
|
controller.responsiveUtils.isPortraitMobile(context)) {
|
||||||
return double.infinity;
|
return double.infinity;
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
||||||
return _maxHeight;
|
return _maxHeight;
|
||||||
} else {
|
} else {
|
||||||
return double.infinity;
|
return double.infinity;
|
||||||
@@ -618,21 +614,21 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
|
|
||||||
EdgeInsets _getMarginDestinationPicker(BuildContext context) {
|
EdgeInsets _getMarginDestinationPicker(BuildContext context) {
|
||||||
if (PlatformInfo.isWeb) {
|
if (PlatformInfo.isWeb) {
|
||||||
if (_responsiveUtils.isMobile(context)) {
|
if (controller.responsiveUtils.isMobile(context)) {
|
||||||
return EdgeInsets.zero;
|
return EdgeInsets.zero;
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
||||||
return const EdgeInsets.symmetric(vertical: 12);
|
return const EdgeInsets.symmetric(vertical: 12);
|
||||||
} else {
|
} else {
|
||||||
return const EdgeInsets.symmetric(vertical: 50);
|
return const EdgeInsets.symmetric(vertical: 50);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.isLandscapeMobile(context) ||
|
if (controller.responsiveUtils.isLandscapeMobile(context) ||
|
||||||
_responsiveUtils.isPortraitMobile(context)) {
|
controller.responsiveUtils.isPortraitMobile(context)) {
|
||||||
return EdgeInsets.zero;
|
return EdgeInsets.zero;
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
||||||
return const EdgeInsets.symmetric(vertical: 12);
|
return const EdgeInsets.symmetric(vertical: 12);
|
||||||
} else {
|
} else {
|
||||||
return const EdgeInsets.symmetric(vertical: 50);
|
return const EdgeInsets.symmetric(vertical: 50);
|
||||||
|
|||||||
@@ -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/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_bottom_sheet_builder.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/widgets/email_address_dialog_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/action/mailbox_ui_action.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.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';
|
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/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/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/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/domain/constants/thread_constants.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart';
|
import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart';
|
||||||
import 'package:tmail_ui_user/main/error/capability_validator.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_navigation.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
|
||||||
|
|
||||||
class SingleEmailController extends BaseController with AppLoaderMixin {
|
class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||||
|
|
||||||
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
||||||
final emailSupervisorController = Get.find<EmailSupervisorController>();
|
final emailSupervisorController = Get.find<EmailSupervisorController>();
|
||||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
final _uuid = Get.find<Uuid>();
|
|
||||||
final _downloadManager = Get.find<DownloadManager>();
|
final _downloadManager = Get.find<DownloadManager>();
|
||||||
final _dynamicUrlInterceptors = Get.find<DynamicUrlInterceptors>();
|
|
||||||
final _attachmentListScrollController = ScrollController();
|
final _attachmentListScrollController = ScrollController();
|
||||||
|
|
||||||
final GetEmailContentInteractor _getEmailContentInteractor;
|
final GetEmailContentInteractor _getEmailContentInteractor;
|
||||||
@@ -297,7 +291,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
attachment: success.attachment));
|
attachment: success.attachment));
|
||||||
|
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).your_download_has_started,
|
AppLocalizations.of(currentContext!).your_download_has_started,
|
||||||
leadingSVGIconColor: AppColor.primaryColor,
|
leadingSVGIconColor: AppColor.primaryColor,
|
||||||
@@ -396,7 +390,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
final session = mailboxDashBoardController.sessionCurrent;
|
final session = mailboxDashBoardController.sessionCurrent;
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
if (session != null && accountId != null) {
|
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 transformConfiguration = PlatformInfo.isWeb
|
||||||
? TransformConfiguration.forPreviewEmailOnWeb()
|
? TransformConfiguration.forPreviewEmailOnWeb()
|
||||||
: TransformConfiguration.forPreviewEmail();
|
: TransformConfiguration.forPreviewEmail();
|
||||||
@@ -570,7 +564,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
break;
|
break;
|
||||||
case PermissionStatus.permanentlyDenied:
|
case PermissionStatus.permanentlyDenied:
|
||||||
if (context.mounted && currentOverlayContext != null && currentContext != null) {
|
if (context.mounted && currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(context).you_need_to_grant_files_permission_to_download_attachments,
|
AppLocalizations.of(context).you_need_to_grant_files_permission_to_download_attachments,
|
||||||
);
|
);
|
||||||
@@ -584,7 +578,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (context.mounted && currentOverlayContext != null && currentContext != null) {
|
if (context.mounted && currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(context).you_need_to_grant_files_permission_to_download_attachments,
|
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<Attachment> attachments) async {
|
void _downloadAttachmentsAction(List<Attachment> attachments) async {
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
if (accountId != null && mailboxDashBoardController.sessionCurrent != null) {
|
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));
|
consumeState(_downloadAttachmentsInteractor.execute(attachments, accountId, baseDownloadUrl));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _downloadAttachmentsFailure(DownloadAttachmentsFailure failure) {
|
void _downloadAttachmentsFailure(DownloadAttachmentsFailure failure) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).attachment_download_failed);
|
AppLocalizations.of(currentContext!).attachment_download_failed);
|
||||||
}
|
}
|
||||||
@@ -650,7 +644,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
void _exportAttachmentAction(Attachment attachment, CancelToken cancelToken) async {
|
void _exportAttachmentAction(Attachment attachment, CancelToken cancelToken) async {
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
if (accountId != null && mailboxDashBoardController.sessionCurrent != null) {
|
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));
|
consumeState(_exportAttachmentInteractor.execute(attachment, accountId, baseDownloadUrl, cancelToken));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -660,7 +654,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
popBack();
|
popBack();
|
||||||
|
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).attachment_download_failed);
|
AppLocalizations.of(currentContext!).attachment_download_failed);
|
||||||
}
|
}
|
||||||
@@ -686,7 +680,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
if (openResult.type != open_file.ResultType.done) {
|
if (openResult.type != open_file.ResultType.done) {
|
||||||
logError('SingleEmailController::_openDownloadedPreviewWorkGroupDocument(): no preview available');
|
logError('SingleEmailController::_openDownloadedPreviewWorkGroupDocument(): no preview available');
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).noPreviewAvailable);
|
AppLocalizations.of(currentContext!).noPreviewAvailable);
|
||||||
}
|
}
|
||||||
@@ -701,8 +695,8 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
final session = mailboxDashBoardController.sessionCurrent;
|
final session = mailboxDashBoardController.sessionCurrent;
|
||||||
if (accountId != null && session != null) {
|
if (accountId != null && session != null) {
|
||||||
final baseDownloadUrl = session.getDownloadUrl(jmapUrl: _dynamicUrlInterceptors.jmapUrl);
|
final baseDownloadUrl = session.getDownloadUrl(jmapUrl: dynamicUrlInterceptors.jmapUrl);
|
||||||
final generateTaskId = DownloadTaskId(_uuid.v4());
|
final generateTaskId = DownloadTaskId(uuid.v4());
|
||||||
consumeState(_downloadAttachmentForWebInteractor.execute(
|
consumeState(_downloadAttachmentForWebInteractor.execute(
|
||||||
generateTaskId,
|
generateTaskId,
|
||||||
attachment,
|
attachment,
|
||||||
@@ -732,7 +726,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).attachment_download_failed);
|
AppLocalizations.of(currentContext!).attachment_download_failed);
|
||||||
}
|
}
|
||||||
@@ -821,7 +815,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
void _moveToMailboxSuccess(MoveToMailboxSuccess success) {
|
void _moveToMailboxSuccess(MoveToMailboxSuccess success) {
|
||||||
mailboxDashBoardController.dispatchState(Right(success));
|
mailboxDashBoardController.dispatchState(Right(success));
|
||||||
if (success.moveAction == MoveAction.moving && currentContext != null && currentOverlayContext != null) {
|
if (success.moveAction == MoveAction.moving && currentContext != null && currentOverlayContext != null) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
success.emailActionType.getToastMessageMoveToMailboxSuccess(currentContext!, destinationPath: success.destinationPath),
|
success.emailActionType.getToastMessageMoveToMailboxSuccess(currentContext!, destinationPath: success.destinationPath),
|
||||||
actionName: AppLocalizations.of(currentContext!).undo,
|
actionName: AppLocalizations.of(currentContext!).undo,
|
||||||
@@ -1063,21 +1057,21 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (_sendReceiptToSenderInteractor == null) {
|
if (_sendReceiptToSenderInteractor == null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(context).toastMessageNotSupportMdnWhenSendReceipt);
|
AppLocalizations.of(context).toastMessageNotSupportMdnWhenSendReceipt);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_identitySelected == null || _identitySelected?.id == null) {
|
if (_identitySelected == null || _identitySelected?.id == null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(context).toastMessageCannotFoundIdentityWhenSendReceipt);
|
AppLocalizations.of(context).toastMessageCannotFoundIdentityWhenSendReceipt);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentEmail == null || _currentEmailId == null) {
|
if (currentEmail == null || _currentEmailId == null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(context).toastMessageCannotFoundEmailIdWhenSendReceipt);
|
AppLocalizations.of(context).toastMessageCannotFoundEmailIdWhenSendReceipt);
|
||||||
return;
|
return;
|
||||||
@@ -1089,7 +1083,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
final sendReceiptRequest = SendReceiptToSenderRequest(
|
final sendReceiptRequest = SendReceiptToSenderRequest(
|
||||||
mdn: mdnToSender,
|
mdn: mdnToSender,
|
||||||
identityId: _identitySelected!.id!,
|
identityId: _identitySelected!.id!,
|
||||||
sendId: Id(_uuid.v1()));
|
sendId: Id(uuid.v1()));
|
||||||
log('SingleEmailController::_handleSendReceiptToSenderAction(): sendReceiptRequest: $sendReceiptRequest');
|
log('SingleEmailController::_handleSendReceiptToSenderAction(): sendReceiptRequest: $sendReceiptRequest');
|
||||||
|
|
||||||
consumeState(_sendReceiptToSenderInteractor!.execute(accountId, sendReceiptRequest));
|
consumeState(_sendReceiptToSenderInteractor!.execute(accountId, sendReceiptRequest));
|
||||||
@@ -1129,7 +1123,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
void _sendReceiptToSenderSuccess(SendReceiptToSenderSuccess success) {
|
void _sendReceiptToSenderSuccess(SendReceiptToSenderSuccess success) {
|
||||||
log('SingleEmailController::_sendReceiptToSenderSuccess(): ${success.mdn.toString()}');
|
log('SingleEmailController::_sendReceiptToSenderSuccess(): ${success.mdn.toString()}');
|
||||||
if (currentContext != null) {
|
if (currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toastMessageSendReceiptSuccess,
|
AppLocalizations.of(currentContext!).toastMessageSendReceiptSuccess,
|
||||||
leadingSVGIcon: imagePaths.icReadReceiptMessage);
|
leadingSVGIcon: imagePaths.icReadReceiptMessage);
|
||||||
@@ -1264,7 +1258,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
void _createNewRuleFilterSuccess(CreateNewRuleFilterSuccess success) {
|
void _createNewRuleFilterSuccess(CreateNewRuleFilterSuccess success) {
|
||||||
if (success.newListRules.isNotEmpty == true) {
|
if (success.newListRules.isNotEmpty == true) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).newFilterWasCreated);
|
AppLocalizations.of(currentContext!).newFilterWasCreated);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
|
||||||
import 'package:core/presentation/views/button/tmail_button_widget.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_on_web_widget.dart';
|
||||||
import 'package:core/presentation/views/html_viewer/html_content_viewer_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/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/direction_utils.dart';
|
||||||
import 'package:core/utils/platform_info.dart';
|
import 'package:core/utils/platform_info.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@@ -42,17 +39,14 @@ import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
|||||||
|
|
||||||
class EmailView extends GetWidget<SingleEmailController> {
|
class EmailView extends GetWidget<SingleEmailController> {
|
||||||
|
|
||||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
const EmailView({Key? key}) : super(key: key);
|
||||||
final imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
EmailView({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return WillPopScope(
|
return WillPopScope(
|
||||||
onWillPop: () => controller.backButtonPressedCallbackAction.call(context),
|
onWillPop: () => controller.backButtonPressedCallbackAction.call(context),
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
backgroundColor: responsiveUtils.isWebDesktop(context)
|
backgroundColor: controller.responsiveUtils.isWebDesktop(context)
|
||||||
? AppColor.colorBgDesktop
|
? AppColor.colorBgDesktop
|
||||||
: Colors.white,
|
: Colors.white,
|
||||||
appBar: PlatformInfo.isIOS
|
appBar: PlatformInfo.isIOS
|
||||||
@@ -93,12 +87,12 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
right: responsiveUtils.isLandscapeMobile(context),
|
right: controller.responsiveUtils.isLandscapeMobile(context),
|
||||||
left: responsiveUtils.isLandscapeMobile(context),
|
left: controller.responsiveUtils.isLandscapeMobile(context),
|
||||||
bottom: !PlatformInfo.isIOS,
|
bottom: !PlatformInfo.isIOS,
|
||||||
child: Container(
|
child: Container(
|
||||||
clipBehavior: Clip.antiAlias,
|
clipBehavior: Clip.antiAlias,
|
||||||
decoration: responsiveUtils.isWebDesktop(context)
|
decoration: controller.responsiveUtils.isWebDesktop(context)
|
||||||
? BoxDecoration(
|
? BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(20),
|
borderRadius: BorderRadius.circular(20),
|
||||||
border: Border.all(color: AppColor.colorBorderBodyThread, width: 1),
|
border: Border.all(color: AppColor.colorBorderBodyThread, width: 1),
|
||||||
@@ -139,9 +133,9 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
final vacation = controller.mailboxDashBoardController.vacationResponse.value;
|
final vacation = controller.mailboxDashBoardController.vacationResponse.value;
|
||||||
if (vacation?.vacationResponderIsValid == true &&
|
if (vacation?.vacationResponderIsValid == true &&
|
||||||
(
|
(
|
||||||
responsiveUtils.isMobile(context) ||
|
controller.responsiveUtils.isMobile(context) ||
|
||||||
responsiveUtils.isTablet(context) ||
|
controller.responsiveUtils.isTablet(context) ||
|
||||||
responsiveUtils.isLandscapeMobile(context)
|
controller.responsiveUtils.isLandscapeMobile(context)
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
return VacationNotificationMessageWidget(
|
return VacationNotificationMessageWidget(
|
||||||
@@ -270,7 +264,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
|
|
||||||
EdgeInsetsGeometry _getMarginEmailView(BuildContext context) {
|
EdgeInsetsGeometry _getMarginEmailView(BuildContext context) {
|
||||||
if (PlatformInfo.isWeb) {
|
if (PlatformInfo.isWeb) {
|
||||||
if (responsiveUtils.isDesktop(context)) {
|
if (controller.responsiveUtils.isDesktop(context)) {
|
||||||
return const EdgeInsetsDirectional.only(
|
return const EdgeInsetsDirectional.only(
|
||||||
end: 16,
|
end: 16,
|
||||||
top: 8,
|
top: 8,
|
||||||
@@ -292,8 +286,8 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
return [
|
return [
|
||||||
TMailButtonWidget.fromIcon(
|
TMailButtonWidget.fromIcon(
|
||||||
icon: DirectionUtils.isDirectionRTLByLanguage(context)
|
icon: DirectionUtils.isDirectionRTLByLanguage(context)
|
||||||
? imagePaths.icOlder
|
? controller.imagePaths.icOlder
|
||||||
: imagePaths.icNewer,
|
: controller.imagePaths.icNewer,
|
||||||
iconColor: controller.emailSupervisorController.nextEmailActivated
|
iconColor: controller.emailSupervisorController.nextEmailActivated
|
||||||
? AppColor.primaryColor
|
? AppColor.primaryColor
|
||||||
: AppColor.colorAttachmentIcon,
|
: AppColor.colorAttachmentIcon,
|
||||||
@@ -305,8 +299,8 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
),
|
),
|
||||||
TMailButtonWidget.fromIcon(
|
TMailButtonWidget.fromIcon(
|
||||||
icon: DirectionUtils.isDirectionRTLByLanguage(context)
|
icon: DirectionUtils.isDirectionRTLByLanguage(context)
|
||||||
? imagePaths.icNewer
|
? controller.imagePaths.icNewer
|
||||||
: imagePaths.icOlder,
|
: controller.imagePaths.icOlder,
|
||||||
iconColor: controller.emailSupervisorController.previousEmailActivated
|
iconColor: controller.emailSupervisorController.previousEmailActivated
|
||||||
? AppColor.primaryColor
|
? AppColor.primaryColor
|
||||||
: AppColor.colorAttachmentIcon,
|
: AppColor.colorAttachmentIcon,
|
||||||
@@ -332,22 +326,18 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
InformationSenderAndReceiverBuilder(
|
InformationSenderAndReceiverBuilder(
|
||||||
controller: controller,
|
controller: controller,
|
||||||
emailSelected: presentationEmail,
|
emailSelected: presentationEmail,
|
||||||
imagePaths: imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
responsiveUtils: responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
),
|
),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
final attachments = controller.attachments.listAttachmentsDisplayedOutSide;
|
final attachments = controller.attachments.listAttachmentsDisplayedOutSide;
|
||||||
if (attachments.isNotEmpty) {
|
if (attachments.isNotEmpty) {
|
||||||
return EmailAttachmentsWidget(
|
return EmailAttachmentsWidget(
|
||||||
responsiveUtils: responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
attachments: attachments,
|
attachments: attachments,
|
||||||
imagePaths: imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
onDragStarted: () {
|
onDragStarted: controller.mailboxDashBoardController.enableDraggableApp,
|
||||||
log('EmailView::_buildEmailMessage:onDragStarted:');
|
|
||||||
controller.mailboxDashBoardController.enableDraggableApp();
|
|
||||||
},
|
|
||||||
onDragEnd: (details) {
|
onDragEnd: (details) {
|
||||||
log('EmailView::_buildEmailMessage:onDragEnd:');
|
|
||||||
controller.mailboxDashBoardController.disableDraggableApp();
|
controller.mailboxDashBoardController.disableDraggableApp();
|
||||||
},
|
},
|
||||||
downloadAttachmentAction: (attachment) {
|
downloadAttachmentAction: (attachment) {
|
||||||
@@ -463,7 +453,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
return (EmailActionCupertinoActionSheetActionBuilder(
|
return (EmailActionCupertinoActionSheetActionBuilder(
|
||||||
const Key('mark_as_unread_action'),
|
const Key('mark_as_unread_action'),
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
imagePaths.icUnreadEmail,
|
controller.imagePaths.icUnreadEmail,
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24,
|
height: 24,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
@@ -471,7 +461,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
),
|
),
|
||||||
AppLocalizations.of(context).mark_as_unread,
|
AppLocalizations.of(context).mark_as_unread,
|
||||||
email,
|
email,
|
||||||
iconLeftPadding: responsiveUtils.isMobile(context)
|
iconLeftPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? EdgeInsets.only(
|
? EdgeInsets.only(
|
||||||
left: AppUtils.isDirectionRTL(context) ? 16 : 12,
|
left: AppUtils.isDirectionRTL(context) ? 16 : 12,
|
||||||
right: AppUtils.isDirectionRTL(context) ? 12 : 16,
|
right: AppUtils.isDirectionRTL(context) ? 12 : 16,
|
||||||
@@ -480,7 +470,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
left: AppUtils.isDirectionRTL(context) ? 12 : 0,
|
left: AppUtils.isDirectionRTL(context) ? 12 : 0,
|
||||||
right: AppUtils.isDirectionRTL(context) ? 0 : 12,
|
right: AppUtils.isDirectionRTL(context) ? 0 : 12,
|
||||||
),
|
),
|
||||||
iconRightPadding: responsiveUtils.isMobile(context)
|
iconRightPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? EdgeInsets.only(
|
? EdgeInsets.only(
|
||||||
left: AppUtils.isDirectionRTL(context) ? 12 : 0,
|
left: AppUtils.isDirectionRTL(context) ? 12 : 0,
|
||||||
right: AppUtils.isDirectionRTL(context) ? 0 : 12,
|
right: AppUtils.isDirectionRTL(context) ? 0 : 12,
|
||||||
@@ -500,7 +490,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
return (EmailActionCupertinoActionSheetActionBuilder(
|
return (EmailActionCupertinoActionSheetActionBuilder(
|
||||||
const Key('mark_as_spam_or_un_spam_action'),
|
const Key('mark_as_spam_or_un_spam_action'),
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
currentMailbox?.isSpam == true ? imagePaths.icNotSpam : imagePaths.icSpam,
|
currentMailbox?.isSpam == true ? controller.imagePaths.icNotSpam : controller.imagePaths.icSpam,
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24,
|
height: 24,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
@@ -510,7 +500,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
? AppLocalizations.of(context).remove_from_spam
|
? AppLocalizations.of(context).remove_from_spam
|
||||||
: AppLocalizations.of(context).mark_as_spam,
|
: AppLocalizations.of(context).mark_as_spam,
|
||||||
email,
|
email,
|
||||||
iconLeftPadding: responsiveUtils.isMobile(context)
|
iconLeftPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? EdgeInsets.only(
|
? EdgeInsets.only(
|
||||||
left: AppUtils.isDirectionRTL(context) ? 16 : 12,
|
left: AppUtils.isDirectionRTL(context) ? 16 : 12,
|
||||||
right: AppUtils.isDirectionRTL(context) ? 12 : 16,
|
right: AppUtils.isDirectionRTL(context) ? 12 : 16,
|
||||||
@@ -519,7 +509,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
left: AppUtils.isDirectionRTL(context) ? 12 : 0,
|
left: AppUtils.isDirectionRTL(context) ? 12 : 0,
|
||||||
right: AppUtils.isDirectionRTL(context) ? 0 : 12,
|
right: AppUtils.isDirectionRTL(context) ? 0 : 12,
|
||||||
),
|
),
|
||||||
iconRightPadding: responsiveUtils.isMobile(context)
|
iconRightPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? EdgeInsets.only(
|
? EdgeInsets.only(
|
||||||
left: AppUtils.isDirectionRTL(context) ? 12 : 0,
|
left: AppUtils.isDirectionRTL(context) ? 12 : 0,
|
||||||
right: AppUtils.isDirectionRTL(context) ? 0 : 12,
|
right: AppUtils.isDirectionRTL(context) ? 0 : 12,
|
||||||
@@ -537,14 +527,14 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
return (EmailActionCupertinoActionSheetActionBuilder(
|
return (EmailActionCupertinoActionSheetActionBuilder(
|
||||||
const Key('quick_creating_rule_action'),
|
const Key('quick_creating_rule_action'),
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
imagePaths.icQuickCreatingRule,
|
controller.imagePaths.icQuickCreatingRule,
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24,
|
height: 24,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
colorFilter: AppColor.colorTextButton.asFilter()),
|
colorFilter: AppColor.colorTextButton.asFilter()),
|
||||||
AppLocalizations.of(context).quickCreatingRule,
|
AppLocalizations.of(context).quickCreatingRule,
|
||||||
email,
|
email,
|
||||||
iconLeftPadding: responsiveUtils.isMobile(context)
|
iconLeftPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? EdgeInsets.only(
|
? EdgeInsets.only(
|
||||||
left: AppUtils.isDirectionRTL(context) ? 16 : 12,
|
left: AppUtils.isDirectionRTL(context) ? 16 : 12,
|
||||||
right: AppUtils.isDirectionRTL(context) ? 12 : 16,
|
right: AppUtils.isDirectionRTL(context) ? 12 : 16,
|
||||||
@@ -553,7 +543,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
left: AppUtils.isDirectionRTL(context) ? 12 : 0,
|
left: AppUtils.isDirectionRTL(context) ? 12 : 0,
|
||||||
right: AppUtils.isDirectionRTL(context) ? 0 : 12,
|
right: AppUtils.isDirectionRTL(context) ? 0 : 12,
|
||||||
),
|
),
|
||||||
iconRightPadding: responsiveUtils.isMobile(context)
|
iconRightPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? EdgeInsets.only(
|
? EdgeInsets.only(
|
||||||
left: AppUtils.isDirectionRTL(context) ? 12 : 0,
|
left: AppUtils.isDirectionRTL(context) ? 12 : 0,
|
||||||
right: AppUtils.isDirectionRTL(context) ? 0 : 12,
|
right: AppUtils.isDirectionRTL(context) ? 0 : 12,
|
||||||
@@ -577,7 +567,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
return PopupMenuItem(
|
return PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
imagePaths.icUnreadEmail,
|
controller.imagePaths.icUnreadEmail,
|
||||||
AppLocalizations.of(context).mark_as_unread,
|
AppLocalizations.of(context).mark_as_unread,
|
||||||
colorIcon: AppColor.colorTextButton,
|
colorIcon: AppColor.colorTextButton,
|
||||||
padding: const EdgeInsetsDirectional.only(start: 12),
|
padding: const EdgeInsetsDirectional.only(start: 12),
|
||||||
@@ -603,7 +593,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
return PopupMenuItem(
|
return PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
mailboxContain?.isSpam == true ? imagePaths.icNotSpam : imagePaths.icSpam,
|
mailboxContain?.isSpam == true ? controller.imagePaths.icNotSpam : controller.imagePaths.icSpam,
|
||||||
mailboxContain?.isSpam == true
|
mailboxContain?.isSpam == true
|
||||||
? AppLocalizations.of(context).remove_from_spam
|
? AppLocalizations.of(context).remove_from_spam
|
||||||
: AppLocalizations.of(context).mark_as_spam,
|
: AppLocalizations.of(context).mark_as_spam,
|
||||||
@@ -627,7 +617,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
return PopupMenuItem(
|
return PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
imagePaths.icQuickCreatingRule,
|
controller.imagePaths.icQuickCreatingRule,
|
||||||
AppLocalizations.of(context).quickCreatingRule,
|
AppLocalizations.of(context).quickCreatingRule,
|
||||||
colorIcon: AppColor.colorTextButton,
|
colorIcon: AppColor.colorTextButton,
|
||||||
padding: const EdgeInsetsDirectional.only(start: 12),
|
padding: const EdgeInsetsDirectional.only(start: 12),
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import 'package:core/presentation/utils/app_toast.dart';
|
|
||||||
import 'package:core/presentation/utils/keyboard_utils.dart';
|
import 'package:core/presentation/utils/keyboard_utils.dart';
|
||||||
import 'package:core/presentation/state/failure.dart';
|
import 'package:core/presentation/state/failure.dart';
|
||||||
import 'package:core/presentation/state/success.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/error/capability_validator.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
|
||||||
|
|
||||||
class IdentityCreatorController extends BaseController {
|
class IdentityCreatorController extends BaseController {
|
||||||
|
|
||||||
@@ -48,9 +46,6 @@ class IdentityCreatorController extends BaseController {
|
|||||||
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
||||||
final IdentityUtils _identityUtils;
|
final IdentityUtils _identityUtils;
|
||||||
|
|
||||||
final _uuid = Get.find<Uuid>();
|
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
|
|
||||||
final noneEmailAddress = EmailAddress(null, 'None');
|
final noneEmailAddress = EmailAddress(null, 'None');
|
||||||
final listEmailAddressDefault = <EmailAddress>[].obs;
|
final listEmailAddressDefault = <EmailAddress>[].obs;
|
||||||
final listEmailAddressOfReplyTo = <EmailAddress>[].obs;
|
final listEmailAddressOfReplyTo = <EmailAddress>[].obs;
|
||||||
@@ -343,7 +338,7 @@ class IdentityCreatorController extends BaseController {
|
|||||||
htmlSignature: Signature(signatureHtmlText ?? ''),
|
htmlSignature: Signature(signatureHtmlText ?? ''),
|
||||||
sortOrder: sortOrder);
|
sortOrder: sortOrder);
|
||||||
|
|
||||||
final generateCreateId = Id(_uuid.v1());
|
final generateCreateId = Id(uuid.v1());
|
||||||
|
|
||||||
if (actionType.value == IdentityActionType.create) {
|
if (actionType.value == IdentityActionType.create) {
|
||||||
final identityRequest = CreateNewIdentityRequest(
|
final identityRequest = CreateNewIdentityRequest(
|
||||||
@@ -486,7 +481,7 @@ class IdentityCreatorController extends BaseController {
|
|||||||
final platformFile = filePickerResult!.files.first;
|
final platformFile = filePickerResult!.files.first;
|
||||||
_insertInlineImage(context, platformFile, maxWidth: maxWidth);
|
_insertInlineImage(context, platformFile, maxWidth: maxWidth);
|
||||||
} else {
|
} else {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
context,
|
context,
|
||||||
AppLocalizations.of(context).cannotSelectThisImage
|
AppLocalizations.of(context).cannotSelectThisImage
|
||||||
);
|
);
|
||||||
@@ -505,7 +500,7 @@ class IdentityCreatorController extends BaseController {
|
|||||||
{int? maxWidth}
|
{int? maxWidth}
|
||||||
) {
|
) {
|
||||||
if (_isExceedMaxSizeInlineImage(platformFile.size)) {
|
if (_isExceedMaxSizeInlineImage(platformFile.size)) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
context,
|
context,
|
||||||
AppLocalizations.of(context).pleaseChooseAnImageSizeCorrectly(
|
AppLocalizations.of(context).pleaseChooseAnImageSizeCorrectly(
|
||||||
IdentityCreatorConstants.maxKBSizeIdentityInlineImage
|
IdentityCreatorConstants.maxKBSizeIdentityInlineImage
|
||||||
|
|||||||
@@ -2,9 +2,7 @@ import 'dart:math' as math;
|
|||||||
|
|
||||||
import 'package:core/presentation/extensions/capitalize_extension.dart';
|
import 'package:core/presentation/extensions/capitalize_extension.dart';
|
||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/utils/html_transformer/html_utils.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/utils/style_utils.dart';
|
||||||
import 'package:core/presentation/views/button/icon_button_web.dart';
|
import 'package:core/presentation/views/button/icon_button_web.dart';
|
||||||
import 'package:core/presentation/views/responsive/responsive_widget.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<IdentityCreatorController>
|
class IdentityCreatorView extends GetWidget<IdentityCreatorController>
|
||||||
with RichTextButtonMixin {
|
with RichTextButtonMixin {
|
||||||
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
final controller = Get.find<IdentityCreatorController>();
|
final controller = Get.find<IdentityCreatorController>();
|
||||||
|
|
||||||
@@ -44,7 +39,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final responsiveWidget = ResponsiveWidget(
|
final responsiveWidget = ResponsiveWidget(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
mobile: Scaffold(
|
mobile: Scaffold(
|
||||||
backgroundColor: Colors.black38,
|
backgroundColor: Colors.black38,
|
||||||
body: GestureDetector(
|
body: GestureDetector(
|
||||||
@@ -103,8 +98,8 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
|
|||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
borderRadius: BorderRadius.all(Radius.circular(16))
|
borderRadius: BorderRadius.all(Radius.circular(16))
|
||||||
),
|
),
|
||||||
width: math.max(_responsiveUtils.getSizeScreenWidth(context) * 0.4, 700),
|
width: math.max(controller.responsiveUtils.getSizeScreenWidth(context) * 0.4, 700),
|
||||||
height: _responsiveUtils.getSizeScreenHeight(context) * 0.8,
|
height: controller.responsiveUtils.getSizeScreenHeight(context) * 0.8,
|
||||||
child: ClipRRect(
|
child: ClipRRect(
|
||||||
borderRadius: const BorderRadius.all(Radius.circular(16)),
|
borderRadius: const BorderRadius.all(Radius.circular(16)),
|
||||||
child: _buildBodyView(context)
|
child: _buildBodyView(context)
|
||||||
@@ -129,8 +124,8 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
|
|||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
borderRadius: BorderRadius.all(Radius.circular(16))
|
borderRadius: BorderRadius.all(Radius.circular(16))
|
||||||
),
|
),
|
||||||
width: math.max(_responsiveUtils.getSizeScreenWidth(context) * 0.4, 800),
|
width: math.max(controller.responsiveUtils.getSizeScreenWidth(context) * 0.4, 800),
|
||||||
height: _responsiveUtils.getSizeScreenHeight(context) * 0.8,
|
height: controller.responsiveUtils.getSizeScreenHeight(context) * 0.8,
|
||||||
child: ClipRRect(
|
child: ClipRRect(
|
||||||
borderRadius: const BorderRadius.all(Radius.circular(16)),
|
borderRadius: const BorderRadius.all(Radius.circular(16)),
|
||||||
child: _buildBodyView(context)
|
child: _buildBodyView(context)
|
||||||
@@ -150,7 +145,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
|
|||||||
backgroundKeyboardToolBarColor: PlatformInfo.isIOS
|
backgroundKeyboardToolBarColor: PlatformInfo.isIOS
|
||||||
? AppColor.colorBackgroundKeyboard
|
? AppColor.colorBackgroundKeyboard
|
||||||
: AppColor.colorBackgroundKeyboardAndroid,
|
: AppColor.colorBackgroundKeyboardAndroid,
|
||||||
isLandScapeMode: _responsiveUtils.isLandscapeMobile(context),
|
isLandScapeMode: controller.responsiveUtils.isLandscapeMobile(context),
|
||||||
richTextController: controller.keyboardRichTextController,
|
richTextController: controller.keyboardRichTextController,
|
||||||
titleQuickStyleBottomSheet: AppLocalizations.of(context).titleQuickStyles,
|
titleQuickStyleBottomSheet: AppLocalizations.of(context).titleQuickStyles,
|
||||||
titleBackgroundBottomSheet: AppLocalizations.of(context).titleBackground,
|
titleBackgroundBottomSheet: AppLocalizations.of(context).titleBackground,
|
||||||
@@ -185,7 +180,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
|
|||||||
Obx(() {
|
Obx(() {
|
||||||
if (controller.actionType.value == IdentityActionType.create) {
|
if (controller.actionType.value == IdentityActionType.create) {
|
||||||
return IdentityDropListFieldBuilder(
|
return IdentityDropListFieldBuilder(
|
||||||
_imagePaths,
|
controller.imagePaths,
|
||||||
AppLocalizations.of(context).email.inCaps,
|
AppLocalizations.of(context).email.inCaps,
|
||||||
controller.emailOfIdentity.value,
|
controller.emailOfIdentity.value,
|
||||||
controller.listEmailAddressDefault,
|
controller.listEmailAddressDefault,
|
||||||
@@ -198,7 +193,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
|
|||||||
}),
|
}),
|
||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
Obx(() => IdentityDropListFieldBuilder(
|
Obx(() => IdentityDropListFieldBuilder(
|
||||||
_imagePaths,
|
controller.imagePaths,
|
||||||
AppLocalizations.of(context).reply_to,
|
AppLocalizations.of(context).reply_to,
|
||||||
controller.replyToOfIdentity.value,
|
controller.replyToOfIdentity.value,
|
||||||
controller.listEmailAddressOfReplyTo,
|
controller.listEmailAddressOfReplyTo,
|
||||||
@@ -291,7 +286,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
|
|||||||
buildIconWeb(
|
buildIconWeb(
|
||||||
iconSize: 24,
|
iconSize: 24,
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
_imagePaths.icComposerClose,
|
controller.imagePaths.icComposerClose,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
colorFilter: AppColor.colorDeleteContactIcon.asFilter()
|
colorFilter: AppColor.colorDeleteContactIcon.asFilter()
|
||||||
),
|
),
|
||||||
@@ -317,7 +312,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
|
|||||||
padding: const EdgeInsetsDirectional.only(end: 4.0),
|
padding: const EdgeInsetsDirectional.only(end: 4.0),
|
||||||
child: buildWrapIconStyleText(
|
child: buildWrapIconStyleText(
|
||||||
icon: buildIconWithTooltip(
|
icon: buildIconWithTooltip(
|
||||||
path: _imagePaths.icAddPicture,
|
path: controller.imagePaths.icAddPicture,
|
||||||
tooltip: AppLocalizations.of(context).insertImage
|
tooltip: AppLocalizations.of(context).insertImage
|
||||||
),
|
),
|
||||||
hasDropdown: false,
|
hasDropdown: false,
|
||||||
@@ -405,7 +400,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
|
|||||||
return Obx(() {
|
return Obx(() {
|
||||||
if (controller.isDefaultIdentitySupported.isTrue) {
|
if (controller.isDefaultIdentitySupported.isTrue) {
|
||||||
return SetDefaultIdentityCheckboxBuilder(
|
return SetDefaultIdentityCheckboxBuilder(
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
isCheck: controller.isDefaultIdentity.value,
|
isCheck: controller.isDefaultIdentity.value,
|
||||||
onCheckboxChanged: controller.onCheckboxChanged);
|
onCheckboxChanged: controller.onCheckboxChanged);
|
||||||
} else {
|
} else {
|
||||||
@@ -460,16 +455,16 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool _isMobile(BuildContext context) =>
|
bool _isMobile(BuildContext context) =>
|
||||||
_responsiveUtils.isPortraitMobile(context) ||
|
controller.responsiveUtils.isPortraitMobile(context) ||
|
||||||
_responsiveUtils.isLandscapeMobile(context);
|
controller.responsiveUtils.isLandscapeMobile(context);
|
||||||
|
|
||||||
double _getMaxWidth(BuildContext context) {
|
double _getMaxWidth(BuildContext context) {
|
||||||
if (_isMobile(context)) {
|
if (_isMobile(context)) {
|
||||||
return _responsiveUtils.getSizeScreenWidth(context);
|
return controller.responsiveUtils.getSizeScreenWidth(context);
|
||||||
} else if (_responsiveUtils.isDesktop(context)) {
|
} else if (controller.responsiveUtils.isDesktop(context)) {
|
||||||
return math.max(_responsiveUtils.getSizeScreenWidth(context) * 0.4, 800);
|
return math.max(controller.responsiveUtils.getSizeScreenWidth(context) * 0.4, 800);
|
||||||
} else {
|
} else {
|
||||||
return math.max(_responsiveUtils.getSizeScreenWidth(context) * 0.4, 700);
|
return math.max(controller.responsiveUtils.getSizeScreenWidth(context) * 0.4, 700);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,7 +15,7 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
|||||||
|
|
||||||
class LoginView extends BaseLoginView {
|
class LoginView extends BaseLoginView {
|
||||||
|
|
||||||
LoginView({Key? key}) : super(key: key);
|
const LoginView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -66,7 +66,7 @@ class LoginView extends BaseLoginView {
|
|||||||
children: [
|
children: [
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsets.only(
|
padding: EdgeInsets.only(
|
||||||
top: responsiveUtils.isHeightShortest(context) ? 64 : 0),
|
top: controller.responsiveUtils.isHeightShortest(context) ? 64 : 0),
|
||||||
child: Text(
|
child: Text(
|
||||||
AppLocalizations.of(context).login,
|
AppLocalizations.of(context).login,
|
||||||
style: const TextStyle(fontSize: 32, color: AppColor.colorNameEmail, fontWeight: FontWeight.w900)
|
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'),
|
key: const Key('login_arrow_back_button'),
|
||||||
onPressed: () => controller.handleBackInCredentialForm(),
|
onPressed: () => controller.handleBackInCredentialForm(),
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
imagePaths.icBack,
|
controller.imagePaths.icBack,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
colorFilter: AppColor.primaryColor.asFilter()
|
colorFilter: AppColor.primaryColor.asFilter()
|
||||||
)
|
)
|
||||||
@@ -127,7 +127,7 @@ class LoginView extends BaseLoginView {
|
|||||||
controller.formatUrl(pattern);
|
controller.formatUrl(pattern);
|
||||||
return controller.getAllRecentLoginUrlAction(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),
|
onSuggestionSelected: (loginUrl) => controller.formatUrl(loginUrl.url),
|
||||||
suggestionsBoxDecoration: const SuggestionsBoxDecoration(borderRadius: BorderRadius.all(Radius.circular(14))),
|
suggestionsBoxDecoration: const SuggestionsBoxDecoration(borderRadius: BorderRadius.all(Radius.circular(14))),
|
||||||
noItemsFoundBuilder: (context) => const SizedBox(),
|
noItemsFoundBuilder: (context) => const SizedBox(),
|
||||||
@@ -149,7 +149,7 @@ class LoginView extends BaseLoginView {
|
|||||||
Widget _buildNextButton(BuildContext context) {
|
Widget _buildNextButton(BuildContext context) {
|
||||||
return Container(
|
return Container(
|
||||||
margin: const EdgeInsets.only(bottom: 16, left: 24, right: 24),
|
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(
|
child: ElevatedButton(
|
||||||
key: const Key('nextToCredentialForm'),
|
key: const Key('nextToCredentialForm'),
|
||||||
style: ButtonStyle(
|
style: ButtonStyle(
|
||||||
@@ -184,7 +184,7 @@ class LoginView extends BaseLoginView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool _supportScrollForm(BuildContext context) {
|
bool _supportScrollForm(BuildContext context) {
|
||||||
return !(responsiveUtils.isMobile(context) && responsiveUtils.isPortrait(context));
|
return !(controller.responsiveUtils.isMobile(context) && controller.responsiveUtils.isPortrait(context));
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildLoadingProgress(BuildContext context) {
|
Widget _buildLoadingProgress(BuildContext context) {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
|||||||
|
|
||||||
class LoginView extends BaseLoginView {
|
class LoginView extends BaseLoginView {
|
||||||
|
|
||||||
LoginView({Key? key}) : super(key: key);
|
const LoginView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -20,7 +20,7 @@ class LoginView extends BaseLoginView {
|
|||||||
backgroundColor: AppColor.primaryLightColor,
|
backgroundColor: AppColor.primaryLightColor,
|
||||||
body: Center(child: SingleChildScrollView(
|
body: Center(child: SingleChildScrollView(
|
||||||
child: ResponsiveWidget(
|
child: ResponsiveWidget(
|
||||||
responsiveUtils: responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
mobile: _buildMobileForm(context),
|
mobile: _buildMobileForm(context),
|
||||||
desktop: _buildWebForm(context),
|
desktop: _buildWebForm(context),
|
||||||
))),
|
))),
|
||||||
@@ -71,7 +71,7 @@ class LoginView extends BaseLoginView {
|
|||||||
child: Align(
|
child: Align(
|
||||||
alignment: Alignment.bottomCenter,
|
alignment: Alignment.bottomCenter,
|
||||||
child: SvgPicture.asset(
|
child: SvgPicture.asset(
|
||||||
imagePaths.icPowerByLinagora,
|
controller.imagePaths.icPowerByLinagora,
|
||||||
width: 97,
|
width: 97,
|
||||||
height: 44,
|
height: 44,
|
||||||
fit: BoxFit.fill)))
|
fit: BoxFit.fill)))
|
||||||
@@ -101,7 +101,7 @@ class LoginView extends BaseLoginView {
|
|||||||
padding: const EdgeInsets.only(top: 24),
|
padding: const EdgeInsets.only(top: 24),
|
||||||
child: SloganBuilder(
|
child: SloganBuilder(
|
||||||
arrangedByHorizontal: true,
|
arrangedByHorizontal: true,
|
||||||
logoSVG: imagePaths.icJMAPStandard,
|
logoSVG: controller.imagePaths.icJMAPStandard,
|
||||||
sizeLogo: 48.0,
|
sizeLogo: 48.0,
|
||||||
paddingText: const EdgeInsets.only(left: 12),
|
paddingText: const EdgeInsets.only(left: 12),
|
||||||
text: AppLocalizations.of(context).jmapStandard,
|
text: AppLocalizations.of(context).jmapStandard,
|
||||||
@@ -112,7 +112,7 @@ class LoginView extends BaseLoginView {
|
|||||||
padding: const EdgeInsets.only(top: 16),
|
padding: const EdgeInsets.only(top: 16),
|
||||||
child: SloganBuilder(
|
child: SloganBuilder(
|
||||||
arrangedByHorizontal: true,
|
arrangedByHorizontal: true,
|
||||||
logoSVG: imagePaths.icEncrypted,
|
logoSVG: controller.imagePaths.icEncrypted,
|
||||||
sizeLogo: 48.0,
|
sizeLogo: 48.0,
|
||||||
paddingText: const EdgeInsets.only(left: 12),
|
paddingText: const EdgeInsets.only(left: 12),
|
||||||
text: AppLocalizations.of(context).encryptedMailbox,
|
text: AppLocalizations.of(context).encryptedMailbox,
|
||||||
@@ -123,7 +123,7 @@ class LoginView extends BaseLoginView {
|
|||||||
padding: const EdgeInsets.only(top: 16),
|
padding: const EdgeInsets.only(top: 16),
|
||||||
child: SloganBuilder(
|
child: SloganBuilder(
|
||||||
arrangedByHorizontal: true,
|
arrangedByHorizontal: true,
|
||||||
logoSVG: imagePaths.icTeam,
|
logoSVG: controller.imagePaths.icTeam,
|
||||||
sizeLogo: 48.0,
|
sizeLogo: 48.0,
|
||||||
paddingText: const EdgeInsets.only(left: 12),
|
paddingText: const EdgeInsets.only(left: 12),
|
||||||
text: AppLocalizations.of(context).manageEmailAsATeam,
|
text: AppLocalizations.of(context).manageEmailAsATeam,
|
||||||
@@ -134,7 +134,7 @@ class LoginView extends BaseLoginView {
|
|||||||
padding: const EdgeInsets.only(top: 16),
|
padding: const EdgeInsets.only(top: 16),
|
||||||
child: SloganBuilder(
|
child: SloganBuilder(
|
||||||
arrangedByHorizontal: true,
|
arrangedByHorizontal: true,
|
||||||
logoSVG: imagePaths.icIntegration,
|
logoSVG: controller.imagePaths.icIntegration,
|
||||||
sizeLogo: 48.0,
|
sizeLogo: 48.0,
|
||||||
paddingText: const EdgeInsets.only(left: 12),
|
paddingText: const EdgeInsets.only(left: 12),
|
||||||
text: AppLocalizations.of(context).multipleIntegrations,
|
text: AppLocalizations.of(context).multipleIntegrations,
|
||||||
@@ -144,7 +144,7 @@ class LoginView extends BaseLoginView {
|
|||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(top: 44),
|
padding: const EdgeInsets.only(top: 44),
|
||||||
child: SvgPicture.asset(
|
child: SvgPicture.asset(
|
||||||
imagePaths.icLoginGraphic,
|
controller.imagePaths.icLoginGraphic,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
alignment: Alignment.center
|
alignment: Alignment.center
|
||||||
)
|
)
|
||||||
@@ -202,7 +202,7 @@ class LoginView extends BaseLoginView {
|
|||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(top: 44, bottom: 10),
|
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,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
imagePaths.icTMailLogo,
|
controller.imagePaths.icTMailLogo,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
width: 36,
|
width: 36,
|
||||||
height: 36,
|
height: 36,
|
||||||
@@ -235,7 +235,7 @@ class LoginView extends BaseLoginView {
|
|||||||
Widget _buildSSOButton(BuildContext context) {
|
Widget _buildSSOButton(BuildContext context) {
|
||||||
return Container(
|
return Container(
|
||||||
margin: const EdgeInsets.only(bottom: 16, left: 24, right: 24),
|
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(
|
child: ElevatedButton(
|
||||||
key: const Key('ssoSubmitForm'),
|
key: const Key('ssoSubmitForm'),
|
||||||
style: ButtonStyle(
|
style: ButtonStyle(
|
||||||
|
|||||||
@@ -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:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
|
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
|
||||||
@@ -12,7 +10,4 @@ abstract class BaseMailboxView extends GetWidget<MailboxController>
|
|||||||
MailboxWidgetMixin {
|
MailboxWidgetMixin {
|
||||||
|
|
||||||
BaseMailboxView({Key? key}) : super(key: key);
|
BaseMailboxView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final imagePaths = Get.find<ImagePaths>();
|
|
||||||
}
|
}
|
||||||
@@ -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/navigation_router.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.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/routes/route_utils.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
|
||||||
|
|
||||||
class MailboxController extends BaseMailboxController with MailboxActionHandlerMixin {
|
class MailboxController extends BaseMailboxController with MailboxActionHandlerMixin {
|
||||||
|
|
||||||
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final _uuid = Get.find<Uuid>();
|
|
||||||
final isMailboxListScrollable = false.obs;
|
final isMailboxListScrollable = false.obs;
|
||||||
final CreateNewMailboxInteractor _createNewMailboxInteractor;
|
final CreateNewMailboxInteractor _createNewMailboxInteractor;
|
||||||
final DeleteMultipleMailboxInteractor _deleteMultipleMailboxInteractor;
|
final DeleteMultipleMailboxInteractor _deleteMultipleMailboxInteractor;
|
||||||
@@ -302,7 +297,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
|
|
||||||
void _initCollapseMailboxCategories() {
|
void _initCollapseMailboxCategories() {
|
||||||
if (kIsWeb && currentContext != null
|
if (kIsWeb && currentContext != null
|
||||||
&& (_responsiveUtils.isMobile(currentContext!) || _responsiveUtils.isTablet(currentContext!))) {
|
&& (responsiveUtils.isMobile(currentContext!) || responsiveUtils.isTablet(currentContext!))) {
|
||||||
mailboxCategoriesExpandMode.value = MailboxCategoriesExpandMode(
|
mailboxCategoriesExpandMode.value = MailboxCategoriesExpandMode(
|
||||||
defaultMailbox: ExpandMode.COLLAPSE,
|
defaultMailbox: ExpandMode.COLLAPSE,
|
||||||
personalFolders: ExpandMode.COLLAPSE,
|
personalFolders: ExpandMode.COLLAPSE,
|
||||||
@@ -533,7 +528,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
: await push(AppRoutes.mailboxCreator, arguments: arguments);
|
: await push(AppRoutes.mailboxCreator, arguments: arguments);
|
||||||
|
|
||||||
if (result != null && result is NewMailboxArguments) {
|
if (result != null && result is NewMailboxArguments) {
|
||||||
final generateCreateId = Id(_uuid.v1());
|
final generateCreateId = Id(uuid.v1());
|
||||||
_createNewMailboxAction(session, accountId, CreateNewMailboxRequest(
|
_createNewMailboxAction(session, accountId, CreateNewMailboxRequest(
|
||||||
generateCreateId,
|
generateCreateId,
|
||||||
result.newName,
|
result.newName,
|
||||||
@@ -548,11 +543,11 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
|
|
||||||
void _createNewMailboxSuccess(CreateNewMailboxSuccess success) {
|
void _createNewMailboxSuccess(CreateNewMailboxSuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).createFolderSuccessfullyMessage(success.newMailbox.name?.name ?? ''),
|
AppLocalizations.of(currentContext!).createFolderSuccessfullyMessage(success.newMailbox.name?.name ?? ''),
|
||||||
leadingSVGIconColor: Colors.white,
|
leadingSVGIconColor: Colors.white,
|
||||||
leadingSVGIcon: _imagePaths.icFolderMailbox);
|
leadingSVGIcon: imagePaths.icFolderMailbox);
|
||||||
|
|
||||||
_newFolderId = success.newMailbox.id;
|
_newFolderId = success.newMailbox.id;
|
||||||
}
|
}
|
||||||
@@ -567,7 +562,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
if (exception is ErrorMethodResponse) {
|
if (exception is ErrorMethodResponse) {
|
||||||
messageError = exception.description ?? AppLocalizations.of(currentContext!).createNewFolderFailure;
|
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(
|
openDialogRenameMailboxAction(
|
||||||
context,
|
context,
|
||||||
selectedMailboxList.first,
|
selectedMailboxList.first,
|
||||||
_responsiveUtils,
|
responsiveUtils,
|
||||||
onRenameMailboxAction: _renameMailboxAction
|
onRenameMailboxAction: _renameMailboxAction
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
@@ -705,7 +700,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
jmap.State? currentMailboxState
|
jmap.State? currentMailboxState
|
||||||
) {
|
) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).deleteFoldersSuccessfully);
|
AppLocalizations.of(currentContext!).deleteFoldersSuccessfully);
|
||||||
}
|
}
|
||||||
@@ -721,8 +716,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
BuildContext context,
|
BuildContext context,
|
||||||
List<PresentationMailbox> selectedMailboxList
|
List<PresentationMailbox> selectedMailboxList
|
||||||
) {
|
) {
|
||||||
if (_responsiveUtils.isLandscapeMobile(context) ||
|
if (responsiveUtils.isLandscapeMobile(context) ||
|
||||||
_responsiveUtils.isPortraitMobile(context)) {
|
responsiveUtils.isPortraitMobile(context)) {
|
||||||
(ConfirmationDialogActionSheetBuilder(context)
|
(ConfirmationDialogActionSheetBuilder(context)
|
||||||
..messageText(AppLocalizations.of(context)
|
..messageText(AppLocalizations.of(context)
|
||||||
.messageConfirmationDialogDeleteMultipleFolder(selectedMailboxList.length))
|
.messageConfirmationDialogDeleteMultipleFolder(selectedMailboxList.length))
|
||||||
@@ -735,12 +730,12 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
showDialog(
|
showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
||||||
builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(_imagePaths)
|
builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
|
||||||
..key(const Key('confirm_dialog_delete_multiple_mailbox'))
|
..key(const Key('confirm_dialog_delete_multiple_mailbox'))
|
||||||
..title(AppLocalizations.of(context).deleteFolders)
|
..title(AppLocalizations.of(context).deleteFolders)
|
||||||
..content(AppLocalizations.of(context)
|
..content(AppLocalizations.of(context)
|
||||||
.messageConfirmationDialogDeleteMultipleFolder(selectedMailboxList.length))
|
.messageConfirmationDialogDeleteMultipleFolder(selectedMailboxList.length))
|
||||||
..addIcon(SvgPicture.asset(_imagePaths.icRemoveDialog,
|
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog,
|
||||||
fit: BoxFit.fill))
|
fit: BoxFit.fill))
|
||||||
..colorConfirmButton(AppColor.colorConfirmActionDialog)
|
..colorConfirmButton(AppColor.colorConfirmActionDialog)
|
||||||
..styleTextConfirmButton(const TextStyle(
|
..styleTextConfirmButton(const TextStyle(
|
||||||
@@ -789,10 +784,10 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
|
|
||||||
void _deleteMailboxFailure(DeleteMultipleMailboxFailure failure) {
|
void _deleteMailboxFailure(DeleteMultipleMailboxFailure failure) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).deleteFoldersFailure,
|
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
|
if (success.moveAction == MoveAction.moving
|
||||||
&& currentOverlayContext != null
|
&& currentOverlayContext != null
|
||||||
&& currentContext != null) {
|
&& currentContext != null) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).movedToFolder(
|
AppLocalizations.of(currentContext!).movedToFolder(
|
||||||
success.destinationMailboxDisplayName ?? AppLocalizations.of(currentContext!).allFolders),
|
success.destinationMailboxDisplayName ?? AppLocalizations.of(currentContext!).allFolders),
|
||||||
@@ -847,11 +842,11 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
destinationMailboxId: success.parentId,
|
destinationMailboxId: success.parentId,
|
||||||
parentId: success.destinationMailboxId));
|
parentId: success.destinationMailboxId));
|
||||||
},
|
},
|
||||||
leadingSVGIcon: _imagePaths.icFolderMailbox,
|
leadingSVGIcon: imagePaths.icFolderMailbox,
|
||||||
leadingSVGIconColor: Colors.white,
|
leadingSVGIconColor: Colors.white,
|
||||||
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
||||||
textColor: Colors.white,
|
textColor: Colors.white,
|
||||||
actionIcon: SvgPicture.asset(_imagePaths.icUndo));
|
actionIcon: SvgPicture.asset(imagePaths.icUndo));
|
||||||
}
|
}
|
||||||
|
|
||||||
_refreshMailboxChanges(
|
_refreshMailboxChanges(
|
||||||
@@ -934,8 +929,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
case MailboxActions.delete:
|
case MailboxActions.delete:
|
||||||
openConfirmationDialogDeleteMailboxAction(
|
openConfirmationDialogDeleteMailboxAction(
|
||||||
context,
|
context,
|
||||||
_responsiveUtils,
|
responsiveUtils,
|
||||||
_imagePaths,
|
imagePaths,
|
||||||
mailbox,
|
mailbox,
|
||||||
onDeleteMailboxAction: _deleteMailboxAction
|
onDeleteMailboxAction: _deleteMailboxAction
|
||||||
);
|
);
|
||||||
@@ -944,7 +939,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
openDialogRenameMailboxAction(
|
openDialogRenameMailboxAction(
|
||||||
context,
|
context,
|
||||||
mailbox,
|
mailbox,
|
||||||
_responsiveUtils,
|
responsiveUtils,
|
||||||
onRenameMailboxAction: _renameMailboxAction
|
onRenameMailboxAction: _renameMailboxAction
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
@@ -1168,7 +1163,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
{List<MailboxId>? listDescendantMailboxIds}
|
{List<MailboxId>? listDescendantMailboxIds}
|
||||||
) {
|
) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toastMsgHideFolderSuccess,
|
AppLocalizations.of(currentContext!).toastMsgHideFolderSuccess,
|
||||||
actionName: AppLocalizations.of(currentContext!).undo,
|
actionName: AppLocalizations.of(currentContext!).undo,
|
||||||
@@ -1176,11 +1171,11 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
mailboxIdSubscribed,
|
mailboxIdSubscribed,
|
||||||
listDescendantMailboxIds: listDescendantMailboxIds
|
listDescendantMailboxIds: listDescendantMailboxIds
|
||||||
),
|
),
|
||||||
leadingSVGIcon: _imagePaths.icFolderMailbox,
|
leadingSVGIcon: imagePaths.icFolderMailbox,
|
||||||
leadingSVGIconColor: Colors.white,
|
leadingSVGIconColor: Colors.white,
|
||||||
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
||||||
textColor: Colors.white,
|
textColor: Colors.white,
|
||||||
actionIcon: SvgPicture.asset(_imagePaths.icUndo));
|
actionIcon: SvgPicture.asset(imagePaths.icUndo));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ class MailboxView extends BaseMailboxView {
|
|||||||
ThemeUtils.setStatusBarTransparentColor();
|
ThemeUtils.setStatusBarTransparentColor();
|
||||||
|
|
||||||
return SafeArea(bottom: false, left: false, right: false,
|
return SafeArea(bottom: false, left: false, right: false,
|
||||||
top: responsiveUtils.isMobile(context),
|
top: controller.responsiveUtils.isMobile(context),
|
||||||
child: ClipRRect(
|
child: ClipRRect(
|
||||||
borderRadius: responsiveUtils.isPortraitMobile(context)
|
borderRadius: controller.responsiveUtils.isPortraitMobile(context)
|
||||||
? const BorderRadius.only(
|
? const BorderRadius.only(
|
||||||
topRight: Radius.circular(14),
|
topRight: Radius.circular(14),
|
||||||
topLeft: Radius.circular(14))
|
topLeft: Radius.circular(14))
|
||||||
@@ -88,7 +88,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
final appInformation = controller.mailboxDashBoardController.appInformation.value;
|
final appInformation = controller.mailboxDashBoardController.appInformation.value;
|
||||||
if (appInformation != null
|
if (appInformation != null
|
||||||
&& !controller.isSelectionEnabled()) {
|
&& !controller.isSelectionEnabled()) {
|
||||||
if (responsiveUtils.isLandscapeMobile(context)) {
|
if (controller.responsiveUtils.isLandscapeMobile(context)) {
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
return _buildVersionInformation(context, appInformation);
|
return _buildVersionInformation(context, appInformation);
|
||||||
@@ -108,7 +108,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Padding(
|
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(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
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),
|
const Divider(color: AppColor.colorDividerMailbox, height: 1),
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
@@ -132,7 +132,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
|
|
||||||
Widget _buildCloseScreenButton(BuildContext context) {
|
Widget _buildCloseScreenButton(BuildContext context) {
|
||||||
return buildIconWeb(
|
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,
|
tooltip: AppLocalizations.of(context).close,
|
||||||
onTap: () => controller.closeMailboxScreen(context));
|
onTap: () => controller.closeMailboxScreen(context));
|
||||||
}
|
}
|
||||||
@@ -163,7 +163,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
padding: const EdgeInsets.only(bottom: 16),
|
padding: const EdgeInsets.only(bottom: 16),
|
||||||
child: Column(children: [
|
child: Column(children: [
|
||||||
Obx(() {
|
Obx(() {
|
||||||
if (controller.isSelectionEnabled() && responsiveUtils.isLandscapeMobile(context)) {
|
if (controller.isSelectionEnabled() && controller.responsiveUtils.isLandscapeMobile(context)) {
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
return UserInformationWidget(
|
return UserInformationWidget(
|
||||||
@@ -180,7 +180,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
}),
|
}),
|
||||||
Obx(() => MailboxLoadingBarWidget(viewState: controller.viewState.value)),
|
Obx(() => MailboxLoadingBarWidget(viewState: controller.viewState.value)),
|
||||||
AppConfig.appGridDashboardAvailable
|
AppConfig.appGridDashboardAvailable
|
||||||
? buildAppGridDashboard(context, responsiveUtils, imagePaths, controller)
|
? buildAppGridDashboard(context, controller.responsiveUtils, controller.imagePaths, controller)
|
||||||
: const SizedBox.shrink(),
|
: const SizedBox.shrink(),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
@@ -212,7 +212,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
const SizedBox(height: 12),
|
const SizedBox(height: 12),
|
||||||
Container(
|
Container(
|
||||||
margin: EdgeInsetsDirectional.only(
|
margin: EdgeInsetsDirectional.only(
|
||||||
start: responsiveUtils.isLandscapeMobile(context) ? 0 : 8,
|
start: controller.responsiveUtils.isLandscapeMobile(context) ? 0 : 8,
|
||||||
end: 16),
|
end: 16),
|
||||||
padding: const EdgeInsetsDirectional.only(start: 8),
|
padding: const EdgeInsetsDirectional.only(start: 8),
|
||||||
child: Row(
|
child: Row(
|
||||||
@@ -232,7 +232,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
minSize: 40,
|
minSize: 40,
|
||||||
iconPadding: EdgeInsets.zero,
|
iconPadding: EdgeInsets.zero,
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
imagePaths.icSearchBar,
|
controller.imagePaths.icSearchBar,
|
||||||
colorFilter: AppColor.colorTextButton.asFilter(),
|
colorFilter: AppColor.colorTextButton.asFilter(),
|
||||||
fit: BoxFit.fill
|
fit: BoxFit.fill
|
||||||
),
|
),
|
||||||
@@ -245,7 +245,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
iconPadding: EdgeInsets.zero,
|
iconPadding: EdgeInsets.zero,
|
||||||
splashRadius: 15,
|
splashRadius: 15,
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
imagePaths.icAddNewFolder,
|
controller.imagePaths.icAddNewFolder,
|
||||||
colorFilter: AppColor.colorTextButton.asFilter(),
|
colorFilter: AppColor.colorTextButton.asFilter(),
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
tooltip: AppLocalizations.of(context).newFolder,
|
tooltip: AppLocalizations.of(context).newFolder,
|
||||||
@@ -285,7 +285,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
return Padding(
|
return Padding(
|
||||||
padding: EdgeInsetsDirectional.only(
|
padding: EdgeInsetsDirectional.only(
|
||||||
start: 4,
|
start: 4,
|
||||||
end: responsiveUtils.isLandscapeMobile(context) ? 8 : 28),
|
end: controller.responsiveUtils.isLandscapeMobile(context) ? 8 : 28),
|
||||||
child: Row(children: [
|
child: Row(children: [
|
||||||
buildIconWeb(
|
buildIconWeb(
|
||||||
minSize: 40,
|
minSize: 40,
|
||||||
@@ -294,8 +294,8 @@ class MailboxView extends BaseMailboxView {
|
|||||||
splashRadius: 15,
|
splashRadius: 15,
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
categories.getExpandMode(controller.mailboxCategoriesExpandMode.value) == ExpandMode.EXPAND
|
categories.getExpandMode(controller.mailboxCategoriesExpandMode.value) == ExpandMode.EXPAND
|
||||||
? imagePaths.icArrowBottom
|
? controller.imagePaths.icArrowBottom
|
||||||
: DirectionUtils.isDirectionRTLByLanguage(context) ? imagePaths.icArrowLeft : imagePaths.icArrowRight,
|
: DirectionUtils.isDirectionRTLByLanguage(context) ? controller.imagePaths.icArrowLeft : controller.imagePaths.icArrowRight,
|
||||||
colorFilter: AppColor.primaryColor.asFilter(),
|
colorFilter: AppColor.primaryColor.asFilter(),
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
tooltip: AppLocalizations.of(context).collapse,
|
tooltip: AppLocalizations.of(context).collapse,
|
||||||
@@ -312,7 +312,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
margin: EdgeInsetsDirectional.only(
|
margin: EdgeInsetsDirectional.only(
|
||||||
start: responsiveUtils.isLandscapeMobile(context) ? 0 : 8,
|
start: controller.responsiveUtils.isLandscapeMobile(context) ? 0 : 8,
|
||||||
end: 16
|
end: 16
|
||||||
),
|
),
|
||||||
padding: const EdgeInsetsDirectional.only(start: 12),
|
padding: const EdgeInsetsDirectional.only(start: 12),
|
||||||
@@ -348,7 +348,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
mailboxNode: mailboxNode,
|
mailboxNode: mailboxNode,
|
||||||
selectionMode: controller.currentSelectMode.value,
|
selectionMode: controller.currentSelectMode.value,
|
||||||
mailboxNodeSelected: controller.mailboxDashBoardController.selectedMailbox.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),
|
onOpenMailboxFolderClick: (mailboxNode) => controller.openMailbox(context, mailboxNode.item),
|
||||||
onExpandFolderActionClick: (mailboxNode) => controller.toggleMailboxFolder(mailboxNode, controller.mailboxListScrollController),
|
onExpandFolderActionClick: (mailboxNode) => controller.toggleMailboxFolder(mailboxNode, controller.mailboxListScrollController),
|
||||||
onSelectMailboxFolderClick: (mailboxNode) => controller.selectMailboxNode(mailboxNode),
|
onSelectMailboxFolderClick: (mailboxNode) => controller.selectMailboxNode(mailboxNode),
|
||||||
@@ -360,7 +360,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
mailboxNode: mailboxNode,
|
mailboxNode: mailboxNode,
|
||||||
selectionMode: controller.currentSelectMode.value,
|
selectionMode: controller.currentSelectMode.value,
|
||||||
mailboxNodeSelected: controller.mailboxDashBoardController.selectedMailbox.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),
|
onOpenMailboxFolderClick: (mailboxNode) => controller.openMailbox(context, mailboxNode.item),
|
||||||
onSelectMailboxFolderClick: (mailboxNode) => controller.selectMailboxNode(mailboxNode)
|
onSelectMailboxFolderClick: (mailboxNode) => controller.selectMailboxNode(mailboxNode)
|
||||||
));
|
));
|
||||||
|
|||||||
@@ -22,25 +22,25 @@ class MailboxView extends BaseMailboxView {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Drawer(
|
return Drawer(
|
||||||
elevation: responsiveUtils.isDesktop(context) ? 0 : 16.0,
|
elevation: controller.responsiveUtils.isDesktop(context) ? 0 : 16.0,
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
backgroundColor: responsiveUtils.isWebDesktop(context)
|
backgroundColor: controller.responsiveUtils.isWebDesktop(context)
|
||||||
? AppColor.colorBgDesktop
|
? AppColor.colorBgDesktop
|
||||||
: Colors.white,
|
: Colors.white,
|
||||||
body: Column(children: [
|
body: Column(children: [
|
||||||
if (!responsiveUtils.isDesktop(context)) _buildLogoApp(context),
|
if (!controller.responsiveUtils.isDesktop(context)) _buildLogoApp(context),
|
||||||
if (!responsiveUtils.isDesktop(context))
|
if (!controller.responsiveUtils.isDesktop(context))
|
||||||
const Divider(
|
const Divider(
|
||||||
color: AppColor.colorDividerMailbox,
|
color: AppColor.colorDividerMailbox,
|
||||||
height: 0.5,
|
height: 0.5,
|
||||||
thickness: 0.2),
|
thickness: 0.2),
|
||||||
Expanded(child: Container(
|
Expanded(child: Container(
|
||||||
padding: EdgeInsetsDirectional.only(start: responsiveUtils.isDesktop(context) ? 16 : 0),
|
padding: EdgeInsetsDirectional.only(start: controller.responsiveUtils.isDesktop(context) ? 16 : 0),
|
||||||
color: responsiveUtils.isDesktop(context)
|
color: controller.responsiveUtils.isDesktop(context)
|
||||||
? AppColor.colorBgDesktop
|
? AppColor.colorBgDesktop
|
||||||
: Colors.white,
|
: Colors.white,
|
||||||
child: Container(
|
child: Container(
|
||||||
color: responsiveUtils.isDesktop(context)
|
color: controller.responsiveUtils.isDesktop(context)
|
||||||
? AppColor.colorBgDesktop
|
? AppColor.colorBgDesktop
|
||||||
: Colors.white,
|
: Colors.white,
|
||||||
child: _buildListMailbox(context),
|
child: _buildListMailbox(context),
|
||||||
@@ -56,9 +56,9 @@ class MailboxView extends BaseMailboxView {
|
|||||||
return Container(
|
return Container(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
padding: EdgeInsetsDirectional.only(
|
padding: EdgeInsetsDirectional.only(
|
||||||
top: responsiveUtils.isDesktop(context) ? 25 : 16,
|
top: controller.responsiveUtils.isDesktop(context) ? 25 : 16,
|
||||||
bottom: responsiveUtils.isDesktop(context) ? 25 : 16,
|
bottom: controller.responsiveUtils.isDesktop(context) ? 25 : 16,
|
||||||
start: responsiveUtils.isDesktop(context) ? 32 : 16,
|
start: controller.responsiveUtils.isDesktop(context) ? 32 : 16,
|
||||||
),
|
),
|
||||||
child: Row(children: [
|
child: Row(children: [
|
||||||
SloganBuilder(
|
SloganBuilder(
|
||||||
@@ -66,7 +66,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
text: AppLocalizations.of(context).app_name,
|
text: AppLocalizations.of(context).app_name,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
|
textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
|
||||||
logoSVG: imagePaths.icTMailLogo
|
logoSVG: controller.imagePaths.icTMailLogo
|
||||||
),
|
),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
if (controller.mailboxDashBoardController.appInformation.value != null) {
|
if (controller.mailboxDashBoardController.appInformation.value != null) {
|
||||||
@@ -98,9 +98,9 @@ class MailboxView extends BaseMailboxView {
|
|||||||
controller: controller.mailboxListScrollController,
|
controller: controller.mailboxListScrollController,
|
||||||
key: const PageStorageKey('mailbox_list'),
|
key: const PageStorageKey('mailbox_list'),
|
||||||
physics: const AlwaysScrollableScrollPhysics(),
|
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: [
|
child: Column(children: [
|
||||||
if (!responsiveUtils.isDesktop(context))
|
if (!controller.responsiveUtils.isDesktop(context))
|
||||||
Obx(() => UserInformationWidget(
|
Obx(() => UserInformationWidget(
|
||||||
userProfile: controller.mailboxDashBoardController.userProfile.value,
|
userProfile: controller.mailboxDashBoardController.userProfile.value,
|
||||||
subtitle: AppLocalizations.of(context).manage_account,
|
subtitle: AppLocalizations.of(context).manage_account,
|
||||||
@@ -113,8 +113,8 @@ class MailboxView extends BaseMailboxView {
|
|||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
Obx(() => MailboxLoadingBarWidget(viewState: controller.viewState.value)),
|
Obx(() => MailboxLoadingBarWidget(viewState: controller.viewState.value)),
|
||||||
AppConfig.appGridDashboardAvailable && responsiveUtils.isWebNotDesktop(context)
|
AppConfig.appGridDashboardAvailable && controller.responsiveUtils.isWebNotDesktop(context)
|
||||||
? buildAppGridDashboard(context, responsiveUtils, imagePaths, controller)
|
? buildAppGridDashboard(context, controller.responsiveUtils, controller.imagePaths, controller)
|
||||||
: const SizedBox.shrink(),
|
: const SizedBox.shrink(),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
@@ -133,7 +133,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
const SizedBox(height: 13),
|
const SizedBox(height: 13),
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsetsDirectional.only(
|
padding: EdgeInsetsDirectional.only(
|
||||||
start: responsiveUtils.isDesktop(context) ? 0 : 12,
|
start: controller.responsiveUtils.isDesktop(context) ? 0 : 12,
|
||||||
bottom: 8
|
bottom: 8
|
||||||
),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
@@ -148,14 +148,14 @@ class MailboxView extends BaseMailboxView {
|
|||||||
)
|
)
|
||||||
)),
|
)),
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsetsDirectional.only(end: responsiveUtils.isDesktop(context) ? 0 : 12),
|
padding: EdgeInsetsDirectional.only(end: controller.responsiveUtils.isDesktop(context) ? 0 : 12),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
buildIconWeb(
|
buildIconWeb(
|
||||||
minSize: 40,
|
minSize: 40,
|
||||||
iconPadding: EdgeInsets.zero,
|
iconPadding: EdgeInsets.zero,
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
imagePaths.icSearchBar,
|
controller.imagePaths.icSearchBar,
|
||||||
colorFilter: AppColor.colorTextButton.asFilter(),
|
colorFilter: AppColor.colorTextButton.asFilter(),
|
||||||
fit: BoxFit.fill
|
fit: BoxFit.fill
|
||||||
),
|
),
|
||||||
@@ -167,7 +167,7 @@ class MailboxView extends BaseMailboxView {
|
|||||||
iconPadding: EdgeInsets.zero,
|
iconPadding: EdgeInsets.zero,
|
||||||
splashRadius: 15,
|
splashRadius: 15,
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
imagePaths.icAddNewFolder,
|
controller.imagePaths.icAddNewFolder,
|
||||||
colorFilter: AppColor.colorTextButton.asFilter(),
|
colorFilter: AppColor.colorTextButton.asFilter(),
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
tooltip: AppLocalizations.of(context).newFolder,
|
tooltip: AppLocalizations.of(context).newFolder,
|
||||||
@@ -233,8 +233,8 @@ class MailboxView extends BaseMailboxView {
|
|||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
padding: EdgeInsets.only(
|
padding: EdgeInsets.only(
|
||||||
right: responsiveUtils.isDesktop(context) ? 0 : 16,
|
right: controller.responsiveUtils.isDesktop(context) ? 0 : 16,
|
||||||
left: responsiveUtils.isDesktop(context) ? 0 : 16),
|
left: controller.responsiveUtils.isDesktop(context) ? 0 : 16),
|
||||||
child: TreeView(
|
child: TreeView(
|
||||||
key: Key('${categories.keyValue}_mailbox_list'),
|
key: Key('${categories.keyValue}_mailbox_list'),
|
||||||
children: _buildListChildTileWidget(
|
children: _buildListChildTileWidget(
|
||||||
@@ -255,8 +255,8 @@ class MailboxView extends BaseMailboxView {
|
|||||||
children: [
|
children: [
|
||||||
buildHeaderMailboxCategory(
|
buildHeaderMailboxCategory(
|
||||||
context,
|
context,
|
||||||
responsiveUtils,
|
controller.responsiveUtils,
|
||||||
imagePaths,
|
controller.imagePaths,
|
||||||
categories,
|
categories,
|
||||||
controller,
|
controller,
|
||||||
toggleMailboxCategories: controller.toggleMailboxCategories
|
toggleMailboxCategories: controller.toggleMailboxCategories
|
||||||
@@ -295,8 +295,8 @@ class MailboxView extends BaseMailboxView {
|
|||||||
onMenuActionClick: (position, mailboxNode) {
|
onMenuActionClick: (position, mailboxNode) {
|
||||||
openMailboxMenuActionOnWeb(
|
openMailboxMenuActionOnWeb(
|
||||||
context,
|
context,
|
||||||
imagePaths,
|
controller.imagePaths,
|
||||||
responsiveUtils,
|
controller.responsiveUtils,
|
||||||
position,
|
position,
|
||||||
mailboxNode.item,
|
mailboxNode.item,
|
||||||
controller
|
controller
|
||||||
@@ -316,8 +316,8 @@ class MailboxView extends BaseMailboxView {
|
|||||||
onMenuActionClick: (position, mailboxNode) {
|
onMenuActionClick: (position, mailboxNode) {
|
||||||
openMailboxMenuActionOnWeb(
|
openMailboxMenuActionOnWeb(
|
||||||
context,
|
context,
|
||||||
imagePaths,
|
controller.imagePaths,
|
||||||
responsiveUtils,
|
controller.responsiveUtils,
|
||||||
position,
|
position,
|
||||||
mailboxNode.item,
|
mailboxNode.item,
|
||||||
controller
|
controller
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
|
||||||
import 'package:core/presentation/utils/style_utils.dart';
|
import 'package:core/presentation/utils/style_utils.dart';
|
||||||
import 'package:core/presentation/views/text/text_field_builder.dart';
|
import 'package:core/presentation/views/text/text_field_builder.dart';
|
||||||
import 'package:core/utils/app_logger.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<MailboxCreatorController> {
|
class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
|
||||||
|
|
||||||
final _maxHeight = 656.0;
|
final _maxHeight = 656.0;
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
final controller = Get.find<MailboxCreatorController>();
|
final controller = Get.find<MailboxCreatorController>();
|
||||||
@@ -38,7 +34,7 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
|
|||||||
borderOnForeground: false,
|
borderOnForeground: false,
|
||||||
color: Colors.transparent,
|
color: Colors.transparent,
|
||||||
child: SafeArea(
|
child: SafeArea(
|
||||||
top: PlatformInfo.isMobile && _responsiveUtils.isPortraitMobile(context),
|
top: PlatformInfo.isMobile && controller.responsiveUtils.isPortraitMobile(context),
|
||||||
bottom: false,
|
bottom: false,
|
||||||
left: false,
|
left: false,
|
||||||
right: false,
|
right: false,
|
||||||
@@ -69,8 +65,8 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
|
|||||||
child: SafeArea(
|
child: SafeArea(
|
||||||
top: false,
|
top: false,
|
||||||
bottom: false,
|
bottom: false,
|
||||||
left: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context),
|
left: PlatformInfo.isMobile && controller.responsiveUtils.isLandscapeMobile(context),
|
||||||
right: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context),
|
right: PlatformInfo.isMobile && controller.responsiveUtils.isLandscapeMobile(context),
|
||||||
child: Column(children: [
|
child: Column(children: [
|
||||||
_buildAppBar(context),
|
_buildAppBar(context),
|
||||||
const Divider(color: AppColor.colorDividerDestinationPicker, height: 1),
|
const Divider(color: AppColor.colorDividerDestinationPicker, height: 1),
|
||||||
@@ -148,7 +144,7 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
|
|||||||
child: Row(children: [
|
child: Row(children: [
|
||||||
const SizedBox(width: 12),
|
const SizedBox(width: 12),
|
||||||
Obx(() => SvgPicture.asset(
|
Obx(() => SvgPicture.asset(
|
||||||
controller.selectedMailbox.value?.getMailboxIcon(_imagePaths) ?? _imagePaths.icFolderMailbox,
|
controller.selectedMailbox.value?.getMailboxIcon(controller.imagePaths) ?? controller.imagePaths.icFolderMailbox,
|
||||||
width: PlatformInfo.isWeb ? 20 : 24,
|
width: PlatformInfo.isWeb ? 20 : 24,
|
||||||
height: PlatformInfo.isWeb ? 20 : 24,
|
height: PlatformInfo.isWeb ? 20 : 24,
|
||||||
fit: BoxFit.fill)),
|
fit: BoxFit.fill)),
|
||||||
@@ -168,7 +164,9 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
|
|||||||
IconButton(
|
IconButton(
|
||||||
color: AppColor.primaryColor,
|
color: AppColor.primaryColor,
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
DirectionUtils.isDirectionRTLByLanguage(context) ? _imagePaths.icBack : _imagePaths.icCollapseFolder,
|
DirectionUtils.isDirectionRTLByLanguage(context)
|
||||||
|
? controller.imagePaths.icBack
|
||||||
|
: controller.imagePaths.icCollapseFolder,
|
||||||
colorFilter: AppColor.colorCollapseMailbox.asFilter(),
|
colorFilter: AppColor.colorCollapseMailbox.asFilter(),
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
onPressed: () => controller.selectMailboxLocation(context))
|
onPressed: () => controller.selectMailboxLocation(context))
|
||||||
@@ -180,14 +178,14 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
|
|||||||
|
|
||||||
double _getWidthView(BuildContext context) {
|
double _getWidthView(BuildContext context) {
|
||||||
if (PlatformInfo.isWeb) {
|
if (PlatformInfo.isWeb) {
|
||||||
if (_responsiveUtils.isMobile(context)) {
|
if (controller.responsiveUtils.isMobile(context)) {
|
||||||
return double.infinity;
|
return double.infinity;
|
||||||
} else {
|
} else {
|
||||||
return 556;
|
return 556;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.isLandscapeMobile(context) ||
|
if (controller.responsiveUtils.isLandscapeMobile(context) ||
|
||||||
_responsiveUtils.isPortraitMobile(context)) {
|
controller.responsiveUtils.isPortraitMobile(context)) {
|
||||||
return double.infinity;
|
return double.infinity;
|
||||||
} else {
|
} else {
|
||||||
return 556;
|
return 556;
|
||||||
@@ -197,21 +195,21 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
|
|||||||
|
|
||||||
double _getHeightView(BuildContext context) {
|
double _getHeightView(BuildContext context) {
|
||||||
if (PlatformInfo.isWeb) {
|
if (PlatformInfo.isWeb) {
|
||||||
if (_responsiveUtils.isMobile(context)) {
|
if (controller.responsiveUtils.isMobile(context)) {
|
||||||
return double.infinity;
|
return double.infinity;
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
||||||
return _maxHeight;
|
return _maxHeight;
|
||||||
} else {
|
} else {
|
||||||
return double.infinity;
|
return double.infinity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.isLandscapeMobile(context) ||
|
if (controller.responsiveUtils.isLandscapeMobile(context) ||
|
||||||
_responsiveUtils.isPortraitMobile(context)) {
|
controller.responsiveUtils.isPortraitMobile(context)) {
|
||||||
return double.infinity;
|
return double.infinity;
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
||||||
return _maxHeight;
|
return _maxHeight;
|
||||||
} else {
|
} else {
|
||||||
return double.infinity;
|
return double.infinity;
|
||||||
@@ -223,21 +221,21 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
|
|||||||
|
|
||||||
EdgeInsets _getMarginView(BuildContext context) {
|
EdgeInsets _getMarginView(BuildContext context) {
|
||||||
if (PlatformInfo.isWeb) {
|
if (PlatformInfo.isWeb) {
|
||||||
if (_responsiveUtils.isMobile(context)) {
|
if (controller.responsiveUtils.isMobile(context)) {
|
||||||
return EdgeInsets.zero;
|
return EdgeInsets.zero;
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
||||||
return const EdgeInsets.symmetric(vertical: 12);
|
return const EdgeInsets.symmetric(vertical: 12);
|
||||||
} else {
|
} else {
|
||||||
return const EdgeInsets.symmetric(vertical: 50);
|
return const EdgeInsets.symmetric(vertical: 50);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.isLandscapeMobile(context) ||
|
if (controller.responsiveUtils.isLandscapeMobile(context) ||
|
||||||
_responsiveUtils.isPortraitMobile(context)) {
|
controller.responsiveUtils.isPortraitMobile(context)) {
|
||||||
return EdgeInsets.zero;
|
return EdgeInsets.zero;
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
if (controller.responsiveUtils.getSizeScreenHeight(context) > _maxHeight) {
|
||||||
return const EdgeInsets.symmetric(vertical: 12);
|
return const EdgeInsets.symmetric(vertical: 12);
|
||||||
} else {
|
} else {
|
||||||
return const EdgeInsets.symmetric(vertical: 50);
|
return const EdgeInsets.symmetric(vertical: 50);
|
||||||
@@ -247,9 +245,9 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
BorderRadius _getRadiusView(BuildContext context) {
|
BorderRadius _getRadiusView(BuildContext context) {
|
||||||
if (PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context)) {
|
if (PlatformInfo.isMobile && controller.responsiveUtils.isLandscapeMobile(context)) {
|
||||||
return BorderRadius.zero;
|
return BorderRadius.zero;
|
||||||
} else if (_responsiveUtils.isMobile(context)) {
|
} else if (controller.responsiveUtils.isMobile(context)) {
|
||||||
return const BorderRadius.only(
|
return const BorderRadius.only(
|
||||||
topRight: Radius.circular(16),
|
topRight: Radius.circular(16),
|
||||||
topLeft: Radius.circular(16));
|
topLeft: Radius.circular(16));
|
||||||
|
|||||||
@@ -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:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
|
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
|
||||||
@@ -11,7 +9,4 @@ abstract class BaseMailboxDashBoardView extends GetWidget<MailboxDashBoardContro
|
|||||||
with UserSettingPopupMenuMixin, FilterEmailPopupMenuMixin,
|
with UserSettingPopupMenuMixin, FilterEmailPopupMenuMixin,
|
||||||
AppLoaderMixin {
|
AppLoaderMixin {
|
||||||
BaseMailboxDashBoardView({Key? key}) : super(key: key);
|
BaseMailboxDashBoardView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final imagePaths = Get.find<ImagePaths>();
|
|
||||||
}
|
}
|
||||||
+2
-8
@@ -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/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/controller/single_email_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/bindings/email_bindings.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/home/domain/repository/session_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
import 'package:tmail_ui_user/features/home/domain/usecases/store_session_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
|
|
||||||
import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.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/state_datasource.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/mailbox_cache_datasource_impl.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_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/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/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/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/local_thread_datasource_impl.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/data/datasource_impl/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<GetSpamMailboxCachedInteractor>()));
|
Get.find<GetSpamMailboxCachedInteractor>()));
|
||||||
|
|
||||||
Get.put(MailboxDashBoardController(
|
Get.put(MailboxDashBoardController(
|
||||||
Get.find<GetAuthenticatedAccountInteractor>(),
|
|
||||||
Get.find<UpdateAuthenticationAccountInteractor>(),
|
|
||||||
Get.find<MoveToMailboxInteractor>(),
|
Get.find<MoveToMailboxInteractor>(),
|
||||||
Get.find<DeleteEmailPermanentlyInteractor>(),
|
Get.find<DeleteEmailPermanentlyInteractor>(),
|
||||||
Get.find<MarkAsMailboxReadInteractor>(),
|
Get.find<MarkAsMailboxReadInteractor>(),
|
||||||
@@ -288,7 +283,6 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
Get.lazyPut(() => GetEmailByIdInteractor(
|
Get.lazyPut(() => GetEmailByIdInteractor(
|
||||||
Get.find<ThreadRepository>(),
|
Get.find<ThreadRepository>(),
|
||||||
Get.find<EmailRepository>()));
|
Get.find<EmailRepository>()));
|
||||||
Get.lazyPut(() => UpdateAuthenticationAccountInteractor(Get.find<AccountRepository>()));
|
|
||||||
Get.lazyPut(() => StoreSpamReportInteractor(
|
Get.lazyPut(() => StoreSpamReportInteractor(
|
||||||
Get.find<SpamReportRepository>()));
|
Get.find<SpamReportRepository>()));
|
||||||
Get.lazyPut(() => GetUnreadSpamMailboxInteractor(
|
Get.lazyPut(() => GetUnreadSpamMailboxInteractor(
|
||||||
|
|||||||
+54
-66
@@ -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/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/model/composer_arguments.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.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/home/domain/usecases/store_session_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
|
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.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/state/mark_as_mailbox_read_state.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.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/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/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/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/filter_message_option.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.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';
|
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_navigation.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/email_receive_manager.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;
|
import 'package:workmanager/workmanager.dart' as work_manager;
|
||||||
|
|
||||||
class MailboxDashBoardController extends ReloadableController {
|
class MailboxDashBoardController extends ReloadableController {
|
||||||
|
|
||||||
final AppToast _appToast = Get.find<AppToast>();
|
|
||||||
final ImagePaths _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final RemoveEmailDraftsInteractor _removeEmailDraftsInteractor = Get.find<RemoveEmailDraftsInteractor>();
|
final RemoveEmailDraftsInteractor _removeEmailDraftsInteractor = Get.find<RemoveEmailDraftsInteractor>();
|
||||||
final ResponsiveUtils _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final EmailReceiveManager _emailReceiveManager = Get.find<EmailReceiveManager>();
|
final EmailReceiveManager _emailReceiveManager = Get.find<EmailReceiveManager>();
|
||||||
final search.SearchController searchController = Get.find<search.SearchController>();
|
final search.SearchController searchController = Get.find<search.SearchController>();
|
||||||
final DownloadController downloadController = Get.find<DownloadController>();
|
final DownloadController downloadController = Get.find<DownloadController>();
|
||||||
final AppGridDashboardController appGridDashboardController = Get.find<AppGridDashboardController>();
|
final AppGridDashboardController appGridDashboardController = Get.find<AppGridDashboardController>();
|
||||||
final SpamReportController spamReportController = Get.find<SpamReportController>();
|
final SpamReportController spamReportController = Get.find<SpamReportController>();
|
||||||
final NetworkConnectionController networkConnectionController = Get.find<NetworkConnectionController>();
|
final NetworkConnectionController networkConnectionController = Get.find<NetworkConnectionController>();
|
||||||
final Uuid _uuid = Get.find<Uuid>();
|
|
||||||
|
|
||||||
final MoveToMailboxInteractor _moveToMailboxInteractor;
|
final MoveToMailboxInteractor _moveToMailboxInteractor;
|
||||||
final DeleteEmailPermanentlyInteractor _deleteEmailPermanentlyInteractor;
|
final DeleteEmailPermanentlyInteractor _deleteEmailPermanentlyInteractor;
|
||||||
@@ -237,8 +230,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
final _fcmService = FcmService.instance;
|
final _fcmService = FcmService.instance;
|
||||||
|
|
||||||
MailboxDashBoardController(
|
MailboxDashBoardController(
|
||||||
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
|
|
||||||
UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor,
|
|
||||||
this._moveToMailboxInteractor,
|
this._moveToMailboxInteractor,
|
||||||
this._deleteEmailPermanentlyInteractor,
|
this._deleteEmailPermanentlyInteractor,
|
||||||
this._markAsMailboxReadInteractor,
|
this._markAsMailboxReadInteractor,
|
||||||
@@ -260,9 +251,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
this._saveEmailAsDraftsInteractor,
|
this._saveEmailAsDraftsInteractor,
|
||||||
this._updateEmailDraftsInteractor,
|
this._updateEmailDraftsInteractor,
|
||||||
this._deleteSendingEmailInteractor,
|
this._deleteSendingEmailInteractor,
|
||||||
) : super(
|
|
||||||
getAuthenticatedAccountInteractor,
|
|
||||||
updateAuthenticationAccountInteractor
|
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -297,10 +285,10 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
super.handleSuccessViewState(success);
|
super.handleSuccessViewState(success);
|
||||||
if (success is SendEmailLoading) {
|
if (success is SendEmailLoading) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).your_email_being_sent,
|
AppLocalizations.of(currentContext!).your_email_being_sent,
|
||||||
leadingSVGIcon: _imagePaths.icSendToast);
|
leadingSVGIcon: imagePaths.icSendToast);
|
||||||
}
|
}
|
||||||
} else if (success is GetEmailStateToRefreshSuccess) {
|
} else if (success is GetEmailStateToRefreshSuccess) {
|
||||||
dispatchEmailUIAction(RefreshChangeEmailAction(success.storedState));
|
dispatchEmailUIAction(RefreshChangeEmailAction(success.storedState));
|
||||||
@@ -607,7 +595,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void hideMailboxMenuWhenScreenSizeChange(BuildContext context) {
|
void hideMailboxMenuWhenScreenSizeChange(BuildContext context) {
|
||||||
if (isDrawerOpen && _responsiveUtils.isWebDesktop(context)) {
|
if (isDrawerOpen && responsiveUtils.isWebDesktop(context)) {
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
closeMailboxMenuDrawer();
|
closeMailboxMenuDrawer();
|
||||||
});
|
});
|
||||||
@@ -635,7 +623,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
|
|
||||||
bool _searchInsideEmailDetailedViewIsActive(BuildContext context) {
|
bool _searchInsideEmailDetailedViewIsActive(BuildContext context) {
|
||||||
return PlatformInfo.isWeb
|
return PlatformInfo.isWeb
|
||||||
&& _responsiveUtils.isDesktop(context)
|
&& responsiveUtils.isDesktop(context)
|
||||||
&& dashboardRoute.value == DashboardRoutes.emailDetailed;
|
&& dashboardRoute.value == DashboardRoutes.emailDetailed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -656,16 +644,16 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
|
|
||||||
void _saveEmailAsDraftsSuccess(SaveEmailAsDraftsSuccess success) {
|
void _saveEmailAsDraftsSuccess(SaveEmailAsDraftsSuccess success) {
|
||||||
if (currentContext != null && currentOverlayContext != null) {
|
if (currentContext != null && currentOverlayContext != null) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).drafts_saved,
|
AppLocalizations.of(currentContext!).drafts_saved,
|
||||||
actionName: AppLocalizations.of(currentContext!).discard,
|
actionName: AppLocalizations.of(currentContext!).discard,
|
||||||
onActionClick: () => _discardEmail(success.emailAsDrafts),
|
onActionClick: () => _discardEmail(success.emailAsDrafts),
|
||||||
leadingSVGIcon: _imagePaths.icMailboxDrafts,
|
leadingSVGIcon: imagePaths.icMailboxDrafts,
|
||||||
leadingSVGIconColor: Colors.white,
|
leadingSVGIconColor: Colors.white,
|
||||||
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
||||||
textColor: Colors.white,
|
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) {
|
void _moveToMailboxSuccess(MoveToMailboxSuccess success) {
|
||||||
if (success.moveAction == MoveAction.moving && currentContext != null && currentOverlayContext != null) {
|
if (success.moveAction == MoveAction.moving && currentContext != null && currentOverlayContext != null) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
success.emailActionType.getToastMessageMoveToMailboxSuccess(currentContext!, destinationPath: success.destinationPath),
|
success.emailActionType.getToastMessageMoveToMailboxSuccess(currentContext!, destinationPath: success.destinationPath),
|
||||||
actionName: AppLocalizations.of(currentContext!).undo,
|
actionName: AppLocalizations.of(currentContext!).undo,
|
||||||
@@ -687,11 +675,11 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
success.emailActionType
|
success.emailActionType
|
||||||
));
|
));
|
||||||
},
|
},
|
||||||
leadingSVGIcon: _imagePaths.icFolderMailbox,
|
leadingSVGIcon: imagePaths.icFolderMailbox,
|
||||||
leadingSVGIconColor: Colors.white,
|
leadingSVGIconColor: Colors.white,
|
||||||
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
||||||
textColor: Colors.white,
|
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) {
|
void _deleteEmailPermanentlySuccess(DeleteEmailPermanentlySuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toast_message_delete_a_email_permanently_success,
|
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!).unread)
|
||||||
: AppLocalizations.of(currentContext!).marked_message_toast(AppLocalizations.of(currentContext!).read);
|
: AppLocalizations.of(currentContext!).marked_message_toast(AppLocalizations.of(currentContext!).read);
|
||||||
|
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
message,
|
message,
|
||||||
leadingSVGIcon: readActions == ReadActions.markAsUnread
|
leadingSVGIcon: readActions == ReadActions.markAsUnread
|
||||||
? _imagePaths.icUnreadToast
|
? imagePaths.icUnreadToast
|
||||||
: _imagePaths.icReadToast
|
: imagePaths.icReadToast
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -806,17 +794,17 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
|
|
||||||
final undoAction = readActions == ReadActions.markAsUnread ? ReadActions.markAsRead : ReadActions.markAsUnread;
|
final undoAction = readActions == ReadActions.markAsUnread ? ReadActions.markAsRead : ReadActions.markAsUnread;
|
||||||
|
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
message,
|
message,
|
||||||
actionName: AppLocalizations.of(currentContext!).undo,
|
actionName: AppLocalizations.of(currentContext!).undo,
|
||||||
onActionClick: () {
|
onActionClick: () {
|
||||||
markAsEmailRead(presentationEmail!, undoAction, MarkReadAction.undo);
|
markAsEmailRead(presentationEmail!, undoAction, MarkReadAction.undo);
|
||||||
},
|
},
|
||||||
leadingSVGIcon: _imagePaths.icToastSuccessMessage,
|
leadingSVGIcon: imagePaths.icToastSuccessMessage,
|
||||||
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
||||||
textColor: Colors.white,
|
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);
|
: AppLocalizations.of(currentContext!).marked_star_multiple_item(countMarkStarSuccess);
|
||||||
|
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
message,
|
message,
|
||||||
leadingSVGIcon: markStarAction == MarkStarAction.unMarkStar
|
leadingSVGIcon: markStarAction == MarkStarAction.unMarkStar
|
||||||
? _imagePaths.icUnStar
|
? imagePaths.icUnStar
|
||||||
: _imagePaths.icStar);
|
: imagePaths.icStar);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1037,7 +1025,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
currentOverlayContext != null &&
|
currentOverlayContext != null &&
|
||||||
emailActionType != null &&
|
emailActionType != null &&
|
||||||
moveAction == MoveAction.moving) {
|
moveAction == MoveAction.moving) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
emailActionType.getToastMessageMoveToMailboxSuccess(
|
emailActionType.getToastMessageMoveToMailboxSuccess(
|
||||||
currentContext!,
|
currentContext!,
|
||||||
@@ -1057,10 +1045,10 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
leadingSVGIconColor: Colors.white,
|
leadingSVGIconColor: Colors.white,
|
||||||
leadingSVGIcon: _imagePaths.icFolderMailbox,
|
leadingSVGIcon: imagePaths.icFolderMailbox,
|
||||||
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
||||||
textColor: Colors.white,
|
textColor: Colors.white,
|
||||||
actionIcon: SvgPicture.asset(_imagePaths.icUndo),
|
actionIcon: SvgPicture.asset(imagePaths.icUndo),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1129,7 +1117,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
Function? onCancelSelectionEmail,
|
Function? onCancelSelectionEmail,
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
if (_responsiveUtils.isScreenWithShortestSide(context)) {
|
if (responsiveUtils.isScreenWithShortestSide(context)) {
|
||||||
(ConfirmationDialogActionSheetBuilder(context)
|
(ConfirmationDialogActionSheetBuilder(context)
|
||||||
..messageText(actionType.getContentDialog(
|
..messageText(actionType.getContentDialog(
|
||||||
context,
|
context,
|
||||||
@@ -1147,14 +1135,14 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
showDialog(
|
showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
||||||
builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(_imagePaths)
|
builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
|
||||||
..key(const Key('confirm_dialog_delete_emails_permanently'))
|
..key(const Key('confirm_dialog_delete_emails_permanently'))
|
||||||
..title(actionType.getTitleDialog(context))
|
..title(actionType.getTitleDialog(context))
|
||||||
..content(actionType.getContentDialog(
|
..content(actionType.getContentDialog(
|
||||||
context,
|
context,
|
||||||
count: listEmails?.length,
|
count: listEmails?.length,
|
||||||
mailboxName: mailboxCurrent?.getDisplayName(context)))
|
mailboxName: mailboxCurrent?.getDisplayName(context)))
|
||||||
..addIcon(SvgPicture.asset(_imagePaths.icRemoveDialog, fit: BoxFit.fill))
|
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill))
|
||||||
..colorConfirmButton(AppColor.colorConfirmActionDialog)
|
..colorConfirmButton(AppColor.colorConfirmActionDialog)
|
||||||
..styleTextConfirmButton(const TextStyle(
|
..styleTextConfirmButton(const TextStyle(
|
||||||
fontSize: 17,
|
fontSize: 17,
|
||||||
@@ -1202,7 +1190,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
|
|
||||||
void _emptyTrashFolderSuccess(EmptyTrashFolderSuccess success) {
|
void _emptyTrashFolderSuccess(EmptyTrashFolderSuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toast_message_empty_trash_folder_success);
|
AppLocalizations.of(currentContext!).toast_message_empty_trash_folder_success);
|
||||||
}
|
}
|
||||||
@@ -1228,7 +1216,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (currentOverlayContext != null && currentContext != null && listEmailIdResult.isNotEmpty) {
|
if (currentOverlayContext != null && currentContext != null && listEmailIdResult.isNotEmpty) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toast_message_delete_multiple_email_permanently_success(listEmailIdResult.length));
|
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 (success is MarkAsMailboxReadAllSuccess) {
|
||||||
if (currentContext != null && currentOverlayContext != null) {
|
if (currentContext != null && currentOverlayContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toastMessageMarkAsMailboxReadSuccess(success.mailboxDisplayName),
|
AppLocalizations.of(currentContext!).toastMessageMarkAsMailboxReadSuccess(success.mailboxDisplayName),
|
||||||
leadingSVGIcon: _imagePaths.icReadToast);
|
leadingSVGIcon: imagePaths.icReadToast);
|
||||||
}
|
}
|
||||||
} else if (success is MarkAsMailboxReadHasSomeEmailFailure) {
|
} else if (success is MarkAsMailboxReadHasSomeEmailFailure) {
|
||||||
if (currentContext != null && currentOverlayContext != null) {
|
if (currentContext != null && currentOverlayContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toastMessageMarkAsMailboxReadHasSomeEmailFailure(success.mailboxDisplayName, success.countEmailsRead),
|
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) {
|
void _markAsReadMailboxFailure(MarkAsMailboxReadFailure failure) {
|
||||||
viewStateMarkAsReadMailbox.value = Right(UIState.idle);
|
viewStateMarkAsReadMailbox.value = Right(UIState.idle);
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toastMessageMarkAsReadFolderFailureWithReason(
|
AppLocalizations.of(currentContext!).toastMessageMarkAsReadFolderFailureWithReason(
|
||||||
failure.mailboxDisplayName,
|
failure.mailboxDisplayName,
|
||||||
@@ -1379,7 +1367,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
void _markAsReadMailboxAllFailure(MarkAsMailboxReadAllFailure failure) {
|
void _markAsReadMailboxAllFailure(MarkAsMailboxReadAllFailure failure) {
|
||||||
viewStateMarkAsReadMailbox.value = Right(UIState.idle);
|
viewStateMarkAsReadMailbox.value = Right(UIState.idle);
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toastMessageMarkAsReadFolderAllFailure(failure.mailboxDisplayName)
|
AppLocalizations.of(currentContext!).toastMessageMarkAsReadFolderAllFailure(failure.mailboxDisplayName)
|
||||||
);
|
);
|
||||||
@@ -1487,7 +1475,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
void _handleUpdateVacationSuccess(UpdateVacationSuccess success) {
|
void _handleUpdateVacationSuccess(UpdateVacationSuccess success) {
|
||||||
if (success.listVacationResponse.isNotEmpty) {
|
if (success.listVacationResponse.isNotEmpty) {
|
||||||
if (currentContext != null && currentOverlayContext != null) {
|
if (currentContext != null && currentOverlayContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).yourVacationResponderIsDisabledSuccessfully);
|
AppLocalizations.of(currentContext!).yourVacationResponderIsDisabledSuccessfully);
|
||||||
}
|
}
|
||||||
@@ -1547,7 +1535,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
selectedMailbox.value!.isTrash &&
|
selectedMailbox.value!.isTrash &&
|
||||||
selectedMailbox.value!.countTotalEmails > 0 &&
|
selectedMailbox.value!.countTotalEmails > 0 &&
|
||||||
!searchController.isSearchActive() &&
|
!searchController.isSearchActive() &&
|
||||||
_responsiveUtils.isWebDesktop(context);
|
responsiveUtils.isWebDesktop(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isEmptyTrashBannerEnabledOnMobile(BuildContext context) {
|
bool isEmptyTrashBannerEnabledOnMobile(BuildContext context) {
|
||||||
@@ -1555,7 +1543,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
selectedMailbox.value!.isTrash &&
|
selectedMailbox.value!.isTrash &&
|
||||||
selectedMailbox.value!.countTotalEmails > 0 &&
|
selectedMailbox.value!.countTotalEmails > 0 &&
|
||||||
!searchController.isSearchActive() &&
|
!searchController.isSearchActive() &&
|
||||||
!_responsiveUtils.isWebDesktop(context);
|
!responsiveUtils.isWebDesktop(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
void emptyTrashAction(BuildContext context) {
|
void emptyTrashAction(BuildContext context) {
|
||||||
@@ -1795,10 +1783,10 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
|
|
||||||
void _showToastSendMessageFailure(String message) {
|
void _showToastSendMessageFailure(String message) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
message,
|
message,
|
||||||
leadingSVGIcon: _imagePaths.icSendSuccessToast);
|
leadingSVGIcon: imagePaths.icSendSuccessToast);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1880,7 +1868,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
CreateNewMailboxRequest? mailboxRequest,
|
CreateNewMailboxRequest? mailboxRequest,
|
||||||
) {
|
) {
|
||||||
log('MailboxDashBoardController::_handleStoreSendingEmail:');
|
log('MailboxDashBoardController::_handleStoreSendingEmail:');
|
||||||
final sendingEmail = emailRequest.toSendingEmail(_uuid.v1(), mailboxRequest: mailboxRequest);
|
final sendingEmail = emailRequest.toSendingEmail(uuid.v1(), mailboxRequest: mailboxRequest);
|
||||||
consumeState(_storeSendingEmailInteractor.execute(
|
consumeState(_storeSendingEmailInteractor.execute(
|
||||||
accountId,
|
accountId,
|
||||||
session.username,
|
session.username,
|
||||||
@@ -1920,11 +1908,11 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
}
|
}
|
||||||
getAllSendingEmails();
|
getAllSendingEmails();
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).messageHasBeenSavedToTheSendingQueue,
|
AppLocalizations.of(currentContext!).messageHasBeenSavedToTheSendingQueue,
|
||||||
leadingSVGIconColor: Colors.white,
|
leadingSVGIconColor: Colors.white,
|
||||||
leadingSVGIcon: _imagePaths.icEmail);
|
leadingSVGIcon: imagePaths.icEmail);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1998,7 +1986,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
|
|
||||||
void _emptySpamFolderSuccess(EmptySpamFolderSuccess success) {
|
void _emptySpamFolderSuccess(EmptySpamFolderSuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toast_message_empty_trash_folder_success);
|
AppLocalizations.of(currentContext!).toast_message_empty_trash_folder_success);
|
||||||
}
|
}
|
||||||
@@ -2009,7 +1997,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
selectedMailbox.value!.isSpam &&
|
selectedMailbox.value!.isSpam &&
|
||||||
selectedMailbox.value!.countTotalEmails > 0 &&
|
selectedMailbox.value!.countTotalEmails > 0 &&
|
||||||
!searchController.isSearchActive() &&
|
!searchController.isSearchActive() &&
|
||||||
_responsiveUtils.isWebDesktop(context);
|
responsiveUtils.isWebDesktop(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isEmptySpamBannerEnabledOnMobile(BuildContext context) {
|
bool isEmptySpamBannerEnabledOnMobile(BuildContext context) {
|
||||||
@@ -2017,7 +2005,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
selectedMailbox.value!.isSpam &&
|
selectedMailbox.value!.isSpam &&
|
||||||
selectedMailbox.value!.countTotalEmails > 0 &&
|
selectedMailbox.value!.countTotalEmails > 0 &&
|
||||||
!searchController.isSearchActive() &&
|
!searchController.isSearchActive() &&
|
||||||
!_responsiveUtils.isWebDesktop(context);
|
!responsiveUtils.isWebDesktop(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
void openDialogEmptySpamFolder(BuildContext context) {
|
void openDialogEmptySpamFolder(BuildContext context) {
|
||||||
@@ -2027,7 +2015,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
if (_responsiveUtils.isScreenWithShortestSide(context)) {
|
if (responsiveUtils.isScreenWithShortestSide(context)) {
|
||||||
(ConfirmationDialogActionSheetBuilder(context)
|
(ConfirmationDialogActionSheetBuilder(context)
|
||||||
..messageText(AppLocalizations.of(context).emptySpamMessageDialog)
|
..messageText(AppLocalizations.of(context).emptySpamMessageDialog)
|
||||||
..onCancelAction(AppLocalizations.of(context).cancel, popBack)
|
..onCancelAction(AppLocalizations.of(context).cancel, popBack)
|
||||||
@@ -2036,7 +2024,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
if (spamMailbox.countTotalEmails > 0) {
|
if (spamMailbox.countTotalEmails > 0) {
|
||||||
emptySpamFolderAction(spamFolderId: spamMailbox.id);
|
emptySpamFolderAction(spamFolderId: spamMailbox.id);
|
||||||
} else {
|
} else {
|
||||||
_appToast.showToastWarningMessage(
|
appToast.showToastWarningMessage(
|
||||||
context,
|
context,
|
||||||
AppLocalizations.of(context).noEmailInYourCurrentFolder
|
AppLocalizations.of(context).noEmailInYourCurrentFolder
|
||||||
);
|
);
|
||||||
@@ -2047,11 +2035,11 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
showDialog(
|
showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
||||||
builder: (context) => PointerInterceptor(child: (ConfirmDialogBuilder(_imagePaths)
|
builder: (context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
|
||||||
..key(const Key('confirm_dialog_empty_spam'))
|
..key(const Key('confirm_dialog_empty_spam'))
|
||||||
..title(AppLocalizations.of(context).emptySpamFolder)
|
..title(AppLocalizations.of(context).emptySpamFolder)
|
||||||
..content(AppLocalizations.of(context).emptySpamMessageDialog)
|
..content(AppLocalizations.of(context).emptySpamMessageDialog)
|
||||||
..addIcon(SvgPicture.asset(_imagePaths.icRemoveDialog, fit: BoxFit.fill))
|
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill))
|
||||||
..colorConfirmButton(AppColor.colorConfirmActionDialog)
|
..colorConfirmButton(AppColor.colorConfirmActionDialog)
|
||||||
..styleTextConfirmButton(const TextStyle(
|
..styleTextConfirmButton(const TextStyle(
|
||||||
fontSize: 17,
|
fontSize: 17,
|
||||||
@@ -2063,7 +2051,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
if (spamMailbox.countTotalEmails > 0) {
|
if (spamMailbox.countTotalEmails > 0) {
|
||||||
emptySpamFolderAction(spamFolderId: spamMailbox.id);
|
emptySpamFolderAction(spamFolderId: spamMailbox.id);
|
||||||
} else {
|
} else {
|
||||||
_appToast.showToastWarningMessage(
|
appToast.showToastWarningMessage(
|
||||||
context,
|
context,
|
||||||
AppLocalizations.of(context).noEmailInYourCurrentFolder
|
AppLocalizations.of(context).noEmailInYourCurrentFolder
|
||||||
);
|
);
|
||||||
@@ -2146,10 +2134,10 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).message_has_been_sent_successfully,
|
AppLocalizations.of(currentContext!).message_has_been_sent_successfully,
|
||||||
leadingSVGIcon: _imagePaths.icSendSuccessToast
|
leadingSVGIcon: imagePaths.icSendSuccessToast
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,34 +26,34 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
width: ResponsiveUtils.defaultSizeLeftMenuMobile,
|
width: ResponsiveUtils.defaultSizeLeftMenuMobile,
|
||||||
child: _buildScaffoldHaveDrawer(body: ThreadView())),
|
child: _buildScaffoldHaveDrawer(body: ThreadView())),
|
||||||
const VerticalDivider(color: AppColor.lineItemListColor, width: 12),
|
const VerticalDivider(color: AppColor.lineItemListColor, width: 12),
|
||||||
Expanded(child: EmailView()),
|
const Expanded(child: EmailView()),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
return FocusDetector(
|
return FocusDetector(
|
||||||
onForegroundGained: controller.handleOnForegroundGained,
|
onForegroundGained: controller.handleOnForegroundGained,
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
drawerEnableOpenDragGesture: responsiveUtils.hasLeftMenuDrawerActive(context),
|
drawerEnableOpenDragGesture: controller.responsiveUtils.hasLeftMenuDrawerActive(context),
|
||||||
body: Obx(() {
|
body: Obx(() {
|
||||||
var bodyView = controller.searchController.isSearchEmailRunning
|
var bodyView = controller.searchController.isSearchEmailRunning
|
||||||
? EmailView()
|
? const EmailView()
|
||||||
: bodyLandscapeTablet;
|
: bodyLandscapeTablet;
|
||||||
|
|
||||||
switch(controller.dashboardRoute.value) {
|
switch(controller.dashboardRoute.value) {
|
||||||
case DashboardRoutes.thread:
|
case DashboardRoutes.thread:
|
||||||
return ResponsiveWidget(
|
return ResponsiveWidget(
|
||||||
responsiveUtils: responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
desktop: bodyView,
|
desktop: bodyView,
|
||||||
tabletLarge: bodyView,
|
tabletLarge: bodyView,
|
||||||
landscapeTablet: bodyView,
|
landscapeTablet: bodyView,
|
||||||
mobile: _buildScaffoldHaveDrawer(body: ThreadView()));
|
mobile: _buildScaffoldHaveDrawer(body: ThreadView()));
|
||||||
case DashboardRoutes.emailDetailed:
|
case DashboardRoutes.emailDetailed:
|
||||||
return ResponsiveWidget(
|
return ResponsiveWidget(
|
||||||
responsiveUtils: responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
desktop: bodyView,
|
desktop: bodyView,
|
||||||
tabletLarge: bodyView,
|
tabletLarge: bodyView,
|
||||||
landscapeTablet: bodyView,
|
landscapeTablet: bodyView,
|
||||||
mobile: EmailView());
|
mobile: const EmailView());
|
||||||
case DashboardRoutes.searchEmail:
|
case DashboardRoutes.searchEmail:
|
||||||
return SafeArea(child: SearchEmailView());
|
return SafeArea(child: SearchEmailView());
|
||||||
case DashboardRoutes.sendingQueue:
|
case DashboardRoutes.sendingQueue:
|
||||||
@@ -64,11 +64,11 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
width: ResponsiveUtils.defaultSizeLeftMenuMobile,
|
width: ResponsiveUtils.defaultSizeLeftMenuMobile,
|
||||||
child: _buildScaffoldHaveDrawer(body: const SendingQueueView())),
|
child: _buildScaffoldHaveDrawer(body: const SendingQueueView())),
|
||||||
const VerticalDivider(color: AppColor.lineItemListColor, width: 12),
|
const VerticalDivider(color: AppColor.lineItemListColor, width: 12),
|
||||||
Expanded(child: EmailView()),
|
const Expanded(child: EmailView()),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
return ResponsiveWidget(
|
return ResponsiveWidget(
|
||||||
responsiveUtils: responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
desktop: bodyView,
|
desktop: bodyView,
|
||||||
tabletLarge: bodyView,
|
tabletLarge: bodyView,
|
||||||
landscapeTablet: bodyView,
|
landscapeTablet: bodyView,
|
||||||
@@ -81,7 +81,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
child: CupertinoActivityIndicator(color: AppColor.colorLoading)));
|
child: CupertinoActivityIndicator(color: AppColor.colorLoading)));
|
||||||
default:
|
default:
|
||||||
return ResponsiveWidget(
|
return ResponsiveWidget(
|
||||||
responsiveUtils: responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
desktop: bodyView,
|
desktop: bodyView,
|
||||||
tabletLarge: bodyView,
|
tabletLarge: bodyView,
|
||||||
landscapeTablet: bodyView,
|
landscapeTablet: bodyView,
|
||||||
@@ -97,7 +97,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
key: controller.scaffoldKey,
|
key: controller.scaffoldKey,
|
||||||
body: body,
|
body: body,
|
||||||
drawer: ResponsiveWidget(
|
drawer: ResponsiveWidget(
|
||||||
responsiveUtils: responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
mobile: SizedBox(
|
mobile: SizedBox(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
child: MailboxView()
|
child: MailboxView()
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
return Portal(
|
return Portal(
|
||||||
child: Stack(children: [
|
child: Stack(children: [
|
||||||
ResponsiveWidget(
|
ResponsiveWidget(
|
||||||
responsiveUtils: responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
desktop: Scaffold(
|
desktop: Scaffold(
|
||||||
body: GestureDetector(
|
body: GestureDetector(
|
||||||
onTap: () => FocusScope.of(context).unfocus(),
|
onTap: () => FocusScope.of(context).unfocus(),
|
||||||
@@ -73,7 +73,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
text: AppLocalizations.of(context).app_name,
|
text: AppLocalizations.of(context).app_name,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
|
textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
|
||||||
logoSVG: imagePaths.icTMailLogo,
|
logoSVG: controller.imagePaths.icTMailLogo,
|
||||||
onTapCallback: controller.redirectToInboxAction,
|
onTapCallback: controller.redirectToInboxAction,
|
||||||
),
|
),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
@@ -160,7 +160,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
case DashboardRoutes.thread:
|
case DashboardRoutes.thread:
|
||||||
return _buildThreadViewForWebDesktop(context);
|
return _buildThreadViewForWebDesktop(context);
|
||||||
case DashboardRoutes.emailDetailed:
|
case DashboardRoutes.emailDetailed:
|
||||||
return EmailView();
|
return const EmailView();
|
||||||
default:
|
default:
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
@@ -177,7 +177,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
return SearchEmailView();
|
return SearchEmailView();
|
||||||
case DashboardRoutes.emailDetailed:
|
case DashboardRoutes.emailDetailed:
|
||||||
return controller.searchController.isSearchEmailRunning
|
return controller.searchController.isSearchEmailRunning
|
||||||
? EmailView()
|
? const EmailView()
|
||||||
: _buildScaffoldHaveDrawer(
|
: _buildScaffoldHaveDrawer(
|
||||||
body: Row(
|
body: Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
@@ -186,7 +186,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
width: ResponsiveUtils.defaultSizeLeftMenuMobile,
|
width: ResponsiveUtils.defaultSizeLeftMenuMobile,
|
||||||
child: ThreadView()),
|
child: ThreadView()),
|
||||||
const VerticalDivider(color: AppColor.lineItemListColor, width: 12),
|
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,
|
width: ResponsiveUtils.defaultSizeLeftMenuMobile,
|
||||||
child: ThreadView()),
|
child: ThreadView()),
|
||||||
const VerticalDivider(color: AppColor.lineItemListColor, width: 12),
|
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:
|
case DashboardRoutes.thread:
|
||||||
return _buildScaffoldHaveDrawer(body: ThreadView());
|
return _buildScaffoldHaveDrawer(body: ThreadView());
|
||||||
case DashboardRoutes.emailDetailed:
|
case DashboardRoutes.emailDetailed:
|
||||||
return EmailView();
|
return const EmailView();
|
||||||
case DashboardRoutes.searchEmail:
|
case DashboardRoutes.searchEmail:
|
||||||
return SearchEmailView();
|
return SearchEmailView();
|
||||||
default:
|
default:
|
||||||
@@ -219,10 +219,10 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
Obx(() => controller.composerOverlayState.value == ComposerOverlayState.active
|
Obx(() => controller.composerOverlayState.value == ComposerOverlayState.active
|
||||||
? ComposerView()
|
? const ComposerView()
|
||||||
: const SizedBox.shrink()
|
: const SizedBox.shrink()
|
||||||
),
|
),
|
||||||
Obx(() => controller.searchMailboxActivated.value == true && !responsiveUtils.isWebDesktop(context)
|
Obx(() => controller.searchMailboxActivated.value == true && !controller.responsiveUtils.isWebDesktop(context)
|
||||||
? const SearchMailboxView()
|
? const SearchMailboxView()
|
||||||
: const SizedBox.shrink()
|
: const SizedBox.shrink()
|
||||||
),
|
),
|
||||||
@@ -235,7 +235,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
return Scaffold(
|
return Scaffold(
|
||||||
key: controller.scaffoldKey,
|
key: controller.scaffoldKey,
|
||||||
drawer: ResponsiveWidget(
|
drawer: ResponsiveWidget(
|
||||||
responsiveUtils: responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
mobile: SizedBox(width: ResponsiveUtils.defaultSizeDrawer, child: MailboxView()),
|
mobile: SizedBox(width: ResponsiveUtils.defaultSizeDrawer, child: MailboxView()),
|
||||||
tabletLarge: SizedBox(width: ResponsiveUtils.defaultSizeLeftMenuMobile, child: MailboxView()),
|
tabletLarge: SizedBox(width: ResponsiveUtils.defaultSizeLeftMenuMobile, child: MailboxView()),
|
||||||
desktop: const SizedBox.shrink()
|
desktop: const SizedBox.shrink()
|
||||||
@@ -326,7 +326,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
onTap: controller.showAppDashboardAction,
|
onTap: controller.showAppDashboardAction,
|
||||||
splashRadius: 20,
|
splashRadius: 20,
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
imagePaths.icAppDashboard,
|
controller.imagePaths.icAppDashboard,
|
||||||
width: 28,
|
width: 28,
|
||||||
height: 28,
|
height: 28,
|
||||||
fit: BoxFit.fill
|
fit: BoxFit.fill
|
||||||
@@ -370,7 +370,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
(failure) {
|
(failure) {
|
||||||
return TMailButtonWidget.fromIcon(
|
return TMailButtonWidget.fromIcon(
|
||||||
key: const Key('refresh_mailbox_button'),
|
key: const Key('refresh_mailbox_button'),
|
||||||
icon: imagePaths.icRefresh,
|
icon: controller.imagePaths.icRefresh,
|
||||||
borderRadius: 10,
|
borderRadius: 10,
|
||||||
iconSize: 16,
|
iconSize: 16,
|
||||||
onTapActionCallback: controller.refreshMailboxAction,
|
onTapActionCallback: controller.refreshMailboxAction,
|
||||||
@@ -385,7 +385,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
} else {
|
} else {
|
||||||
return TMailButtonWidget.fromIcon(
|
return TMailButtonWidget.fromIcon(
|
||||||
key: const Key('refresh_mailbox_button'),
|
key: const Key('refresh_mailbox_button'),
|
||||||
icon: imagePaths.icRefresh,
|
icon: controller.imagePaths.icRefresh,
|
||||||
borderRadius: 10,
|
borderRadius: 10,
|
||||||
iconSize: 16,
|
iconSize: 16,
|
||||||
onTapActionCallback: controller.refreshMailboxAction,
|
onTapActionCallback: controller.refreshMailboxAction,
|
||||||
@@ -398,7 +398,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
TMailButtonWidget(
|
TMailButtonWidget(
|
||||||
key: const Key('select_all_emails_button'),
|
key: const Key('select_all_emails_button'),
|
||||||
text: AppLocalizations.of(context).select_all,
|
text: AppLocalizations.of(context).select_all,
|
||||||
icon: imagePaths.icSelectAll,
|
icon: controller.imagePaths.icSelectAll,
|
||||||
borderRadius: 10,
|
borderRadius: 10,
|
||||||
iconSize: 16,
|
iconSize: 16,
|
||||||
padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8),
|
padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8),
|
||||||
@@ -410,7 +410,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
child: TMailButtonWidget(
|
child: TMailButtonWidget(
|
||||||
key: const Key('mark_as_read_emails_button'),
|
key: const Key('mark_as_read_emails_button'),
|
||||||
text: AppLocalizations.of(context).mark_all_as_read,
|
text: AppLocalizations.of(context).mark_all_as_read,
|
||||||
icon: imagePaths.icSelectAll,
|
icon: controller.imagePaths.icSelectAll,
|
||||||
borderRadius: 10,
|
borderRadius: 10,
|
||||||
iconSize: 16,
|
iconSize: 16,
|
||||||
padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8),
|
padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8),
|
||||||
@@ -423,13 +423,13 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
text: controller.filterMessageOption.value == FilterMessageOption.all
|
text: controller.filterMessageOption.value == FilterMessageOption.all
|
||||||
? AppLocalizations.of(context).filter_messages
|
? AppLocalizations.of(context).filter_messages
|
||||||
: controller.filterMessageOption.value.getTitle(context),
|
: controller.filterMessageOption.value.getTitle(context),
|
||||||
icon: controller.filterMessageOption.value.getIconSelected(imagePaths),
|
icon: controller.filterMessageOption.value.getIconSelected(controller.imagePaths),
|
||||||
borderRadius: 10,
|
borderRadius: 10,
|
||||||
iconSize: 16,
|
iconSize: 16,
|
||||||
padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8),
|
padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8),
|
||||||
backgroundColor: controller.filterMessageOption.value.getBackgroundColor(),
|
backgroundColor: controller.filterMessageOption.value.getBackgroundColor(),
|
||||||
textStyle: controller.filterMessageOption.value.getTextStyle(),
|
textStyle: controller.filterMessageOption.value.getTextStyle(),
|
||||||
trailingIcon: imagePaths.icArrowDown,
|
trailingIcon: controller.imagePaths.icArrowDown,
|
||||||
onTapActionAtPositionCallback: (position) {
|
onTapActionAtPositionCallback: (position) {
|
||||||
return controller.openPopupMenuAction(
|
return controller.openPopupMenuAction(
|
||||||
context,
|
context,
|
||||||
@@ -455,19 +455,19 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
if (success is MarkAsMailboxReadLoading) {
|
if (success is MarkAsMailboxReadLoading) {
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: EdgeInsets.only(
|
padding: EdgeInsets.only(
|
||||||
top: responsiveUtils.isDesktop(context) ? 16 : 0,
|
top: controller.responsiveUtils.isDesktop(context) ? 16 : 0,
|
||||||
left: 16,
|
left: 16,
|
||||||
right: 16,
|
right: 16,
|
||||||
bottom: responsiveUtils.isDesktop(context) ? 0 : 16),
|
bottom: controller.responsiveUtils.isDesktop(context) ? 0 : 16),
|
||||||
child: horizontalLoadingWidget);
|
child: horizontalLoadingWidget);
|
||||||
} else if (success is UpdatingMarkAsMailboxReadState) {
|
} else if (success is UpdatingMarkAsMailboxReadState) {
|
||||||
final percent = success.countRead / success.totalUnread;
|
final percent = success.countRead / success.totalUnread;
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: EdgeInsets.only(
|
padding: EdgeInsets.only(
|
||||||
top: responsiveUtils.isDesktop(context) ? 16 : 0,
|
top: controller.responsiveUtils.isDesktop(context) ? 16 : 0,
|
||||||
left: 16,
|
left: 16,
|
||||||
right: 16,
|
right: 16,
|
||||||
bottom: responsiveUtils.isDesktop(context) ? 0 : 16),
|
bottom: controller.responsiveUtils.isDesktop(context) ? 0 : 16),
|
||||||
child: horizontalPercentLoadingWidget(percent));
|
child: horizontalPercentLoadingWidget(percent));
|
||||||
}
|
}
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
@@ -622,7 +622,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||||
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
|
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
filter.getIcon(imagePaths, isFilterSelected: isFilterSelected),
|
filter.getIcon(controller.imagePaths, isFilterSelected: isFilterSelected),
|
||||||
width: 16,
|
width: 16,
|
||||||
height: 16,
|
height: 16,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
@@ -643,7 +643,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
... [
|
... [
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
imagePaths.icChevronDown,
|
controller.imagePaths.icChevronDown,
|
||||||
width: 16,
|
width: 16,
|
||||||
height: 16,
|
height: 16,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
@@ -664,7 +664,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemNoIconWidget(
|
child: PopupItemNoIconWidget(
|
||||||
receiveTime.getTitle(context),
|
receiveTime.getTitle(context),
|
||||||
svgIconSelected: imagePaths.icFilterSelected,
|
svgIconSelected: controller.imagePaths.icFilterSelected,
|
||||||
maxWidth: 320,
|
maxWidth: 320,
|
||||||
isSelected: receiveTimeSelected == receiveTime,
|
isSelected: receiveTimeSelected == receiveTime,
|
||||||
onCallbackAction: () => onCallBack?.call(receiveTime),
|
onCallbackAction: () => onCallBack?.call(receiveTime),
|
||||||
@@ -682,7 +682,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemNoIconWidget(
|
child: PopupItemNoIconWidget(
|
||||||
sortType.getTitle(context),
|
sortType.getTitle(context),
|
||||||
svgIconSelected: imagePaths.icFilterSelected,
|
svgIconSelected: controller.imagePaths.icFilterSelected,
|
||||||
maxWidth: 332,
|
maxWidth: 332,
|
||||||
isSelected: sortOrderSelected == sortType,
|
isSelected: sortOrderSelected == sortType,
|
||||||
onCallbackAction: () => onCallBack?.call(sortType),
|
onCallbackAction: () => onCallBack?.call(sortType),
|
||||||
@@ -703,7 +703,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
child: TMailButtonWidget(
|
child: TMailButtonWidget(
|
||||||
key: const Key('compose_email_button'),
|
key: const Key('compose_email_button'),
|
||||||
text: AppLocalizations.of(context).compose,
|
text: AppLocalizations.of(context).compose,
|
||||||
icon: imagePaths.icComposeWeb,
|
icon: controller.imagePaths.icComposeWeb,
|
||||||
borderRadius: 10,
|
borderRadius: 10,
|
||||||
iconSize: 24,
|
iconSize: 24,
|
||||||
iconColor: Colors.white,
|
iconColor: Colors.white,
|
||||||
|
|||||||
+2
-4
@@ -21,10 +21,8 @@ class AdvancedSearchFilterFormBottomView extends GetWidget<AdvancedFilterControl
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
|
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: EdgeInsets.only(top: !responsiveUtils.isWebDesktop(context) ? 8 : 20),
|
padding: EdgeInsets.only(top: !controller.responsiveUtils.isWebDesktop(context) ? 8 : 20),
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
@@ -35,7 +33,7 @@ class AdvancedSearchFilterFormBottomView extends GetWidget<AdvancedFilterControl
|
|||||||
currentFocusNode: focusManager?.attachmentCheckboxFocusNode,
|
currentFocusNode: focusManager?.attachmentCheckboxFocusNode,
|
||||||
nextFocusNode: focusManager?.searchButtonFocusNode),
|
nextFocusNode: focusManager?.searchButtonFocusNode),
|
||||||
),
|
),
|
||||||
_buildListButton(context, responsiveUtils),
|
_buildListButton(context, controller.responsiveUtils),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
+11
-14
@@ -22,9 +22,6 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
Key? key,
|
Key? key,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
final ImagePaths _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final ResponsiveUtils _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return FocusTraversalGroup(
|
return FocusTraversalGroup(
|
||||||
@@ -102,7 +99,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
const SizedBox(width: 10),
|
const SizedBox(width: 10),
|
||||||
buildIconWeb(
|
buildIconWeb(
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
_imagePaths.icCalendarSB,
|
controller.imagePaths.icCalendarSB,
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24,
|
height: 24,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
@@ -126,7 +123,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemNoIconWidget(
|
child: PopupItemNoIconWidget(
|
||||||
receiveTime.getTitle(context),
|
receiveTime.getTitle(context),
|
||||||
svgIconSelected: _imagePaths.icFilterSelected,
|
svgIconSelected: controller.imagePaths.icFilterSelected,
|
||||||
maxWidth: 320,
|
maxWidth: 320,
|
||||||
isSelected: controller.dateFilterSelectedFormAdvancedSearch.value == receiveTime,
|
isSelected: controller.dateFilterSelectedFormAdvancedSearch.value == receiveTime,
|
||||||
onCallbackAction: () => controller.updateReceiveDateSearchFilter(context, receiveTime),
|
onCallbackAction: () => controller.updateReceiveDateSearchFilter(context, receiveTime),
|
||||||
@@ -146,7 +143,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
}) {
|
}) {
|
||||||
final child = [
|
final child = [
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: _responsiveUtils.isMobile(context) || _responsiveUtils.landscapeTabletSupported(context)
|
width: controller.responsiveUtils.isMobile(context) || controller.responsiveUtils.landscapeTabletSupported(context)
|
||||||
? null : 112,
|
? null : 112,
|
||||||
child: Text(
|
child: Text(
|
||||||
advancedSearchFilterField.getTitle(context),
|
advancedSearchFilterField.getTitle(context),
|
||||||
@@ -157,7 +154,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Padding(padding: EdgeInsets.all(4)),
|
const Padding(padding: EdgeInsets.all(4)),
|
||||||
if (_responsiveUtils.isMobile(context))
|
if (controller.responsiveUtils.isMobile(context))
|
||||||
_buildTextField(
|
_buildTextField(
|
||||||
isSelectFormList: isSelectFormList,
|
isSelectFormList: isSelectFormList,
|
||||||
onTap: onTap,
|
onTap: onTap,
|
||||||
@@ -168,10 +165,10 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
advancedSearchFilterField: advancedSearchFilterField,
|
advancedSearchFilterField: advancedSearchFilterField,
|
||||||
textEditingController: textEditingController,
|
textEditingController: textEditingController,
|
||||||
)
|
)
|
||||||
else if (_responsiveUtils.landscapeTabletSupported(context))
|
else if (controller.responsiveUtils.landscapeTabletSupported(context))
|
||||||
if (advancedSearchFilterField == AdvancedSearchFilterField.date)
|
if (advancedSearchFilterField == AdvancedSearchFilterField.date)
|
||||||
Obx(() => DateDropDownButton(
|
Obx(() => DateDropDownButton(
|
||||||
_imagePaths,
|
controller.imagePaths,
|
||||||
startDate: controller.startDate.value,
|
startDate: controller.startDate.value,
|
||||||
endDate: controller.endDate.value,
|
endDate: controller.endDate.value,
|
||||||
receiveTimeSelected: controller.dateFilterSelectedFormAdvancedSearch.value,
|
receiveTimeSelected: controller.dateFilterSelectedFormAdvancedSearch.value,
|
||||||
@@ -179,7 +176,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
))
|
))
|
||||||
else if (advancedSearchFilterField == AdvancedSearchFilterField.sortBy)
|
else if (advancedSearchFilterField == AdvancedSearchFilterField.sortBy)
|
||||||
Obx(() => SortByDropDownButton(
|
Obx(() => SortByDropDownButton(
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
sortOrderSelected: controller.searchController.sortOrderFiltered.value,
|
sortOrderSelected: controller.searchController.sortOrderFiltered.value,
|
||||||
onSortOrderSelected: controller.updateSortOrder,
|
onSortOrderSelected: controller.updateSortOrder,
|
||||||
))
|
))
|
||||||
@@ -210,7 +207,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
];
|
];
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
child: _responsiveUtils.isMobile(context) || _responsiveUtils.landscapeTabletSupported(context)
|
child: controller.responsiveUtils.isMobile(context) || controller.responsiveUtils.landscapeTabletSupported(context)
|
||||||
? Column(
|
? Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
@@ -234,7 +231,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
switch (advancedSearchFilterField) {
|
switch (advancedSearchFilterField) {
|
||||||
case AdvancedSearchFilterField.date:
|
case AdvancedSearchFilterField.date:
|
||||||
return Obx(() => DateDropDownButton(
|
return Obx(() => DateDropDownButton(
|
||||||
_imagePaths,
|
controller.imagePaths,
|
||||||
startDate: controller.startDate.value,
|
startDate: controller.startDate.value,
|
||||||
endDate: controller.endDate.value,
|
endDate: controller.endDate.value,
|
||||||
receiveTimeSelected: controller.dateFilterSelectedFormAdvancedSearch.value,
|
receiveTimeSelected: controller.dateFilterSelectedFormAdvancedSearch.value,
|
||||||
@@ -242,7 +239,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
));
|
));
|
||||||
case AdvancedSearchFilterField.sortBy:
|
case AdvancedSearchFilterField.sortBy:
|
||||||
return Obx(() => SortByDropDownButton(
|
return Obx(() => SortByDropDownButton(
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
sortOrderSelected: controller.searchController.sortOrderFiltered.value,
|
sortOrderSelected: controller.searchController.sortOrderFiltered.value,
|
||||||
onSortOrderSelected: controller.updateSortOrder,
|
onSortOrderSelected: controller.updateSortOrder,
|
||||||
));
|
));
|
||||||
@@ -336,7 +333,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
suffixIcon: isSelectFormList
|
suffixIcon: isSelectFormList
|
||||||
? buildIconWeb(
|
? buildIconWeb(
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
_imagePaths.icDropDown,
|
controller.imagePaths.icDropDown,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
|
|||||||
@@ -1,34 +1,10 @@
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
|
||||||
import 'package:tmail_ui_user/features/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';
|
import 'package:tmail_ui_user/features/mailto/presentation/mailto_url_controller.dart';
|
||||||
|
|
||||||
class MailtoUrlBindings extends BaseBindings {
|
class MailtoUrlBindings extends Bindings {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void bindingsController() {
|
void dependencies() {
|
||||||
Get.lazyPut(() => MailtoUrlController(
|
Get.lazyPut(() => MailtoUrlController());
|
||||||
Get.find<GetAuthenticatedAccountInteractor>(),
|
|
||||||
Get.find<UpdateAuthenticationAccountInteractor>(),
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
void bindingsDataSource() {}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void bindingsDataSourceImpl() {}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void bindingsInteractor() {
|
|
||||||
Get.lazyPut(() => UpdateAuthenticationAccountInteractor(Get.find<AccountRepository>()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void bindingsRepository() {}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void bindingsRepositoryImpl() {}
|
|
||||||
}
|
}
|
||||||
@@ -2,8 +2,6 @@ import 'package:core/utils/app_logger.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/session/session.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/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/features/mailto/presentation/model/mailto_arguments.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/navigation_router.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 {
|
class MailtoUrlController extends ReloadableController {
|
||||||
|
|
||||||
MailtoUrlController(
|
|
||||||
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
|
|
||||||
UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor,
|
|
||||||
) : super(
|
|
||||||
getAuthenticatedAccountInteractor,
|
|
||||||
updateAuthenticationAccountInteractor
|
|
||||||
);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
super.onReady();
|
super.onReady();
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/state/success.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/bottom_popup/confirmation_dialog_action_sheet_builder.dart';
|
||||||
import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart';
|
import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart';
|
||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
@@ -42,9 +39,6 @@ class EmailRulesController extends BaseController {
|
|||||||
EditEmailRuleFilterInteractor? _editEmailRuleFilterInteractor;
|
EditEmailRuleFilterInteractor? _editEmailRuleFilterInteractor;
|
||||||
|
|
||||||
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
|
|
||||||
final listEmailRule = <TMailRule>[].obs;
|
final listEmailRule = <TMailRule>[].obs;
|
||||||
|
|
||||||
@@ -111,7 +105,7 @@ class EmailRulesController extends BaseController {
|
|||||||
void _createNewRuleFilterSuccess(CreateNewRuleFilterSuccess success) {
|
void _createNewRuleFilterSuccess(CreateNewRuleFilterSuccess success) {
|
||||||
if (success.newListRules.isNotEmpty == true) {
|
if (success.newListRules.isNotEmpty == true) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).newFilterWasCreated);
|
AppLocalizations.of(currentContext!).newFilterWasCreated);
|
||||||
}
|
}
|
||||||
@@ -152,7 +146,7 @@ class EmailRulesController extends BaseController {
|
|||||||
void _editEmailRuleFilterSuccess(EditEmailRuleFilterSuccess success) {
|
void _editEmailRuleFilterSuccess(EditEmailRuleFilterSuccess success) {
|
||||||
if (success.listRulesUpdated.isNotEmpty == true) {
|
if (success.listRulesUpdated.isNotEmpty == true) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).yourFilterHasBeenUpdated);
|
AppLocalizations.of(currentContext!).yourFilterHasBeenUpdated);
|
||||||
}
|
}
|
||||||
@@ -162,7 +156,7 @@ class EmailRulesController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void deleteEmailRule(BuildContext context, TMailRule emailRule) {
|
void deleteEmailRule(BuildContext context, TMailRule emailRule) {
|
||||||
if (_responsiveUtils.isMobile(context)) {
|
if (responsiveUtils.isMobile(context)) {
|
||||||
(ConfirmationDialogActionSheetBuilder(context)
|
(ConfirmationDialogActionSheetBuilder(context)
|
||||||
..messageText(AppLocalizations.of(context).messageConfirmationDialogDeleteEmailRule(emailRule.name))
|
..messageText(AppLocalizations.of(context).messageConfirmationDialogDeleteEmailRule(emailRule.name))
|
||||||
..onCancelAction(AppLocalizations.of(context).cancel, () =>
|
..onCancelAction(AppLocalizations.of(context).cancel, () =>
|
||||||
@@ -176,10 +170,10 @@ class EmailRulesController extends BaseController {
|
|||||||
context: context,
|
context: context,
|
||||||
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
||||||
builder: (BuildContext context) =>
|
builder: (BuildContext context) =>
|
||||||
PointerInterceptor(child: (ConfirmDialogBuilder(_imagePaths)
|
PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
|
||||||
..title(AppLocalizations.of(context).deleteEmailRule)
|
..title(AppLocalizations.of(context).deleteEmailRule)
|
||||||
..content(AppLocalizations.of(context).messageConfirmationDialogDeleteEmailRule(emailRule.name))
|
..content(AppLocalizations.of(context).messageConfirmationDialogDeleteEmailRule(emailRule.name))
|
||||||
..addIcon(SvgPicture.asset(_imagePaths.icRemoveDialog,
|
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog,
|
||||||
fit: BoxFit.fill))
|
fit: BoxFit.fill))
|
||||||
..marginIcon(EdgeInsets.zero)
|
..marginIcon(EdgeInsets.zero)
|
||||||
..colorConfirmButton(AppColor.colorConfirmActionDialog)
|
..colorConfirmButton(AppColor.colorConfirmActionDialog)
|
||||||
@@ -236,7 +230,7 @@ class EmailRulesController extends BaseController {
|
|||||||
|
|
||||||
void _handleDeleteEmailRuleSuccess(DeleteEmailRuleSuccess success) {
|
void _handleDeleteEmailRuleSuccess(DeleteEmailRuleSuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toastMessageDeleteEmailRuleSuccessfully);
|
AppLocalizations.of(currentContext!).toastMessageDeleteEmailRuleSuccessfully);
|
||||||
}
|
}
|
||||||
@@ -267,7 +261,7 @@ class EmailRulesController extends BaseController {
|
|||||||
return (EmailRuleBottomSheetActionTileBuilder(
|
return (EmailRuleBottomSheetActionTileBuilder(
|
||||||
const Key('delete_emailRule_action'),
|
const Key('delete_emailRule_action'),
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
_imagePaths.icDeleteComposer,
|
imagePaths.icDeleteComposer,
|
||||||
colorFilter: AppColor.colorActionDeleteConfirmDialog.asFilter()),
|
colorFilter: AppColor.colorActionDeleteConfirmDialog.asFilter()),
|
||||||
AppLocalizations.of(context).deleteRule,
|
AppLocalizations.of(context).deleteRule,
|
||||||
rule,
|
rule,
|
||||||
@@ -284,7 +278,7 @@ class EmailRulesController extends BaseController {
|
|||||||
Widget _editEmailRuleActionTile(BuildContext context, TMailRule rule) {
|
Widget _editEmailRuleActionTile(BuildContext context, TMailRule rule) {
|
||||||
return (EmailRuleBottomSheetActionTileBuilder(
|
return (EmailRuleBottomSheetActionTileBuilder(
|
||||||
const Key('edit_emailRule_action'),
|
const Key('edit_emailRule_action'),
|
||||||
SvgPicture.asset(_imagePaths.icEdit),
|
SvgPicture.asset(imagePaths.icEdit),
|
||||||
AppLocalizations.of(context).editRule,
|
AppLocalizations.of(context).editRule,
|
||||||
rule,
|
rule,
|
||||||
iconLeftPadding: const EdgeInsets.only(left: 12, right: 16),
|
iconLeftPadding: const EdgeInsets.only(left: 12, right: 16),
|
||||||
|
|||||||
@@ -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';
|
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings_utils.dart';
|
||||||
|
|
||||||
class EmailRulesView extends GetWidget<EmailRulesController> with AppLoaderMixin {
|
class EmailRulesView extends GetWidget<EmailRulesController> with AppLoaderMixin {
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
EmailRulesView({Key? key}) : super(key: key);
|
EmailRulesView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: _responsiveUtils.isWebDesktop(context)
|
backgroundColor: controller.responsiveUtils.isWebDesktop(context)
|
||||||
? AppColor.colorBgDesktop
|
? AppColor.colorBgDesktop
|
||||||
: Colors.white,
|
: Colors.white,
|
||||||
body: Container(
|
body: Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
margin: SettingsUtils.getMarginViewForSettingDetails(context, _responsiveUtils),
|
margin: SettingsUtils.getMarginViewForSettingDetails(context, controller.responsiveUtils),
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
physics: const ClampingScrollPhysics(),
|
physics: const ClampingScrollPhysics(),
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
EmailRulesHeaderWidget(
|
EmailRulesHeaderWidget(
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
createRule: () => controller.goToCreateNewRule(context),
|
createRule: () => controller.goToCreateNewRule(context),
|
||||||
),
|
),
|
||||||
SizedBox(height: _responsiveUtils.isWebDesktop(context) ? 24 : 16),
|
SizedBox(height: controller.responsiveUtils.isWebDesktop(context) ? 24 : 16),
|
||||||
_buildLoadingView(),
|
_buildLoadingView(),
|
||||||
const ListEmailRulesWidget()
|
const ListEmailRulesWidget()
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/state/failure.dart';
|
import 'package:core/presentation/state/failure.dart';
|
||||||
import 'package:core/presentation/state/success.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/keyboard_utils.dart';
|
||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@@ -41,8 +39,6 @@ class ForwardController extends BaseController {
|
|||||||
EditLocalCopyInForwardingInteractor? _editLocalCopyInForwardingInteractor;
|
EditLocalCopyInForwardingInteractor? _editLocalCopyInForwardingInteractor;
|
||||||
|
|
||||||
final accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
final accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
|
|
||||||
final selectionMode = Rx<SelectMode>(SelectMode.INACTIVE);
|
final selectionMode = Rx<SelectMode>(SelectMode.INACTIVE);
|
||||||
final listRecipientForward = RxList<RecipientForward>();
|
final listRecipientForward = RxList<RecipientForward>();
|
||||||
@@ -120,7 +116,7 @@ class ForwardController extends BaseController {
|
|||||||
AppLocalizations.of(context).remove,
|
AppLocalizations.of(context).remove,
|
||||||
onConfirmAction: () => _handleDeleteRecipientAction({emailAddress}),
|
onConfirmAction: () => _handleDeleteRecipientAction({emailAddress}),
|
||||||
showAsBottomSheet: true,
|
showAsBottomSheet: true,
|
||||||
icon: SvgPicture.asset(_imagePaths.icDeleteDialogRecipients, fit: BoxFit.fill),
|
icon: SvgPicture.asset(imagePaths.icDeleteDialogRecipients, fit: BoxFit.fill),
|
||||||
titleStyle: const TextStyle(
|
titleStyle: const TextStyle(
|
||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
@@ -153,7 +149,7 @@ class ForwardController extends BaseController {
|
|||||||
|
|
||||||
void _handleDeleteRecipientSuccess(DeleteRecipientInForwardingSuccess success) {
|
void _handleDeleteRecipientSuccess(DeleteRecipientInForwardingSuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toastMessageDeleteRecipientSuccessfully);
|
AppLocalizations.of(currentContext!).toastMessageDeleteRecipientSuccessfully);
|
||||||
}
|
}
|
||||||
@@ -205,7 +201,7 @@ class ForwardController extends BaseController {
|
|||||||
AppLocalizations.of(currentContext!).remove,
|
AppLocalizations.of(currentContext!).remove,
|
||||||
onConfirmAction: () => _handleDeleteRecipientAction(listEmailAddress),
|
onConfirmAction: () => _handleDeleteRecipientAction(listEmailAddress),
|
||||||
showAsBottomSheet: true,
|
showAsBottomSheet: true,
|
||||||
icon: SvgPicture.asset(_imagePaths.icDeleteDialogRecipients, fit: BoxFit.fill),
|
icon: SvgPicture.asset(imagePaths.icDeleteDialogRecipients, fit: BoxFit.fill),
|
||||||
titleStyle: const TextStyle(
|
titleStyle: const TextStyle(
|
||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
@@ -255,7 +251,7 @@ class ForwardController extends BaseController {
|
|||||||
|
|
||||||
void _handleAddRecipientsSuccess(AddRecipientsInForwardingSuccess success) {
|
void _handleAddRecipientsSuccess(AddRecipientsInForwardingSuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toastMessageAddRecipientsSuccessfully);
|
AppLocalizations.of(currentContext!).toastMessageAddRecipientsSuccessfully);
|
||||||
}
|
}
|
||||||
@@ -281,7 +277,7 @@ class ForwardController extends BaseController {
|
|||||||
|
|
||||||
void _handleEditLocalCopySuccess(EditLocalCopyInForwardingSuccess success) {
|
void _handleEditLocalCopySuccess(EditLocalCopyInForwardingSuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
success.forward.localCopy
|
success.forward.localCopy
|
||||||
? AppLocalizations.of(currentContext!).toastMessageLocalCopyEnable
|
? AppLocalizations.of(currentContext!).toastMessageLocalCopyEnable
|
||||||
@@ -306,11 +302,11 @@ class ForwardController extends BaseController {
|
|||||||
|
|
||||||
void handleExceptionCallback(BuildContext context, bool isListEmailEmpty) {
|
void handleExceptionCallback(BuildContext context, bool isListEmailEmpty) {
|
||||||
if (isListEmailEmpty) {
|
if (isListEmailEmpty) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
context,
|
context,
|
||||||
AppLocalizations.of(context).emptyListEmailForward);
|
AppLocalizations.of(context).emptyListEmailForward);
|
||||||
} else {
|
} else {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
context,
|
context,
|
||||||
AppLocalizations.of(context).incorrectEmailFormat);
|
AppLocalizations.of(context).incorrectEmailFormat);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/state/success.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/utils/style_utils.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.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';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
|
|
||||||
class ForwardView extends GetWidget<ForwardController> with AppLoaderMixin {
|
class ForwardView extends GetWidget<ForwardController> with AppLoaderMixin {
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
ForwardView({Key? key}) : super(key: key);
|
ForwardView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: SettingsUtils.getBackgroundColor(context, _responsiveUtils),
|
backgroundColor: SettingsUtils.getBackgroundColor(context, controller.responsiveUtils),
|
||||||
body: Container(
|
body: Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
height: double.infinity,
|
height: double.infinity,
|
||||||
color: SettingsUtils.getContentBackgroundColor(context, _responsiveUtils),
|
color: SettingsUtils.getContentBackgroundColor(context, controller.responsiveUtils),
|
||||||
decoration: SettingsUtils.getBoxDecorationForContent(context, _responsiveUtils),
|
decoration: SettingsUtils.getBoxDecorationForContent(context, controller.responsiveUtils),
|
||||||
margin: SettingsUtils.getMarginViewForForwardSettingDetails(context, _responsiveUtils),
|
margin: SettingsUtils.getMarginViewForForwardSettingDetails(context, controller.responsiveUtils),
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
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)
|
const Divider(height: 1, color: AppColor.colorDividerHeaderSetting)
|
||||||
],
|
],
|
||||||
Expanded(child: SingleChildScrollView(
|
Expanded(child: SingleChildScrollView(
|
||||||
physics: const ClampingScrollPhysics(),
|
physics: const ClampingScrollPhysics(),
|
||||||
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||||
if (!_responsiveUtils.isWebDesktop(context))
|
if (!controller.responsiveUtils.isWebDesktop(context))
|
||||||
_buildTitleHeader(context),
|
_buildTitleHeader(context),
|
||||||
_buildKeepLocalSwitchButton(context),
|
_buildKeepLocalSwitchButton(context),
|
||||||
Obx(() => controller.currentForward.value != null
|
Obx(() => controller.currentForward.value != null
|
||||||
@@ -51,7 +47,7 @@ class ForwardView extends GetWidget<ForwardController> with AppLoaderMixin {
|
|||||||
_buildLoadingView(),
|
_buildLoadingView(),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
if (controller.listRecipientForward.isNotEmpty) {
|
if (controller.listRecipientForward.isNotEmpty) {
|
||||||
return ListEmailForwardsWidget();
|
return const ListEmailForwardsWidget();
|
||||||
} else {
|
} else {
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
@@ -68,7 +64,7 @@ class ForwardView extends GetWidget<ForwardController> with AppLoaderMixin {
|
|||||||
return Container(
|
return Container(
|
||||||
color: Colors.transparent,
|
color: Colors.transparent,
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
padding: SettingsUtils.getPaddingTitleHeaderForwarding(context, _responsiveUtils),
|
padding: SettingsUtils.getPaddingTitleHeaderForwarding(context, controller.responsiveUtils),
|
||||||
child: Text(
|
child: Text(
|
||||||
AppLocalizations.of(context).forwardingSettingExplanation,
|
AppLocalizations.of(context).forwardingSettingExplanation,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
@@ -85,7 +81,7 @@ class ForwardView extends GetWidget<ForwardController> with AppLoaderMixin {
|
|||||||
return controller.listRecipientForward.isNotEmpty
|
return controller.listRecipientForward.isNotEmpty
|
||||||
? Container(
|
? Container(
|
||||||
color: Colors.transparent,
|
color: Colors.transparent,
|
||||||
padding: SettingsUtils.getPaddingKeepLocalSwitchButtonForwarding(context, _responsiveUtils),
|
padding: SettingsUtils.getPaddingKeepLocalSwitchButtonForwarding(context, controller.responsiveUtils),
|
||||||
child: Row(children: [
|
child: Row(children: [
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(right: 16),
|
padding: const EdgeInsets.only(right: 16),
|
||||||
@@ -93,8 +89,8 @@ class ForwardView extends GetWidget<ForwardController> with AppLoaderMixin {
|
|||||||
onTap: controller.handleEditLocalCopy,
|
onTap: controller.handleEditLocalCopy,
|
||||||
child: SvgPicture.asset(
|
child: SvgPicture.asset(
|
||||||
controller.currentForwardLocalCopyState
|
controller.currentForwardLocalCopyState
|
||||||
? _imagePaths.icSwitchOn
|
? controller.imagePaths.icSwitchOn
|
||||||
: _imagePaths.icSwitchOff,
|
: controller.imagePaths.icSwitchOff,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
width: 36,
|
width: 36,
|
||||||
height: 24))),
|
height: 24))),
|
||||||
|
|||||||
+3
-8
@@ -1,6 +1,4 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
|
||||||
import 'package:core/presentation/views/button/icon_button_web.dart';
|
import 'package:core/presentation/views/button/icon_button_web.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.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<ForwardController> {
|
class ListEmailForwardsWidget extends GetWidget<ForwardController> {
|
||||||
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
const ListEmailForwardsWidget({Key? key}) : super(key: key);
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
|
|
||||||
ListEmailForwardsWidget({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return Container(
|
||||||
color: Colors.transparent,
|
color: Colors.transparent,
|
||||||
padding: SettingsUtils.getPaddingListRecipientForwarding(context, _responsiveUtils),
|
padding: SettingsUtils.getPaddingListRecipientForwarding(context, controller.responsiveUtils),
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
@@ -106,7 +101,7 @@ class ListEmailForwardsWidget extends GetWidget<ForwardController> {
|
|||||||
children: [
|
children: [
|
||||||
buildIconWeb(
|
buildIconWeb(
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
_imagePaths.icClose,
|
controller.imagePaths.icClose,
|
||||||
colorFilter: AppColor.colorTextButton.asFilter(),
|
colorFilter: AppColor.colorTextButton.asFilter(),
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
tooltip: AppLocalizations.of(context).cancel,
|
tooltip: AppLocalizations.of(context).cancel,
|
||||||
|
|||||||
+9
-12
@@ -1,6 +1,5 @@
|
|||||||
|
|
||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_portal/flutter_portal.dart';
|
import 'package:flutter_portal/flutter_portal.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -12,24 +11,22 @@ import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
|||||||
|
|
||||||
class LanguageAndRegionView extends GetWidget<LanguageAndRegionController> {
|
class LanguageAndRegionView extends GetWidget<LanguageAndRegionController> {
|
||||||
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
const LanguageAndRegionView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
LanguageAndRegionView({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Portal(
|
return Portal(
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
backgroundColor: _responsiveUtils.isWebDesktop(context)
|
backgroundColor: controller.responsiveUtils.isWebDesktop(context)
|
||||||
? AppColor.colorBgDesktop
|
? AppColor.colorBgDesktop
|
||||||
: Colors.white,
|
: Colors.white,
|
||||||
body: Container(
|
body: Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
margin: _responsiveUtils.isWebDesktop(context)
|
margin: controller.responsiveUtils.isWebDesktop(context)
|
||||||
? const EdgeInsets.all(24)
|
? const EdgeInsets.all(24)
|
||||||
: EdgeInsets.symmetric(horizontal: SettingsUtils.getHorizontalPadding(context, _responsiveUtils)),
|
: EdgeInsets.symmetric(horizontal: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils)),
|
||||||
color: _responsiveUtils.isWebDesktop(context) ? null : Colors.white,
|
color: controller.responsiveUtils.isWebDesktop(context) ? null : Colors.white,
|
||||||
decoration: _responsiveUtils.isWebDesktop(context)
|
decoration: controller.responsiveUtils.isWebDesktop(context)
|
||||||
? BoxDecoration(
|
? BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(20),
|
borderRadius: BorderRadius.circular(20),
|
||||||
border: Border.all(color: AppColor.colorBorderBodyThread, width: 1),
|
border: Border.all(color: AppColor.colorBorderBodyThread, width: 1),
|
||||||
@@ -37,15 +34,15 @@ class LanguageAndRegionView extends GetWidget<LanguageAndRegionController> {
|
|||||||
: null,
|
: null,
|
||||||
child: ClipRRect(
|
child: ClipRRect(
|
||||||
borderRadius: BorderRadius.circular(
|
borderRadius: BorderRadius.circular(
|
||||||
_responsiveUtils.isWebDesktop(context) ? 20 : 0),
|
controller.responsiveUtils.isWebDesktop(context) ? 20 : 0),
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsets.only(
|
padding: EdgeInsets.only(
|
||||||
right: AppUtils.isDirectionRTL(context)
|
right: AppUtils.isDirectionRTL(context)
|
||||||
? _responsiveUtils.isWebDesktop(context) ? 24 : 0
|
? controller.responsiveUtils.isWebDesktop(context) ? 24 : 0
|
||||||
: 0,
|
: 0,
|
||||||
left: AppUtils.isDirectionRTL(context)
|
left: AppUtils.isDirectionRTL(context)
|
||||||
? 0
|
? 0
|
||||||
: _responsiveUtils.isWebDesktop(context) ? 24 : 0,
|
: controller.responsiveUtils.isWebDesktop(context) ? 24 : 0,
|
||||||
top: 24
|
top: 24
|
||||||
),
|
),
|
||||||
child: Column(
|
child: Column(
|
||||||
|
|||||||
+3
-7
@@ -1,7 +1,5 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/state/success.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/app_logger.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@@ -40,8 +38,6 @@ class MailboxVisibilityController extends BaseMailboxController {
|
|||||||
SubscribeMailboxInteractor? _subscribeMailboxInteractor;
|
SubscribeMailboxInteractor? _subscribeMailboxInteractor;
|
||||||
SubscribeMultipleMailboxInteractor? _subscribeMultipleMailboxInteractor;
|
SubscribeMultipleMailboxInteractor? _subscribeMultipleMailboxInteractor;
|
||||||
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final mailboxListScrollController = ScrollController();
|
final mailboxListScrollController = ScrollController();
|
||||||
|
|
||||||
MailboxVisibilityController(
|
MailboxVisibilityController(
|
||||||
@@ -221,7 +217,7 @@ class MailboxVisibilityController extends BaseMailboxController {
|
|||||||
{List<MailboxId>? listDescendantMailboxIds}
|
{List<MailboxId>? listDescendantMailboxIds}
|
||||||
) {
|
) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toastMsgHideFolderSuccess,
|
AppLocalizations.of(currentContext!).toastMsgHideFolderSuccess,
|
||||||
actionName: AppLocalizations.of(currentContext!).undo,
|
actionName: AppLocalizations.of(currentContext!).undo,
|
||||||
@@ -233,10 +229,10 @@ class MailboxVisibilityController extends BaseMailboxController {
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
leadingSVGIconColor: Colors.white,
|
leadingSVGIconColor: Colors.white,
|
||||||
leadingSVGIcon: _imagePaths.icFolderMailbox,
|
leadingSVGIcon: imagePaths.icFolderMailbox,
|
||||||
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
backgroundColor: AppColor.toastSuccessBackgroundColor,
|
||||||
textColor: Colors.white,
|
textColor: Colors.white,
|
||||||
actionIcon: SvgPicture.asset(_imagePaths.icUndo),
|
actionIcon: SvgPicture.asset(imagePaths.icUndo),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-12
@@ -1,7 +1,5 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/state/success.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:core/presentation/views/list/tree_view.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -21,19 +19,16 @@ class MailboxVisibilityView extends GetWidget<MailboxVisibilityController>
|
|||||||
with AppLoaderMixin,
|
with AppLoaderMixin,
|
||||||
MailboxWidgetMixin {
|
MailboxWidgetMixin {
|
||||||
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
MailboxVisibilityView({Key? key}) : super(key: key);
|
MailboxVisibilityView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return SettingDetailViewBuilder(
|
return SettingDetailViewBuilder(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
if (_responsiveUtils.isWebDesktop(context))
|
if (controller.responsiveUtils.isWebDesktop(context))
|
||||||
...[
|
...[
|
||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
const MailboxVisibilityHeaderWidget(),
|
const MailboxVisibilityHeaderWidget(),
|
||||||
@@ -46,7 +41,7 @@ class MailboxVisibilityView extends GetWidget<MailboxVisibilityController>
|
|||||||
],
|
],
|
||||||
_buildLoadingView(),
|
_buildLoadingView(),
|
||||||
Expanded(child: Padding(
|
Expanded(child: Padding(
|
||||||
padding: MailboxVisibilityUtils.getPaddingListView(context, _responsiveUtils),
|
padding: MailboxVisibilityUtils.getPaddingListView(context, controller.responsiveUtils),
|
||||||
child: _buildListMailbox(context)
|
child: _buildListMailbox(context)
|
||||||
))
|
))
|
||||||
]
|
]
|
||||||
@@ -100,8 +95,8 @@ class MailboxVisibilityView extends GetWidget<MailboxVisibilityController>
|
|||||||
return Column(children: [
|
return Column(children: [
|
||||||
buildHeaderMailboxCategory(
|
buildHeaderMailboxCategory(
|
||||||
context,
|
context,
|
||||||
_responsiveUtils,
|
controller.responsiveUtils,
|
||||||
_imagePaths,
|
controller.imagePaths,
|
||||||
categories,
|
categories,
|
||||||
controller,
|
controller,
|
||||||
padding: const EdgeInsets.all(8),
|
padding: const EdgeInsets.all(8),
|
||||||
@@ -139,7 +134,7 @@ class MailboxVisibilityView extends GetWidget<MailboxVisibilityController>
|
|||||||
isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND,
|
isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND,
|
||||||
paddingChild: const EdgeInsetsDirectional.only(start: 10),
|
paddingChild: const EdgeInsetsDirectional.only(start: 10),
|
||||||
parent: MailBoxVisibilityFolderTileBuilder(
|
parent: MailBoxVisibilityFolderTileBuilder(
|
||||||
_imagePaths,
|
controller.imagePaths,
|
||||||
mailboxNode,
|
mailboxNode,
|
||||||
onClickExpandMailboxNodeAction: (mailboxNode) {
|
onClickExpandMailboxNodeAction: (mailboxNode) {
|
||||||
controller.toggleMailboxFolder(mailboxNode, controller.mailboxListScrollController);
|
controller.toggleMailboxFolder(mailboxNode, controller.mailboxListScrollController);
|
||||||
@@ -148,7 +143,7 @@ class MailboxVisibilityView extends GetWidget<MailboxVisibilityController>
|
|||||||
),
|
),
|
||||||
children: _buildListChildTileWidget(context, mailboxNode)).build()
|
children: _buildListChildTileWidget(context, mailboxNode)).build()
|
||||||
: MailBoxVisibilityFolderTileBuilder(
|
: MailBoxVisibilityFolderTileBuilder(
|
||||||
_imagePaths,
|
controller.imagePaths,
|
||||||
mailboxNode,
|
mailboxNode,
|
||||||
onClickExpandMailboxNodeAction: (mailboxNode) {
|
onClickExpandMailboxNodeAction: (mailboxNode) {
|
||||||
controller.toggleMailboxFolder(mailboxNode, controller.mailboxListScrollController);
|
controller.toggleMailboxFolder(mailboxNode, controller.mailboxListScrollController);
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/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/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/datasource_impl/manage_account_datasource_impl.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
|
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
|
||||||
@@ -26,10 +23,7 @@ class ManageAccountDashBoardBindings extends BaseBindings {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void bindingsController() {
|
void bindingsController() {
|
||||||
Get.put(ManageAccountDashBoardController(
|
Get.put(ManageAccountDashBoardController());
|
||||||
Get.find<GetAuthenticatedAccountInteractor>(),
|
|
||||||
Get.find<UpdateAuthenticationAccountInteractor>()
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -45,9 +39,7 @@ class ManageAccountDashBoardBindings extends BaseBindings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void bindingsInteractor() {
|
void bindingsInteractor() {}
|
||||||
Get.lazyPut(() => UpdateAuthenticationAccountInteractor(Get.find<AccountRepository>()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void bindingsRepository() {
|
void bindingsRepository() {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
|
|
||||||
import 'package:core/core.dart';
|
import 'package:core/core.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:forward/forward/capability_forward.dart';
|
import 'package:forward/forward/capability_forward.dart';
|
||||||
import 'package:get/get.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: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/action/ui_action.dart';
|
||||||
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.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/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/get_all_vacation_state.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/state/update_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 {
|
class ManageAccountDashBoardController extends ReloadableController {
|
||||||
|
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
|
|
||||||
GetAllVacationInteractor? _getAllVacationInteractor;
|
GetAllVacationInteractor? _getAllVacationInteractor;
|
||||||
UpdateVacationInteractor? _updateVacationInteractor;
|
UpdateVacationInteractor? _updateVacationInteractor;
|
||||||
|
|
||||||
@@ -56,14 +50,6 @@ class ManageAccountDashBoardController extends ReloadableController {
|
|||||||
|
|
||||||
Session? sessionCurrent;
|
Session? sessionCurrent;
|
||||||
|
|
||||||
ManageAccountDashBoardController(
|
|
||||||
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
|
|
||||||
UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor
|
|
||||||
) : super(
|
|
||||||
getAuthenticatedAccountInteractor,
|
|
||||||
updateAuthenticationAccountInteractor
|
|
||||||
);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
_initialPageLevel();
|
_initialPageLevel();
|
||||||
@@ -74,7 +60,6 @@ class ManageAccountDashBoardController extends ReloadableController {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void handleSuccessViewState(Success success) {
|
void handleSuccessViewState(Success success) {
|
||||||
super.handleSuccessViewState(success);
|
|
||||||
if (success is GetUserProfileSuccess) {
|
if (success is GetUserProfileSuccess) {
|
||||||
userProfile.value = success.userProfile;
|
userProfile.value = success.userProfile;
|
||||||
} else if (success is GetAllVacationSuccess) {
|
} else if (success is GetAllVacationSuccess) {
|
||||||
@@ -83,13 +68,15 @@ class ManageAccountDashBoardController extends ReloadableController {
|
|||||||
}
|
}
|
||||||
} else if (success is UpdateVacationSuccess) {
|
} else if (success is UpdateVacationSuccess) {
|
||||||
_handleUpdateVacationSuccess(success);
|
_handleUpdateVacationSuccess(success);
|
||||||
|
} else {
|
||||||
|
super.handleSuccessViewState(success);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void handleReloaded(Session session) {
|
void handleReloaded(Session session) {
|
||||||
sessionCurrent = session;
|
sessionCurrent = session;
|
||||||
accountId.value = session.accounts.keys.first;
|
accountId.value = session.personalAccount.accountId;
|
||||||
_getUserProfile();
|
_getUserProfile();
|
||||||
_bindingInteractorForMenuItemView(sessionCurrent, accountId.value);
|
_bindingInteractorForMenuItemView(sessionCurrent, accountId.value);
|
||||||
_getVacationResponse();
|
_getVacationResponse();
|
||||||
@@ -100,22 +87,20 @@ class ManageAccountDashBoardController extends ReloadableController {
|
|||||||
log('ManageAccountDashBoardController::_getArguments(): $arguments');
|
log('ManageAccountDashBoardController::_getArguments(): $arguments');
|
||||||
if (arguments is ManageAccountArguments) {
|
if (arguments is ManageAccountArguments) {
|
||||||
sessionCurrent = arguments.session;
|
sessionCurrent = arguments.session;
|
||||||
accountId.value = arguments.session?.accounts.keys.first;
|
accountId.value = arguments.session?.personalAccount.accountId;
|
||||||
_getUserProfile();
|
_getUserProfile();
|
||||||
_bindingInteractorForMenuItemView(sessionCurrent, accountId.value);
|
_bindingInteractorForMenuItemView(sessionCurrent, accountId.value);
|
||||||
_getVacationResponse();
|
_getVacationResponse();
|
||||||
if (arguments.menuSettingCurrent != null) {
|
if (arguments.menuSettingCurrent != null) {
|
||||||
_goToSettingMenuCurrent(arguments.menuSettingCurrent!);
|
_goToSettingMenuCurrent(arguments.menuSettingCurrent!);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (PlatformInfo.isWeb) {
|
||||||
if (kIsWeb) {
|
reload();
|
||||||
reload();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _initialPageLevel() {
|
void _initialPageLevel() {
|
||||||
if (currentContext != null && _responsiveUtils.isWebDesktop(currentContext!)) {
|
if (currentContext != null && responsiveUtils.isWebDesktop(currentContext!)) {
|
||||||
settingsPageLevel.value = SettingsPageLevel.level1;
|
settingsPageLevel.value = SettingsPageLevel.level1;
|
||||||
} else {
|
} else {
|
||||||
settingsPageLevel.value = SettingsPageLevel.universal;
|
settingsPageLevel.value = SettingsPageLevel.universal;
|
||||||
@@ -261,7 +246,7 @@ class ManageAccountDashBoardController extends ReloadableController {
|
|||||||
void _handleUpdateVacationSuccess(UpdateVacationSuccess success) {
|
void _handleUpdateVacationSuccess(UpdateVacationSuccess success) {
|
||||||
if (success.listVacationResponse.isNotEmpty) {
|
if (success.listVacationResponse.isNotEmpty) {
|
||||||
if (currentContext != null && currentOverlayContext != null) {
|
if (currentContext != null && currentOverlayContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).yourVacationResponderIsDisabledSuccessfully);
|
AppLocalizations.of(currentContext!).yourVacationResponderIsDisabledSuccessfully);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
|
|
||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||||
import 'package:core/presentation/views/image/avatar_builder.dart';
|
import 'package:core/presentation/views/image/avatar_builder.dart';
|
||||||
import 'package:core/presentation/views/responsive/responsive_widget.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<ManageAccountDashBoardController>
|
class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardController>
|
||||||
with UserSettingPopupMenuMixin {
|
with UserSettingPopupMenuMixin {
|
||||||
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
ManageAccountDashBoardView({Key? key}) : super(key: key);
|
ManageAccountDashBoardView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -43,7 +39,7 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
|
|||||||
body: GestureDetector(
|
body: GestureDetector(
|
||||||
onTap: () => FocusScope.of(context).unfocus(),
|
onTap: () => FocusScope.of(context).unfocus(),
|
||||||
child: ResponsiveWidget(
|
child: ResponsiveWidget(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
desktop: Column(children: [
|
desktop: Column(children: [
|
||||||
Row(children: [
|
Row(children: [
|
||||||
Container(width: 256, color: Colors.white,
|
Container(width: 256, color: Colors.white,
|
||||||
@@ -54,7 +50,7 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
|
|||||||
text: AppLocalizations.of(context).app_name,
|
text: AppLocalizations.of(context).app_name,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
|
textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
|
||||||
logoSVG: _imagePaths.icTMailLogo,
|
logoSVG: controller.imagePaths.icTMailLogo,
|
||||||
onTapCallback: () => controller.backToMailboxDashBoard(context),
|
onTapCallback: () => controller.backToMailboxDashBoard(context),
|
||||||
),
|
),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
@@ -78,7 +74,10 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
|
|||||||
Expanded(child: Row(
|
Expanded(child: Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
SizedBox(width: ResponsiveUtils.defaultSizeMenu, child: ManageAccountMenuView()),
|
const SizedBox(
|
||||||
|
width: ResponsiveUtils.defaultSizeMenu,
|
||||||
|
child: ManageAccountMenuView()
|
||||||
|
),
|
||||||
Expanded(child: Container(
|
Expanded(child: Container(
|
||||||
color: AppColor.colorBgDesktop,
|
color: AppColor.colorBgDesktop,
|
||||||
child: Column(children: [
|
child: Column(children: [
|
||||||
@@ -162,7 +161,7 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
|
|||||||
case AccountMenuItem.profiles:
|
case AccountMenuItem.profiles:
|
||||||
return ProfilesView();
|
return ProfilesView();
|
||||||
case AccountMenuItem.languageAndRegion:
|
case AccountMenuItem.languageAndRegion:
|
||||||
return LanguageAndRegionView();
|
return const LanguageAndRegionView();
|
||||||
case AccountMenuItem.emailRules:
|
case AccountMenuItem.emailRules:
|
||||||
if(controller.isRuleFilterCapabilitySupported){
|
if(controller.isRuleFilterCapabilitySupported){
|
||||||
return EmailRulesView();
|
return EmailRulesView();
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
import 'package:core/core.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/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
|
||||||
@@ -9,7 +10,8 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
|||||||
class ManageAccountMenuController extends GetxController {
|
class ManageAccountMenuController extends GetxController {
|
||||||
|
|
||||||
final dashBoardController = Get.find<ManageAccountDashBoardController>();
|
final dashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
final responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
|
final imagePaths = Get.find<ImagePaths>();
|
||||||
|
|
||||||
final listAccountMenuItem = RxList<AccountMenuItem>([
|
final listAccountMenuItem = RxList<AccountMenuItem>([
|
||||||
AccountMenuItem.profiles,
|
AccountMenuItem.profiles,
|
||||||
@@ -46,7 +48,7 @@ class ManageAccountMenuController extends GetxController {
|
|||||||
listAccountMenuItem.value = newListMenuSetting;
|
listAccountMenuItem.value = newListMenuSetting;
|
||||||
|
|
||||||
if (listAccountMenuItem.isNotEmpty) {
|
if (listAccountMenuItem.isNotEmpty) {
|
||||||
if (currentContext != null && _responsiveUtils.isWebDesktop(currentContext!)) {
|
if (currentContext != null && responsiveUtils.isWebDesktop(currentContext!)) {
|
||||||
selectAccountMenuItem(listAccountMenuItem.first);
|
selectAccountMenuItem(listAccountMenuItem.first);
|
||||||
} else {
|
} else {
|
||||||
selectAccountMenuItem(AccountMenuItem.none);
|
selectAccountMenuItem(AccountMenuItem.none);
|
||||||
|
|||||||
@@ -10,21 +10,18 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
|||||||
|
|
||||||
class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
||||||
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
const ManageAccountMenuView({Key? key}) : super(key: key);
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
ManageAccountMenuView({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Drawer(
|
return Drawer(
|
||||||
elevation: _responsiveUtils.isDesktop(context) ? 0 : 16.0,
|
elevation: controller.responsiveUtils.isDesktop(context) ? 0 : 16.0,
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
backgroundColor: Colors.white,
|
backgroundColor: Colors.white,
|
||||||
body: SafeArea(right: false, bottom: false,
|
body: SafeArea(right: false, bottom: false,
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
if (!_responsiveUtils.isWebDesktop(context))
|
if (!controller.responsiveUtils.isWebDesktop(context))
|
||||||
Container(
|
Container(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
padding: const EdgeInsets.only(top: 16, bottom: 16, left: 16),
|
padding: const EdgeInsets.only(top: 16, bottom: 16, left: 16),
|
||||||
@@ -34,7 +31,7 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
|||||||
text: AppLocalizations.of(context).app_name,
|
text: AppLocalizations.of(context).app_name,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
|
textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
|
||||||
logoSVG: _imagePaths.icTMailLogo
|
logoSVG: controller.imagePaths.icTMailLogo
|
||||||
),
|
),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
if (controller.dashBoardController.appInformation.value != null) {
|
if (controller.dashBoardController.appInformation.value != null) {
|
||||||
@@ -52,10 +49,10 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
|||||||
}),
|
}),
|
||||||
])
|
])
|
||||||
),
|
),
|
||||||
if (!_responsiveUtils.isWebDesktop(context))
|
if (!controller.responsiveUtils.isWebDesktop(context))
|
||||||
const Divider(color: AppColor.colorDividerMailbox, height: 1),
|
const Divider(color: AppColor.colorDividerMailbox, height: 1),
|
||||||
Expanded(child: Container(
|
Expanded(child: Container(
|
||||||
color: _responsiveUtils.isWebDesktop(context) ? AppColor.colorBgDesktop : Colors.white,
|
color: controller.responsiveUtils.isWebDesktop(context) ? AppColor.colorBgDesktop : Colors.white,
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
@@ -65,8 +62,8 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
|||||||
key: const Key('back_to_dashboard_button'),
|
key: const Key('back_to_dashboard_button'),
|
||||||
text: AppLocalizations.of(context).back,
|
text: AppLocalizations.of(context).back,
|
||||||
icon: DirectionUtils.isDirectionRTLByLanguage(context)
|
icon: DirectionUtils.isDirectionRTLByLanguage(context)
|
||||||
? _imagePaths.icArrowRight
|
? controller.imagePaths.icArrowRight
|
||||||
: _imagePaths.icBack,
|
: controller.imagePaths.icBack,
|
||||||
borderRadius: 10,
|
borderRadius: 10,
|
||||||
backgroundColor: AppColor.colorBgMailboxSelected,
|
backgroundColor: AppColor.colorBgMailboxSelected,
|
||||||
iconColor: AppColor.colorTextButton,
|
iconColor: AppColor.colorTextButton,
|
||||||
@@ -133,7 +130,7 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
|||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6),
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6),
|
||||||
child: Row(children: [
|
child: Row(children: [
|
||||||
SvgPicture.asset(_imagePaths.icSignOut, fit: BoxFit.fill),
|
SvgPicture.asset(controller.imagePaths.icSignOut, fit: BoxFit.fill),
|
||||||
const SizedBox(width: 12),
|
const SizedBox(width: 12),
|
||||||
Expanded(child: Text(
|
Expanded(child: Text(
|
||||||
AppLocalizations.of(context).sign_out,
|
AppLocalizations.of(context).sign_out,
|
||||||
|
|||||||
@@ -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:core/utils/app_logger.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.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 {
|
class SettingsController extends GetxController {
|
||||||
final manageAccountDashboardController = Get.find<ManageAccountDashBoardController>();
|
final manageAccountDashboardController = Get.find<ManageAccountDashBoardController>();
|
||||||
|
final responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
|
final imagePaths = Get.find<ImagePaths>();
|
||||||
|
|
||||||
void selectSettings(AccountMenuItem accountMenuItem) {
|
void selectSettings(AccountMenuItem accountMenuItem) {
|
||||||
log('SettingsController::selectSettings(): $accountMenuItem');
|
log('SettingsController::selectSettings(): $accountMenuItem');
|
||||||
|
|||||||
+23
-28
@@ -1,6 +1,4 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget.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';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
|
|
||||||
class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
||||||
SettingsFirstLevelView({Key? key}) : super(key: key);
|
const SettingsFirstLevelView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -22,40 +17,40 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
|||||||
child: Column(children: [
|
child: Column(children: [
|
||||||
Obx(() => UserInformationWidget(
|
Obx(() => UserInformationWidget(
|
||||||
userProfile: controller.manageAccountDashboardController.userProfile.value,
|
userProfile: controller.manageAccountDashboardController.userProfile.value,
|
||||||
padding: SettingsUtils.getPaddingInFirstLevel(context, _responsiveUtils),
|
padding: SettingsUtils.getPaddingInFirstLevel(context, controller.responsiveUtils),
|
||||||
titlePadding: const EdgeInsetsDirectional.only(start: 16))),
|
titlePadding: const EdgeInsetsDirectional.only(start: 16))),
|
||||||
Divider(
|
Divider(
|
||||||
color: AppColor.colorDividerComposer,
|
color: AppColor.colorDividerComposer,
|
||||||
height: 1,
|
height: 1,
|
||||||
indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils),
|
indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils),
|
||||||
endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils)
|
endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils)
|
||||||
),
|
),
|
||||||
SettingFirstLevelTileBuilder(
|
SettingFirstLevelTileBuilder(
|
||||||
AppLocalizations.of(context).profiles,
|
AppLocalizations.of(context).profiles,
|
||||||
AccountMenuItem.profiles.getIcon(_imagePaths),
|
AccountMenuItem.profiles.getIcon(controller.imagePaths),
|
||||||
subtitle: AppLocalizations.of(context).profilesSettingExplanation,
|
subtitle: AppLocalizations.of(context).profilesSettingExplanation,
|
||||||
() => controller.selectSettings(AccountMenuItem.profiles)
|
() => controller.selectSettings(AccountMenuItem.profiles)
|
||||||
),
|
),
|
||||||
Divider(
|
Divider(
|
||||||
color: AppColor.colorDividerComposer,
|
color: AppColor.colorDividerComposer,
|
||||||
height: 1,
|
height: 1,
|
||||||
indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils),
|
indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils),
|
||||||
endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils)
|
endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils)
|
||||||
),
|
),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
if (controller.manageAccountDashboardController.isRuleFilterCapabilitySupported) {
|
if (controller.manageAccountDashboardController.isRuleFilterCapabilitySupported) {
|
||||||
return Column(children: [
|
return Column(children: [
|
||||||
SettingFirstLevelTileBuilder(
|
SettingFirstLevelTileBuilder(
|
||||||
AccountMenuItem.emailRules.getName(context),
|
AccountMenuItem.emailRules.getName(context),
|
||||||
AccountMenuItem.emailRules.getIcon(_imagePaths),
|
AccountMenuItem.emailRules.getIcon(controller.imagePaths),
|
||||||
subtitle: AppLocalizations.of(context).emailRuleSettingExplanation,
|
subtitle: AppLocalizations.of(context).emailRuleSettingExplanation,
|
||||||
() => controller.selectSettings(AccountMenuItem.emailRules)
|
() => controller.selectSettings(AccountMenuItem.emailRules)
|
||||||
),
|
),
|
||||||
Divider(
|
Divider(
|
||||||
color: AppColor.colorDividerComposer,
|
color: AppColor.colorDividerComposer,
|
||||||
height: 1,
|
height: 1,
|
||||||
indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils),
|
indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils),
|
||||||
endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils)
|
endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils)
|
||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
@@ -67,15 +62,15 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
|||||||
return Column(children: [
|
return Column(children: [
|
||||||
SettingFirstLevelTileBuilder(
|
SettingFirstLevelTileBuilder(
|
||||||
AccountMenuItem.forward.getName(context),
|
AccountMenuItem.forward.getName(context),
|
||||||
AccountMenuItem.forward.getIcon(_imagePaths),
|
AccountMenuItem.forward.getIcon(controller.imagePaths),
|
||||||
subtitle: AppLocalizations.of(context).forwardingSettingExplanation,
|
subtitle: AppLocalizations.of(context).forwardingSettingExplanation,
|
||||||
() => controller.selectSettings(AccountMenuItem.forward)
|
() => controller.selectSettings(AccountMenuItem.forward)
|
||||||
),
|
),
|
||||||
Divider(
|
Divider(
|
||||||
color: AppColor.colorDividerComposer,
|
color: AppColor.colorDividerComposer,
|
||||||
height: 1,
|
height: 1,
|
||||||
indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils),
|
indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils),
|
||||||
endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils)
|
endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils)
|
||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
@@ -87,15 +82,15 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
|||||||
return Column(children: [
|
return Column(children: [
|
||||||
SettingFirstLevelTileBuilder(
|
SettingFirstLevelTileBuilder(
|
||||||
AccountMenuItem.vacation.getName(context),
|
AccountMenuItem.vacation.getName(context),
|
||||||
AccountMenuItem.vacation.getIcon(_imagePaths),
|
AccountMenuItem.vacation.getIcon(controller.imagePaths),
|
||||||
subtitle: AppLocalizations.of(context).vacationSettingExplanation,
|
subtitle: AppLocalizations.of(context).vacationSettingExplanation,
|
||||||
() => controller.selectSettings(AccountMenuItem.vacation)
|
() => controller.selectSettings(AccountMenuItem.vacation)
|
||||||
),
|
),
|
||||||
Divider(
|
Divider(
|
||||||
color: AppColor.colorDividerComposer,
|
color: AppColor.colorDividerComposer,
|
||||||
height: 1,
|
height: 1,
|
||||||
indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils),
|
indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils),
|
||||||
endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils)
|
endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils)
|
||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
@@ -105,31 +100,31 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
|
|||||||
Column(children: [
|
Column(children: [
|
||||||
SettingFirstLevelTileBuilder(
|
SettingFirstLevelTileBuilder(
|
||||||
AccountMenuItem.mailboxVisibility.getName(context),
|
AccountMenuItem.mailboxVisibility.getName(context),
|
||||||
AccountMenuItem.mailboxVisibility.getIcon(_imagePaths),
|
AccountMenuItem.mailboxVisibility.getIcon(controller.imagePaths),
|
||||||
subtitle: AppLocalizations.of(context).folderVisibilitySubtitle,
|
subtitle: AppLocalizations.of(context).folderVisibilitySubtitle,
|
||||||
() => controller.selectSettings(AccountMenuItem.mailboxVisibility)
|
() => controller.selectSettings(AccountMenuItem.mailboxVisibility)
|
||||||
),
|
),
|
||||||
Divider(
|
Divider(
|
||||||
color: AppColor.colorDividerComposer,
|
color: AppColor.colorDividerComposer,
|
||||||
height: 1,
|
height: 1,
|
||||||
indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils),
|
indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils),
|
||||||
endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils)
|
endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils)
|
||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
SettingFirstLevelTileBuilder(
|
SettingFirstLevelTileBuilder(
|
||||||
AccountMenuItem.languageAndRegion.getName(context),
|
AccountMenuItem.languageAndRegion.getName(context),
|
||||||
AccountMenuItem.languageAndRegion.getIcon(_imagePaths),
|
AccountMenuItem.languageAndRegion.getIcon(controller.imagePaths),
|
||||||
() => controller.selectSettings(AccountMenuItem.languageAndRegion)
|
() => controller.selectSettings(AccountMenuItem.languageAndRegion)
|
||||||
),
|
),
|
||||||
Divider(
|
Divider(
|
||||||
color: AppColor.colorDividerComposer,
|
color: AppColor.colorDividerComposer,
|
||||||
height: 1,
|
height: 1,
|
||||||
indent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils),
|
indent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils),
|
||||||
endIndent: SettingsUtils.getHorizontalPadding(context, _responsiveUtils)
|
endIndent: SettingsUtils.getHorizontalPadding(context, controller.responsiveUtils)
|
||||||
),
|
),
|
||||||
SettingFirstLevelTileBuilder(
|
SettingFirstLevelTileBuilder(
|
||||||
AppLocalizations.of(context).sign_out,
|
AppLocalizations.of(context).sign_out,
|
||||||
_imagePaths.icSignOut,
|
controller.imagePaths.icSignOut,
|
||||||
() => controller.manageAccountDashboardController.logout(
|
() => controller.manageAccountDashboardController.logout(
|
||||||
controller.manageAccountDashboardController.sessionCurrent,
|
controller.manageAccountDashboardController.sessionCurrent,
|
||||||
controller.manageAccountDashboardController.accountId.value)
|
controller.manageAccountDashboardController.accountId.value)
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
|
||||||
import 'package:core/presentation/utils/style_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/button/icon_button_web.dart';
|
||||||
import 'package:core/utils/direction_utils.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();
|
typedef CloseSettingsViewAction = void Function();
|
||||||
|
|
||||||
class SettingsView extends GetWidget<SettingsController> {
|
class SettingsView extends GetWidget<SettingsController> {
|
||||||
SettingsView({Key? key, this.closeAction}) : super(key: key);
|
const SettingsView({Key? key, this.closeAction}) : super(key: key);
|
||||||
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final CloseSettingsViewAction? closeAction;
|
final CloseSettingsViewAction? closeAction;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -44,7 +40,7 @@ class SettingsView extends GetWidget<SettingsController> {
|
|||||||
SizedBox.fromSize(
|
SizedBox.fromSize(
|
||||||
size: const Size.fromHeight(52),
|
size: const Size.fromHeight(52),
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: SettingsUtils.getPaddingAppBar(context, _responsiveUtils),
|
padding: SettingsUtils.getPaddingAppBar(context, controller.responsiveUtils),
|
||||||
child: _buildAppbar(context))),
|
child: _buildAppbar(context))),
|
||||||
const Divider(color: AppColor.colorDividerComposer, height: 1),
|
const Divider(color: AppColor.colorDividerComposer, height: 1),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
@@ -138,8 +134,8 @@ class SettingsView extends GetWidget<SettingsController> {
|
|||||||
child: Row(mainAxisSize: MainAxisSize.min, children: [
|
child: Row(mainAxisSize: MainAxisSize.min, children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
DirectionUtils.isDirectionRTLByLanguage(context)
|
DirectionUtils.isDirectionRTLByLanguage(context)
|
||||||
? _imagePaths.icCollapseFolder
|
? controller.imagePaths.icCollapseFolder
|
||||||
: _imagePaths.icBack,
|
: controller.imagePaths.icBack,
|
||||||
colorFilter: AppColor.colorTextButton.asFilter(),
|
colorFilter: AppColor.colorTextButton.asFilter(),
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
Container(
|
Container(
|
||||||
@@ -179,7 +175,7 @@ class SettingsView extends GetWidget<SettingsController> {
|
|||||||
|
|
||||||
Widget _buildCloseSettingButton(BuildContext context) {
|
Widget _buildCloseSettingButton(BuildContext context) {
|
||||||
return buildIconWeb(
|
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,
|
tooltip: AppLocalizations.of(context).close,
|
||||||
onTap: closeAction);
|
onTap: closeAction);
|
||||||
}
|
}
|
||||||
@@ -188,7 +184,7 @@ class SettingsView extends GetWidget<SettingsController> {
|
|||||||
return Obx(() {
|
return Obx(() {
|
||||||
switch (controller.manageAccountDashboardController.settingsPageLevel.value) {
|
switch (controller.manageAccountDashboardController.settingsPageLevel.value) {
|
||||||
case SettingsPageLevel.universal:
|
case SettingsPageLevel.universal:
|
||||||
return SettingsFirstLevelView();
|
return const SettingsFirstLevelView();
|
||||||
case SettingsPageLevel.level1:
|
case SettingsPageLevel.level1:
|
||||||
return _viewDisplayedOfAccountMenuItem();
|
return _viewDisplayedOfAccountMenuItem();
|
||||||
}
|
}
|
||||||
@@ -201,7 +197,7 @@ class SettingsView extends GetWidget<SettingsController> {
|
|||||||
case AccountMenuItem.profiles:
|
case AccountMenuItem.profiles:
|
||||||
return ProfilesView();
|
return ProfilesView();
|
||||||
case AccountMenuItem.languageAndRegion:
|
case AccountMenuItem.languageAndRegion:
|
||||||
return LanguageAndRegionView();
|
return const LanguageAndRegionView();
|
||||||
case AccountMenuItem.emailRules:
|
case AccountMenuItem.emailRules:
|
||||||
if (controller.manageAccountDashboardController.isRuleFilterCapabilitySupported) {
|
if (controller.manageAccountDashboardController.isRuleFilterCapabilitySupported) {
|
||||||
return EmailRulesView();
|
return EmailRulesView();
|
||||||
|
|||||||
+9
-17
@@ -1,10 +1,7 @@
|
|||||||
|
|
||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/state/failure.dart';
|
import 'package:core/presentation/state/failure.dart';
|
||||||
import 'package:core/presentation/state/success.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/presentation/views/dialog/confirmation_dialog_builder.dart';
|
||||||
import 'package:core/utils/platform_info.dart';
|
import 'package:core/utils/platform_info.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@@ -42,9 +39,6 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
|||||||
class IdentitiesController extends BaseController {
|
class IdentitiesController extends BaseController {
|
||||||
|
|
||||||
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
|
|
||||||
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
||||||
final CreateNewIdentityInteractor _createNewIdentityInteractor;
|
final CreateNewIdentityInteractor _createNewIdentityInteractor;
|
||||||
@@ -179,7 +173,7 @@ class IdentitiesController extends BaseController {
|
|||||||
|
|
||||||
void _createNewIdentitySuccess(CreateNewIdentitySuccess success) {
|
void _createNewIdentitySuccess(CreateNewIdentitySuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).you_have_created_a_new_identity);
|
AppLocalizations.of(currentContext!).you_have_created_a_new_identity);
|
||||||
}
|
}
|
||||||
@@ -189,7 +183,7 @@ class IdentitiesController extends BaseController {
|
|||||||
|
|
||||||
void _createNewDefaultIdentitySuccess(CreateNewDefaultIdentitySuccess success) {
|
void _createNewDefaultIdentitySuccess(CreateNewDefaultIdentitySuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).you_have_created_a_new_default_identity);
|
AppLocalizations.of(currentContext!).you_have_created_a_new_default_identity);
|
||||||
}
|
}
|
||||||
@@ -202,8 +196,8 @@ class IdentitiesController extends BaseController {
|
|||||||
context: context,
|
context: context,
|
||||||
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
||||||
builder: (BuildContext context) => DeleteIdentityDialogBuilder(
|
builder: (BuildContext context) => DeleteIdentityDialogBuilder(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: responsiveUtils,
|
||||||
imagePaths: _imagePaths,
|
imagePaths: imagePaths,
|
||||||
onDeleteIdentityAction: () => _deleteIdentityAction(identity),
|
onDeleteIdentityAction: () => _deleteIdentityAction(identity),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@@ -220,10 +214,10 @@ class IdentitiesController extends BaseController {
|
|||||||
|
|
||||||
void _deleteIdentitySuccess(DeleteIdentitySuccess success) {
|
void _deleteIdentitySuccess(DeleteIdentitySuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).identity_has_been_deleted,
|
AppLocalizations.of(currentContext!).identity_has_been_deleted,
|
||||||
leadingSVGIcon: _imagePaths.icDeleteToast);
|
leadingSVGIcon: imagePaths.icDeleteToast);
|
||||||
}
|
}
|
||||||
|
|
||||||
_refreshAllIdentities();
|
_refreshAllIdentities();
|
||||||
@@ -234,10 +228,10 @@ class IdentitiesController extends BaseController {
|
|||||||
showDialog(
|
showDialog(
|
||||||
context: currentContext!,
|
context: currentContext!,
|
||||||
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
||||||
builder: (BuildContext context) => (ConfirmDialogBuilder(_imagePaths)
|
builder: (BuildContext context) => (ConfirmDialogBuilder(imagePaths)
|
||||||
..key(const Key('dialog_message_delete_identity_failed'))
|
..key(const Key('dialog_message_delete_identity_failed'))
|
||||||
..title(AppLocalizations.of(context).delete_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)
|
..marginIcon(EdgeInsets.zero)
|
||||||
..styleTitle(const TextStyle(fontSize: 20,
|
..styleTitle(const TextStyle(fontSize: 20,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
@@ -291,7 +285,7 @@ class IdentitiesController extends BaseController {
|
|||||||
|
|
||||||
void _editIdentitySuccess(EditIdentitySuccess success) {
|
void _editIdentitySuccess(EditIdentitySuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).you_are_changed_your_identity_successfully);
|
AppLocalizations.of(currentContext!).you_are_changed_your_identity_successfully);
|
||||||
}
|
}
|
||||||
@@ -299,7 +293,5 @@ class IdentitiesController extends BaseController {
|
|||||||
_refreshAllIdentities();
|
_refreshAllIdentities();
|
||||||
}
|
}
|
||||||
|
|
||||||
ImagePaths get imagePaths => _imagePaths;
|
|
||||||
|
|
||||||
bool get isSignatureShow => identitySelected.value != null;
|
bool get isSignatureShow => identitySelected.value != null;
|
||||||
}
|
}
|
||||||
@@ -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:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.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<IdentitiesController> with PopupMenuWidgetMixin, AppLoaderMixin {
|
class IdentitiesView extends GetWidget<IdentitiesController> with PopupMenuWidgetMixin, AppLoaderMixin {
|
||||||
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
IdentitiesView({Key? key}) : super(key: key);
|
IdentitiesView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return Container(
|
||||||
margin: const EdgeInsets.all(24),
|
margin: const EdgeInsets.all(24),
|
||||||
child: _responsiveUtils.isWebDesktop(context)
|
child: controller.responsiveUtils.isWebDesktop(context)
|
||||||
? _buildIdentitiesViewWebDesktop(context)
|
? _buildIdentitiesViewWebDesktop(context)
|
||||||
: _buildIdentitiesViewMobile(context),
|
: _buildIdentitiesViewMobile(context),
|
||||||
);
|
);
|
||||||
@@ -35,8 +30,8 @@ class IdentitiesView extends GetWidget<IdentitiesController> with PopupMenuWidge
|
|||||||
const SizedBox(height: 12),
|
const SizedBox(height: 12),
|
||||||
IdentitiesRadioListBuilder(
|
IdentitiesRadioListBuilder(
|
||||||
controller: controller,
|
controller: controller,
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
imagePaths: _imagePaths
|
imagePaths: controller.imagePaths
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@@ -55,8 +50,8 @@ class IdentitiesView extends GetWidget<IdentitiesController> with PopupMenuWidge
|
|||||||
const SizedBox(width: 12),
|
const SizedBox(width: 12),
|
||||||
Expanded(child: IdentitiesRadioListBuilder(
|
Expanded(child: IdentitiesRadioListBuilder(
|
||||||
controller: controller,
|
controller: controller,
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
imagePaths: _imagePaths
|
imagePaths: controller.imagePaths
|
||||||
)),
|
)),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
|||||||
class VacationController extends BaseController {
|
class VacationController extends BaseController {
|
||||||
|
|
||||||
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
final _settingController = Get.find<SettingsController>();
|
final _settingController = Get.find<SettingsController>();
|
||||||
|
|
||||||
final GetAllVacationInteractor _getAllVacationInteractor;
|
final GetAllVacationInteractor _getAllVacationInteractor;
|
||||||
@@ -242,7 +241,7 @@ class VacationController extends BaseController {
|
|||||||
final fromDate = vacationPresentation.value.fromDate;
|
final fromDate = vacationPresentation.value.fromDate;
|
||||||
if (fromDate == null) {
|
if (fromDate == null) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).errorMessageWhenStartDateVacationIsEmpty);
|
AppLocalizations.of(currentContext!).errorMessageWhenStartDateVacationIsEmpty);
|
||||||
}
|
}
|
||||||
@@ -253,7 +252,7 @@ class VacationController extends BaseController {
|
|||||||
final toDate = vacationPresentation.value.toDate;
|
final toDate = vacationPresentation.value.toDate;
|
||||||
if (vacationStopEnabled && toDate != null && toDate.isBefore(fromDate)) {
|
if (vacationStopEnabled && toDate != null && toDate.isBefore(fromDate)) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).errorMessageWhenEndDateVacationIsInValid);
|
AppLocalizations.of(currentContext!).errorMessageWhenEndDateVacationIsInValid);
|
||||||
}
|
}
|
||||||
@@ -263,7 +262,7 @@ class VacationController extends BaseController {
|
|||||||
final messageHtmlText = (PlatformInfo.isWeb ? _vacationMessageHtmlText : await _getMessageHtmlText()) ?? '';
|
final messageHtmlText = (PlatformInfo.isWeb ? _vacationMessageHtmlText : await _getMessageHtmlText()) ?? '';
|
||||||
if (messageHtmlText.isEmpty && context.mounted) {
|
if (messageHtmlText.isEmpty && context.mounted) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).errorMessageWhenMessageVacationIsEmpty);
|
AppLocalizations.of(currentContext!).errorMessageWhenMessageVacationIsEmpty);
|
||||||
}
|
}
|
||||||
@@ -299,7 +298,7 @@ class VacationController extends BaseController {
|
|||||||
void _handleUpdateVacationSuccess(UpdateVacationSuccess success) {
|
void _handleUpdateVacationSuccess(UpdateVacationSuccess success) {
|
||||||
if (success.listVacationResponse.isNotEmpty) {
|
if (success.listVacationResponse.isNotEmpty) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).vacationSettingSaved);
|
AppLocalizations.of(currentContext!).vacationSettingSaved);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,9 +22,6 @@ import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
|||||||
|
|
||||||
class VacationView extends GetWidget<VacationController> with RichTextButtonMixin {
|
class VacationView extends GetWidget<VacationController> with RichTextButtonMixin {
|
||||||
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
VacationView({Key? key}) : super(key: key);
|
VacationView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -52,18 +49,18 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
|
|||||||
|
|
||||||
Widget _buildVacationFormView(BuildContext context) {
|
Widget _buildVacationFormView(BuildContext context) {
|
||||||
return SettingDetailViewBuilder(
|
return SettingDetailViewBuilder(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 4),
|
padding: const EdgeInsets.symmetric(horizontal: 4),
|
||||||
onTapGestureDetector: () => controller.clearFocusEditor(context),
|
onTapGestureDetector: () => controller.clearFocusEditor(context),
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
physics: const ClampingScrollPhysics(),
|
physics: const ClampingScrollPhysics(),
|
||||||
controller: controller.scrollController,
|
controller: controller.scrollController,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: VacationUtils.getPaddingView(context, _responsiveUtils),
|
padding: VacationUtils.getPaddingView(context, controller.responsiveUtils),
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
if (_responsiveUtils.isWebDesktop(context))
|
if (controller.responsiveUtils.isWebDesktop(context))
|
||||||
...[
|
...[
|
||||||
Text(
|
Text(
|
||||||
AppLocalizations.of(context).vacation,
|
AppLocalizations.of(context).vacation,
|
||||||
@@ -94,7 +91,9 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
|
|||||||
controller.updateVacationPresentation(newStatus: newStatus);
|
controller.updateVacationPresentation(newStatus: newStatus);
|
||||||
},
|
},
|
||||||
child: SvgPicture.asset(
|
child: SvgPicture.asset(
|
||||||
controller.isVacationDeactivated ? _imagePaths.icSwitchOff : _imagePaths.icSwitchOn,
|
controller.isVacationDeactivated
|
||||||
|
? controller.imagePaths.icSwitchOff
|
||||||
|
: controller.imagePaths.icSwitchOn,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24
|
height: 24
|
||||||
@@ -121,7 +120,7 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
|
|||||||
absorbing: controller.isVacationDeactivated,
|
absorbing: controller.isVacationDeactivated,
|
||||||
child: Opacity(
|
child: Opacity(
|
||||||
opacity: controller.isVacationDeactivated ? 0.3 : 1.0,
|
opacity: controller.isVacationDeactivated ? 0.3 : 1.0,
|
||||||
child: _responsiveUtils.isPortraitMobile(context)
|
child: controller.responsiveUtils.isPortraitMobile(context)
|
||||||
? Column(children: [
|
? Column(children: [
|
||||||
BorderButtonField<DateTime>(
|
BorderButtonField<DateTime>(
|
||||||
label: AppLocalizations.of(context).startDate,
|
label: AppLocalizations.of(context).startDate,
|
||||||
@@ -175,8 +174,8 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
|
|||||||
},
|
},
|
||||||
child: SvgPicture.asset(
|
child: SvgPicture.asset(
|
||||||
controller.vacationPresentation.value.vacationStopEnabled
|
controller.vacationPresentation.value.vacationStopEnabled
|
||||||
? _imagePaths.icSwitchOn
|
? controller.imagePaths.icSwitchOn
|
||||||
: _imagePaths.icSwitchOff,
|
: controller.imagePaths.icSwitchOff,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24
|
height: 24
|
||||||
@@ -201,7 +200,7 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
|
|||||||
absorbing: !controller.canChangeEndDate,
|
absorbing: !controller.canChangeEndDate,
|
||||||
child: Opacity(
|
child: Opacity(
|
||||||
opacity: !controller.canChangeEndDate ? 0.3 : 1.0,
|
opacity: !controller.canChangeEndDate ? 0.3 : 1.0,
|
||||||
child: _responsiveUtils.isPortraitMobile(context)
|
child: controller.responsiveUtils.isPortraitMobile(context)
|
||||||
? Column(children: [
|
? Column(children: [
|
||||||
BorderButtonField<DateTime>(
|
BorderButtonField<DateTime>(
|
||||||
label: AppLocalizations.of(context).endDate,
|
label: AppLocalizations.of(context).endDate,
|
||||||
@@ -245,7 +244,7 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
|
|||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
Obx(() => AbsorbPointer(
|
Obx(() => AbsorbPointer(
|
||||||
absorbing: controller.isVacationDeactivated,
|
absorbing: controller.isVacationDeactivated,
|
||||||
child: _responsiveUtils.isPortraitMobile(context)
|
child: controller.responsiveUtils.isPortraitMobile(context)
|
||||||
? Opacity(
|
? Opacity(
|
||||||
opacity: controller.isVacationDeactivated ? 0.3 : 1.0,
|
opacity: controller.isVacationDeactivated ? 0.3 : 1.0,
|
||||||
child: TextInputFieldBuilder(
|
child: TextInputFieldBuilder(
|
||||||
@@ -289,7 +288,7 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildListButtonAction(BuildContext context) {
|
Widget _buildListButtonAction(BuildContext context) {
|
||||||
if (_responsiveUtils.isWebDesktop(context)) {
|
if (controller.responsiveUtils.isWebDesktop(context)) {
|
||||||
return Align(
|
return Align(
|
||||||
alignment: Alignment.centerRight,
|
alignment: Alignment.centerRight,
|
||||||
child: buildTextButton(
|
child: buildTextButton(
|
||||||
@@ -305,7 +304,7 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
|
|||||||
onTap: () => controller.saveVacation(context)),
|
onTap: () => controller.saveVacation(context)),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
if (_responsiveUtils.isPortraitMobile(context)) {
|
if (controller.responsiveUtils.isPortraitMobile(context)) {
|
||||||
return Row(children: [
|
return Row(children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: buildTextButton(
|
child: buildTextButton(
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/state/success.dart';
|
import 'package:core/presentation/state/success.dart';
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.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 {
|
class QuotasController extends BaseController {
|
||||||
|
|
||||||
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
||||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
final GetQuotasInteractor _getQuotasInteractor;
|
final GetQuotasInteractor _getQuotasInteractor;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import 'package:core/presentation/state/success.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/keyboard_utils.dart';
|
||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:core/utils/platform_info.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 {
|
class RulesFilterCreatorController extends BaseMailboxController {
|
||||||
|
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
|
|
||||||
final GetAllMailboxInteractor _getAllMailboxInteractor;
|
final GetAllMailboxInteractor _getAllMailboxInteractor;
|
||||||
|
|
||||||
GetAllRulesInteractor? _getAllRulesInteractor;
|
GetAllRulesInteractor? _getAllRulesInteractor;
|
||||||
@@ -373,7 +370,7 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
}
|
}
|
||||||
final int duplicatedIndex = listEmailRuleFilterActionSelected.indexWhere((filterAction) => filterAction.action == newAction);
|
final int duplicatedIndex = listEmailRuleFilterActionSelected.indexWhere((filterAction) => filterAction.action == newAction);
|
||||||
if (duplicatedIndex != -1) {
|
if (duplicatedIndex != -1) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).duplicatedActionError,
|
AppLocalizations.of(currentContext!).duplicatedActionError,
|
||||||
);
|
);
|
||||||
@@ -440,7 +437,7 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
|
|
||||||
if (listRuleCondition.isEmpty == true || listEmailRuleFilterActionSelected.isEmpty == true) {
|
if (listRuleCondition.isEmpty == true || listEmailRuleFilterActionSelected.isEmpty == true) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).toastErrorMessageWhenCreateNewRule);
|
AppLocalizations.of(currentContext!).toastErrorMessageWhenCreateNewRule);
|
||||||
}
|
}
|
||||||
@@ -454,7 +451,7 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
log('RulesFilterCreatorController::createNewRuleFilter:errorAction: $errorAction');
|
log('RulesFilterCreatorController::createNewRuleFilter:errorAction: $errorAction');
|
||||||
if (errorAction?.isNotEmpty == true) {
|
if (errorAction?.isNotEmpty == true) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).notSelectedMailboxToMoveMessage);
|
AppLocalizations.of(currentContext!).notSelectedMailboxToMoveMessage);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,9 +23,6 @@ import 'model/rule_filter_condition_type.dart';
|
|||||||
|
|
||||||
class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
||||||
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
final controller = Get.find<RulesFilterCreatorController>();
|
final controller = Get.find<RulesFilterCreatorController>();
|
||||||
|
|
||||||
@@ -35,7 +32,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return PointerInterceptor(
|
return PointerInterceptor(
|
||||||
child: ResponsiveWidget(
|
child: ResponsiveWidget(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
mobile: Scaffold(
|
mobile: Scaffold(
|
||||||
backgroundColor: PlatformInfo.isWeb
|
backgroundColor: PlatformInfo.isWeb
|
||||||
? Colors.black.withAlpha(24)
|
? Colors.black.withAlpha(24)
|
||||||
@@ -75,7 +72,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
topRight: Radius.circular(16),
|
topRight: Radius.circular(16),
|
||||||
)),
|
)),
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
height: _responsiveUtils.getSizeScreenHeight(context) * 0.7,
|
height: controller.responsiveUtils.getSizeScreenHeight(context) * 0.7,
|
||||||
child: ClipRRect(
|
child: ClipRRect(
|
||||||
borderRadius: const BorderRadius.only(
|
borderRadius: const BorderRadius.only(
|
||||||
topLeft: Radius.circular(16),
|
topLeft: Radius.circular(16),
|
||||||
@@ -97,8 +94,8 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
decoration: const BoxDecoration(
|
decoration: const BoxDecoration(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
borderRadius: BorderRadius.all(Radius.circular(16))),
|
borderRadius: BorderRadius.all(Radius.circular(16))),
|
||||||
width: _responsiveUtils.getSizeScreenWidth(context) * 0.6,
|
width: controller.responsiveUtils.getSizeScreenWidth(context) * 0.6,
|
||||||
height: _responsiveUtils.getSizeScreenHeight(context) * 0.7,
|
height: controller.responsiveUtils.getSizeScreenHeight(context) * 0.7,
|
||||||
child: ClipRRect(
|
child: ClipRRect(
|
||||||
borderRadius: const BorderRadius.all(Radius.circular(16)),
|
borderRadius: const BorderRadius.all(Radius.circular(16)),
|
||||||
child: _buildRulesFilterFormOnDesktop(context)
|
child: _buildRulesFilterFormOnDesktop(context)
|
||||||
@@ -153,7 +150,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
_imagePaths.icAddNewFolder,
|
controller.imagePaths.icAddNewFolder,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
),
|
),
|
||||||
const SizedBox(width: 15,),
|
const SizedBox(width: 15,),
|
||||||
@@ -182,7 +179,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
return RuleFilterActionListWidget(
|
return RuleFilterActionListWidget(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
actionList: controller.listEmailRuleFilterActionSelected,
|
actionList: controller.listEmailRuleFilterActionSelected,
|
||||||
onActionChanged: (newAction, index) {
|
onActionChanged: (newAction, index) {
|
||||||
controller.selectEmailRuleFilterAction(newAction, index);
|
controller.selectEmailRuleFilterAction(newAction, index);
|
||||||
@@ -195,7 +192,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
controller.selectMailbox(context, index);
|
controller.selectMailbox(context, index);
|
||||||
},
|
},
|
||||||
tapRemoveCallback: (index) => controller.tapRemoveAction(index),
|
tapRemoveCallback: (index) => controller.tapRemoveAction(index),
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
errorForwardEmail: controller.errorForwardEmailValue.value,
|
errorForwardEmail: controller.errorForwardEmailValue.value,
|
||||||
errorMailboxSelected: controller.errorMailboxSelectedValue.value,
|
errorMailboxSelected: controller.errorMailboxSelectedValue.value,
|
||||||
);
|
);
|
||||||
@@ -210,7 +207,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
_imagePaths.icAddNewFolder,
|
controller.imagePaths.icAddNewFolder,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
),
|
),
|
||||||
const SizedBox(width: 15,),
|
const SizedBox(width: 15,),
|
||||||
@@ -264,7 +261,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
Positioned(top: 8, right: 8,
|
Positioned(top: 8, right: 8,
|
||||||
child: buildIconWeb(
|
child: buildIconWeb(
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
_imagePaths.icCircleClose,
|
controller.imagePaths.icCircleClose,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
tooltip: AppLocalizations.of(context).close,
|
tooltip: AppLocalizations.of(context).close,
|
||||||
onTap: () => controller.closeView(context)))
|
onTap: () => controller.closeView(context)))
|
||||||
@@ -314,7 +311,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
_imagePaths.icAddNewFolder,
|
controller.imagePaths.icAddNewFolder,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
),
|
),
|
||||||
const SizedBox(width: 15,),
|
const SizedBox(width: 15,),
|
||||||
@@ -343,7 +340,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
return RuleFilterActionListWidget(
|
return RuleFilterActionListWidget(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
actionList: controller.listEmailRuleFilterActionSelected,
|
actionList: controller.listEmailRuleFilterActionSelected,
|
||||||
onActionChanged: (newAction, index) {
|
onActionChanged: (newAction, index) {
|
||||||
controller.selectEmailRuleFilterAction(newAction, index);
|
controller.selectEmailRuleFilterAction(newAction, index);
|
||||||
@@ -356,7 +353,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
controller.selectMailbox(context, index);
|
controller.selectMailbox(context, index);
|
||||||
},
|
},
|
||||||
tapRemoveCallback: (index) => controller.tapRemoveAction(index),
|
tapRemoveCallback: (index) => controller.tapRemoveAction(index),
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
errorForwardEmail: controller.errorForwardEmailValue.value,
|
errorForwardEmail: controller.errorForwardEmailValue.value,
|
||||||
errorMailboxSelected: controller.errorMailboxSelectedValue.value,
|
errorMailboxSelected: controller.errorMailboxSelectedValue.value,
|
||||||
);
|
);
|
||||||
@@ -371,7 +368,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
_imagePaths.icAddNewFolder,
|
controller.imagePaths.icAddNewFolder,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
),
|
),
|
||||||
const SizedBox(width: 15,),
|
const SizedBox(width: 15,),
|
||||||
@@ -424,7 +421,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
Positioned(top: 8, right: 8,
|
Positioned(top: 8, right: 8,
|
||||||
child: buildIconWeb(
|
child: buildIconWeb(
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
_imagePaths.icCircleClose,
|
controller.imagePaths.icCircleClose,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
tooltip: AppLocalizations.of(context).close,
|
tooltip: AppLocalizations.of(context).close,
|
||||||
onTap: () => controller.closeView(context)))
|
onTap: () => controller.closeView(context)))
|
||||||
@@ -489,7 +486,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
_imagePaths.icAddNewFolder,
|
controller.imagePaths.icAddNewFolder,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
),
|
),
|
||||||
const SizedBox(width: 15,),
|
const SizedBox(width: 15,),
|
||||||
@@ -523,7 +520,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
return RuleFilterActionListWidget(
|
return RuleFilterActionListWidget(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
actionList: controller.listEmailRuleFilterActionSelected,
|
actionList: controller.listEmailRuleFilterActionSelected,
|
||||||
onActionChangeMobile: (currentAction, index) {
|
onActionChangeMobile: (currentAction, index) {
|
||||||
KeyboardUtils.hideKeyboard(context);
|
KeyboardUtils.hideKeyboard(context);
|
||||||
@@ -544,7 +541,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
controller.selectMailbox(context, index);
|
controller.selectMailbox(context, index);
|
||||||
},
|
},
|
||||||
tapRemoveCallback: (index) => controller.tapRemoveAction(index),
|
tapRemoveCallback: (index) => controller.tapRemoveAction(index),
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
errorForwardEmail: controller.errorForwardEmailValue.value,
|
errorForwardEmail: controller.errorForwardEmailValue.value,
|
||||||
errorMailboxSelected: controller.errorMailboxSelectedValue.value,
|
errorMailboxSelected: controller.errorMailboxSelectedValue.value,
|
||||||
);
|
);
|
||||||
@@ -560,7 +557,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
_imagePaths.icAddNewFolder,
|
controller.imagePaths.icAddNewFolder,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
),
|
),
|
||||||
const SizedBox(width: 15,),
|
const SizedBox(width: 15,),
|
||||||
@@ -613,7 +610,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
Positioned(top: 8, right: 8,
|
Positioned(top: 8, right: 8,
|
||||||
child: buildIconWeb(
|
child: buildIconWeb(
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
_imagePaths.icCircleClose,
|
controller.imagePaths.icCircleClose,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
tooltip: AppLocalizations.of(context).close,
|
tooltip: AppLocalizations.of(context).close,
|
||||||
onTap: () => controller.closeView(context)))
|
onTap: () => controller.closeView(context)))
|
||||||
@@ -634,7 +631,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
key: ValueKey(controller.listRuleConditionValueArguments[index].focusNode),
|
key: ValueKey(controller.listRuleConditionValueArguments[index].focusNode),
|
||||||
ruleFilterConditionScreenType: ruleFilterConditionScreenType,
|
ruleFilterConditionScreenType: ruleFilterConditionScreenType,
|
||||||
ruleCondition: controller.listRuleCondition[index],
|
ruleCondition: controller.listRuleCondition[index],
|
||||||
imagePaths: _imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
conditionValueErrorText: controller.listRuleConditionValueArguments[index].errorText,
|
conditionValueErrorText: controller.listRuleConditionValueArguments[index].errorText,
|
||||||
conditionValueFocusNode: controller.listRuleConditionValueArguments[index].focusNode,
|
conditionValueFocusNode: controller.listRuleConditionValueArguments[index].focusNode,
|
||||||
conditionValueEditingController: controller.listRuleConditionValueArguments[index].controller,
|
conditionValueEditingController: controller.listRuleConditionValueArguments[index].controller,
|
||||||
@@ -702,7 +699,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
iconLeftPadding: const EdgeInsets.only(left: 12, right: 16),
|
iconLeftPadding: const EdgeInsets.only(left: 12, right: 16),
|
||||||
iconRightPadding: const EdgeInsets.only(right: 12),
|
iconRightPadding: const EdgeInsets.only(right: 12),
|
||||||
actionSelected: SvgPicture.asset(
|
actionSelected: SvgPicture.asset(
|
||||||
_imagePaths.icFilterSelected,
|
controller.imagePaths.icFilterSelected,
|
||||||
width: 20,
|
width: 20,
|
||||||
height: 20,
|
height: 20,
|
||||||
fit: BoxFit.fill))
|
fit: BoxFit.fill))
|
||||||
@@ -737,7 +734,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
iconLeftPadding: const EdgeInsets.only(left: 12, right: 16),
|
iconLeftPadding: const EdgeInsets.only(left: 12, right: 16),
|
||||||
iconRightPadding: const EdgeInsets.only(right: 12),
|
iconRightPadding: const EdgeInsets.only(right: 12),
|
||||||
actionSelected: SvgPicture.asset(
|
actionSelected: SvgPicture.asset(
|
||||||
_imagePaths.icFilterSelected,
|
controller.imagePaths.icFilterSelected,
|
||||||
width: 20,
|
width: 20,
|
||||||
height: 20,
|
height: 20,
|
||||||
fit: BoxFit.fill))
|
fit: BoxFit.fill))
|
||||||
@@ -770,7 +767,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
iconLeftPadding: const EdgeInsets.only(left: 12, right: 16),
|
iconLeftPadding: const EdgeInsets.only(left: 12, right: 16),
|
||||||
iconRightPadding: const EdgeInsets.only(right: 12),
|
iconRightPadding: const EdgeInsets.only(right: 12),
|
||||||
actionSelected: SvgPicture.asset(
|
actionSelected: SvgPicture.asset(
|
||||||
_imagePaths.icFilterSelected,
|
controller.imagePaths.icFilterSelected,
|
||||||
width: 20,
|
width: 20,
|
||||||
height: 20,
|
height: 20,
|
||||||
fit: BoxFit.fill))
|
fit: BoxFit.fill))
|
||||||
@@ -808,7 +805,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
iconLeftPadding: const EdgeInsets.only(left: 12, right: 16),
|
iconLeftPadding: const EdgeInsets.only(left: 12, right: 16),
|
||||||
iconRightPadding: const EdgeInsets.only(right: 12),
|
iconRightPadding: const EdgeInsets.only(right: 12),
|
||||||
actionSelected: SvgPicture.asset(
|
actionSelected: SvgPicture.asset(
|
||||||
_imagePaths.icFilterSelected,
|
controller.imagePaths.icFilterSelected,
|
||||||
width: 20,
|
width: 20,
|
||||||
height: 20,
|
height: 20,
|
||||||
fit: BoxFit.fill))
|
fit: BoxFit.fill))
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
|
|
||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
|
||||||
import 'package:core/presentation/utils/style_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/button/icon_button_web.dart';
|
||||||
import 'package:core/presentation/views/text/text_field_builder.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<SearchEmailController>
|
class SearchEmailView extends GetWidget<SearchEmailController>
|
||||||
with AppLoaderMixin {
|
with AppLoaderMixin {
|
||||||
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
|
|
||||||
SearchEmailView({Key? key}) : super(key: key);
|
SearchEmailView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
if (_responsiveUtils.isWebDesktop(context)) {
|
if (controller.responsiveUtils.isWebDesktop(context)) {
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
controller.closeSearchView(context);
|
controller.closeSearchView(context);
|
||||||
});
|
});
|
||||||
@@ -57,7 +52,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
Container(
|
Container(
|
||||||
height: 52,
|
height: 52,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
padding: SearchEmailUtils.getPaddingAppBar(context, _responsiveUtils),
|
padding: SearchEmailUtils.getPaddingAppBar(context, controller.responsiveUtils),
|
||||||
child: Obx(() {
|
child: Obx(() {
|
||||||
if (controller.selectionMode.value == SelectMode.ACTIVE) {
|
if (controller.selectionMode.value == SelectMode.ACTIVE) {
|
||||||
return AppBarSelectionMode(
|
return AppBarSelectionMode(
|
||||||
@@ -110,7 +105,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
children: [
|
children: [
|
||||||
buildIconWeb(
|
buildIconWeb(
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
DirectionUtils.isDirectionRTLByLanguage(context) ? _imagePaths.icCollapseFolder : _imagePaths.icBack,
|
DirectionUtils.isDirectionRTLByLanguage(context) ? controller.imagePaths.icCollapseFolder : controller.imagePaths.icBack,
|
||||||
colorFilter: AppColor.colorTextButton.asFilter(),
|
colorFilter: AppColor.colorTextButton.asFilter(),
|
||||||
fit: BoxFit.fill
|
fit: BoxFit.fill
|
||||||
),
|
),
|
||||||
@@ -138,7 +133,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
return
|
return
|
||||||
buildIconWeb(
|
buildIconWeb(
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
_imagePaths.icClearTextSearch,
|
controller.imagePaths.icClearTextSearch,
|
||||||
width: 18,
|
width: 18,
|
||||||
height: 18,
|
height: 18,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
@@ -154,8 +149,8 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
|
|
||||||
Widget _buildListSearchFilterAction(BuildContext context) {
|
Widget _buildListSearchFilterAction(BuildContext context) {
|
||||||
return Container(
|
return Container(
|
||||||
margin: SearchEmailUtils.getMarginSearchFilterButton(context, _responsiveUtils),
|
margin: SearchEmailUtils.getMarginSearchFilterButton(context, controller.responsiveUtils),
|
||||||
padding: SearchEmailUtils.getPaddingSearchFilterButton(context, _responsiveUtils),
|
padding: SearchEmailUtils.getPaddingSearchFilterButton(context, controller.responsiveUtils),
|
||||||
height: 60,
|
height: 60,
|
||||||
child: ListView(
|
child: ListView(
|
||||||
scrollDirection: Axis.horizontal,
|
scrollDirection: Axis.horizontal,
|
||||||
@@ -181,7 +176,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
onTap: () {
|
onTap: () {
|
||||||
if (filter != QuickSearchFilter.last7Days) {
|
if (filter != QuickSearchFilter.last7Days) {
|
||||||
controller.selectQuickSearchFilter(context, filter);
|
controller.selectQuickSearchFilter(context, filter);
|
||||||
} else if (_responsiveUtils.isMobile(context)) {
|
} else if (controller.responsiveUtils.isMobile(context)) {
|
||||||
controller.openContextMenuAction(
|
controller.openContextMenuAction(
|
||||||
context,
|
context,
|
||||||
_emailReceiveTimeCupertinoActionTile(
|
_emailReceiveTimeCupertinoActionTile(
|
||||||
@@ -192,7 +187,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
},
|
},
|
||||||
onTapDown: (detail) {
|
onTapDown: (detail) {
|
||||||
if (filter == QuickSearchFilter.last7Days &&
|
if (filter == QuickSearchFilter.last7Days &&
|
||||||
!_responsiveUtils.isMobile(context)) {
|
!controller.responsiveUtils.isMobile(context)) {
|
||||||
final screenSize = MediaQuery.of(context).size;
|
final screenSize = MediaQuery.of(context).size;
|
||||||
final offset = detail.globalPosition;
|
final offset = detail.globalPosition;
|
||||||
final position = RelativeRect.fromLTRB(
|
final position = RelativeRect.fromLTRB(
|
||||||
@@ -218,7 +213,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||||
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
|
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
filter.getIcon(_imagePaths, isFilterSelected: filterSelected),
|
filter.getIcon(controller.imagePaths, isFilterSelected: filterSelected),
|
||||||
width: 16,
|
width: 16,
|
||||||
height: 16,
|
height: 16,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
@@ -239,7 +234,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
... [
|
... [
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
_imagePaths.icChevronDownOutline,
|
controller.imagePaths.icChevronDownOutline,
|
||||||
colorFilter: filterSelected
|
colorFilter: filterSelected
|
||||||
? AppColor.primaryColor.asFilter()
|
? AppColor.primaryColor.asFilter()
|
||||||
: AppColor.colorDefaultRichTextButton.asFilter(),
|
: AppColor.colorDefaultRichTextButton.asFilter(),
|
||||||
@@ -278,14 +273,14 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
timeType.getTitle(context),
|
timeType.getTitle(context),
|
||||||
timeType,
|
timeType,
|
||||||
timeTypeCurrent: receiveTimeSelected,
|
timeTypeCurrent: receiveTimeSelected,
|
||||||
iconLeftPadding: _responsiveUtils.isMobile(context)
|
iconLeftPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? const EdgeInsets.only(left: 12, right: 16)
|
? const EdgeInsets.only(left: 12, right: 16)
|
||||||
: const EdgeInsets.only(right: 12),
|
: const EdgeInsets.only(right: 12),
|
||||||
iconRightPadding: _responsiveUtils.isMobile(context)
|
iconRightPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? const EdgeInsets.only(right: 12)
|
? const EdgeInsets.only(right: 12)
|
||||||
: EdgeInsets.zero,
|
: EdgeInsets.zero,
|
||||||
actionSelected: SvgPicture.asset(
|
actionSelected: SvgPicture.asset(
|
||||||
_imagePaths.icFilterSelected,
|
controller.imagePaths.icFilterSelected,
|
||||||
width: 20,
|
width: 20,
|
||||||
height: 20,
|
height: 20,
|
||||||
fit: BoxFit.fill))
|
fit: BoxFit.fill))
|
||||||
@@ -306,7 +301,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: SearchEmailUtils.getPaddingShowAllResultButton(context, _responsiveUtils),
|
padding: SearchEmailUtils.getPaddingShowAllResultButton(context, controller.responsiveUtils),
|
||||||
child: Row(children: [
|
child: Row(children: [
|
||||||
Text(AppLocalizations.of(context).showingResultsFor,
|
Text(AppLocalizations.of(context).showingResultsFor,
|
||||||
style: const TextStyle(fontSize: 13.0,
|
style: const TextStyle(fontSize: 13.0,
|
||||||
@@ -331,7 +326,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
) {
|
) {
|
||||||
return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||||
Padding(
|
Padding(
|
||||||
padding: SearchEmailUtils.getPaddingSearchRecentTitle(context, _responsiveUtils),
|
padding: SearchEmailUtils.getPaddingSearchRecentTitle(context, controller.responsiveUtils),
|
||||||
child: Text(AppLocalizations.of(context).recent,
|
child: Text(AppLocalizations.of(context).recent,
|
||||||
style: const TextStyle(fontSize: 13.0,
|
style: const TextStyle(fontSize: 13.0,
|
||||||
color: AppColor.colorTextButtonHeaderThread,
|
color: AppColor.colorTextButtonHeaderThread,
|
||||||
@@ -349,7 +344,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
child: InkWell(
|
child: InkWell(
|
||||||
child: RecentSearchItemTileWidget(
|
child: RecentSearchItemTileWidget(
|
||||||
recentSearch,
|
recentSearch,
|
||||||
contentPadding: SearchEmailUtils.getPaddingListRecentSearch(context, _responsiveUtils)),
|
contentPadding: SearchEmailUtils.getPaddingListRecentSearch(context, controller.responsiveUtils)),
|
||||||
onTap: () => controller.searchEmailByRecentAction(context, recentSearch),
|
onTap: () => controller.searchEmailByRecentAction(context, recentSearch),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -372,7 +367,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
child: EmailQuickSearchItemTileWidget(
|
child: EmailQuickSearchItemTileWidget(
|
||||||
listSuggestionSearch[index],
|
listSuggestionSearch[index],
|
||||||
controller.currentMailbox,
|
controller.currentMailbox,
|
||||||
contentPadding: SearchEmailUtils.getPaddingSearchSuggestionList(context, _responsiveUtils)),
|
contentPadding: SearchEmailUtils.getPaddingSearchSuggestionList(context, controller.responsiveUtils)),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
final emailPreview = listSuggestionSearch[index];
|
final emailPreview = listSuggestionSearch[index];
|
||||||
final mailboxContain = emailPreview
|
final mailboxContain = emailPreview
|
||||||
@@ -395,7 +390,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
? EmptyEmailsWidget(
|
? EmptyEmailsWidget(
|
||||||
key: const Key('empty_search_email_view'),
|
key: const Key('empty_search_email_view'),
|
||||||
title: AppLocalizations.of(context).no_emails_matching_your_search,
|
title: AppLocalizations.of(context).no_emails_matching_your_search,
|
||||||
iconSVG: _imagePaths.icEmptyEmail
|
iconSVG: controller.imagePaths.icEmptyEmail
|
||||||
)
|
)
|
||||||
: const SizedBox.shrink())
|
: const SizedBox.shrink())
|
||||||
);
|
);
|
||||||
@@ -426,12 +421,12 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
controller.searchQuery,
|
controller.searchQuery,
|
||||||
controller.mailboxDashBoardController.selectedEmail.value?.id == currentPresentationEmail.id,
|
controller.mailboxDashBoardController.selectedEmail.value?.id == currentPresentationEmail.id,
|
||||||
isSearchEmailRunning: true,
|
isSearchEmailRunning: true,
|
||||||
padding: SearchEmailUtils.getPaddingSearchResultList(context, _responsiveUtils),
|
padding: SearchEmailUtils.getPaddingSearchResultList(context, controller.responsiveUtils),
|
||||||
paddingDivider: SearchEmailUtils.getPaddingDividerSearchResultList(context, _responsiveUtils),
|
paddingDivider: SearchEmailUtils.getPaddingDividerSearchResultList(context, controller.responsiveUtils),
|
||||||
mailboxContain: currentPresentationEmail.mailboxContain)
|
mailboxContain: currentPresentationEmail.mailboxContain)
|
||||||
..addOnPressEmailActionClick((action, email) =>
|
..addOnPressEmailActionClick((action, email) =>
|
||||||
controller.pressEmailAction(context, action, email, mailboxContain: currentPresentationEmail.mailboxContain))
|
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.openContextMenuAction(context, _contextMenuActionTile(context, email))
|
||||||
: controller.openPopupMenuAction(context, position, _popupMenuActionTile(context, email)))
|
: controller.openPopupMenuAction(context, position, _popupMenuActionTile(context, email)))
|
||||||
).build());
|
).build());
|
||||||
@@ -441,7 +436,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
|
|
||||||
double? _getItemExtent(BuildContext context) {
|
double? _getItemExtent(BuildContext context) {
|
||||||
if (PlatformInfo.isWeb) {
|
if (PlatformInfo.isWeb) {
|
||||||
return _responsiveUtils.isDesktop(context) ? 52 : 95;
|
return controller.responsiveUtils.isDesktop(context) ? 52 : 95;
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -469,7 +464,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
return (EmailActionCupertinoActionSheetActionBuilder(
|
return (EmailActionCupertinoActionSheetActionBuilder(
|
||||||
const Key('mark_as_spam_or_un_spam_action'),
|
const Key('mark_as_spam_or_un_spam_action'),
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
mailboxContain?.isSpam == true ? _imagePaths.icNotSpam : _imagePaths.icSpam,
|
mailboxContain?.isSpam == true ? controller.imagePaths.icNotSpam : controller.imagePaths.icSpam,
|
||||||
width: 28,
|
width: 28,
|
||||||
height: 28,
|
height: 28,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
@@ -478,10 +473,10 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
? AppLocalizations.of(context).remove_from_spam
|
? AppLocalizations.of(context).remove_from_spam
|
||||||
: AppLocalizations.of(context).mark_as_spam,
|
: AppLocalizations.of(context).mark_as_spam,
|
||||||
email,
|
email,
|
||||||
iconLeftPadding: _responsiveUtils.isMobile(context)
|
iconLeftPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? const EdgeInsets.only(left: 12, right: 16)
|
? const EdgeInsets.only(left: 12, right: 16)
|
||||||
: const EdgeInsets.only(right: 12),
|
: const EdgeInsets.only(right: 12),
|
||||||
iconRightPadding: _responsiveUtils.isMobile(context)
|
iconRightPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? const EdgeInsets.only(right: 12)
|
? const EdgeInsets.only(right: 12)
|
||||||
: EdgeInsets.zero)
|
: EdgeInsets.zero)
|
||||||
..onActionClick((email) => controller.pressEmailAction(context,
|
..onActionClick((email) => controller.pressEmailAction(context,
|
||||||
@@ -531,7 +526,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||||
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
|
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
filterSelected ? _imagePaths.icSelectedSB : _imagePaths.icFolderMailbox,
|
filterSelected ? controller.imagePaths.icSelectedSB : controller.imagePaths.icFolderMailbox,
|
||||||
width: 16,
|
width: 16,
|
||||||
height: 16,
|
height: 16,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
@@ -555,7 +550,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
),
|
),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
_imagePaths.icChevronDownOutline,
|
controller.imagePaths.icChevronDownOutline,
|
||||||
colorFilter: filterSelected
|
colorFilter: filterSelected
|
||||||
? AppColor.primaryColor.asFilter()
|
? AppColor.primaryColor.asFilter()
|
||||||
: AppColor.colorDefaultRichTextButton.asFilter(),
|
: AppColor.colorDefaultRichTextButton.asFilter(),
|
||||||
@@ -585,7 +580,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||||
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
|
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
filterSelected ? _imagePaths.icSelectedSB : _imagePaths.icUserSB,
|
filterSelected ? controller.imagePaths.icSelectedSB : controller.imagePaths.icUserSB,
|
||||||
width: 16,
|
width: 16,
|
||||||
height: 16,
|
height: 16,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
@@ -609,7 +604,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
),
|
),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
_imagePaths.icChevronDownOutline,
|
controller.imagePaths.icChevronDownOutline,
|
||||||
colorFilter: filterSelected
|
colorFilter: filterSelected
|
||||||
? AppColor.primaryColor.asFilter()
|
? AppColor.primaryColor.asFilter()
|
||||||
: AppColor.colorDefaultRichTextButton.asFilter(),
|
: AppColor.colorDefaultRichTextButton.asFilter(),
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
|
|
||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/state/failure.dart';
|
import 'package:core/presentation/state/failure.dart';
|
||||||
import 'package:core/presentation/state/success.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/keyboard_utils.dart';
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
|
||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:core/utils/platform_info.dart';
|
import 'package:core/utils/platform_info.dart';
|
||||||
import 'package:debounce_throttle/debounce_throttle.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/app_routes.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/dialog_router.dart';
|
import 'package:tmail_ui_user/main/routes/dialog_router.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
|
||||||
|
|
||||||
class SearchMailboxController extends BaseMailboxController with MailboxActionHandlerMixin {
|
class SearchMailboxController extends BaseMailboxController with MailboxActionHandlerMixin {
|
||||||
|
|
||||||
@@ -82,10 +78,6 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
final CreateNewMailboxInteractor _createNewMailboxInteractor;
|
final CreateNewMailboxInteractor _createNewMailboxInteractor;
|
||||||
|
|
||||||
final dashboardController = Get.find<MailboxDashBoardController>();
|
final dashboardController = Get.find<MailboxDashBoardController>();
|
||||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
final _uuid = Get.find<Uuid>();
|
|
||||||
|
|
||||||
final currentSearchQuery = RxString('');
|
final currentSearchQuery = RxString('');
|
||||||
final listMailboxSearched = RxList<PresentationMailbox>();
|
final listMailboxSearched = RxList<PresentationMailbox>();
|
||||||
@@ -387,7 +379,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
|
|
||||||
void _moveMailboxSuccess(MoveMailboxSuccess success) {
|
void _moveMailboxSuccess(MoveMailboxSuccess success) {
|
||||||
if (success.moveAction == MoveAction.moving && currentOverlayContext != null && currentContext != null) {
|
if (success.moveAction == MoveAction.moving && currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).movedToFolder(success.destinationMailboxDisplayName ?? AppLocalizations.of(currentContext!).allFolders),
|
AppLocalizations.of(currentContext!).movedToFolder(success.destinationMailboxDisplayName ?? AppLocalizations.of(currentContext!).allFolders),
|
||||||
actionName: AppLocalizations.of(currentContext!).undo,
|
actionName: AppLocalizations.of(currentContext!).undo,
|
||||||
@@ -449,7 +441,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
|
|
||||||
void _deleteMultipleMailboxSuccess(List<MailboxId> listMailboxIdDeleted, jmap.State? currentMailboxState) {
|
void _deleteMultipleMailboxSuccess(List<MailboxId> listMailboxIdDeleted, jmap.State? currentMailboxState) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).deleteFoldersSuccessfully);
|
AppLocalizations.of(currentContext!).deleteFoldersSuccessfully);
|
||||||
}
|
}
|
||||||
@@ -464,7 +456,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
|
|
||||||
void _deleteMailboxFailure(DeleteMultipleMailboxFailure failure) {
|
void _deleteMailboxFailure(DeleteMultipleMailboxFailure failure) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).deleteFoldersFailure);
|
AppLocalizations.of(currentContext!).deleteFoldersFailure);
|
||||||
}
|
}
|
||||||
@@ -563,7 +555,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
{List<MailboxId>? listDescendantMailboxIds}
|
{List<MailboxId>? listDescendantMailboxIds}
|
||||||
) {
|
) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
subscribeAction.getToastMessageSuccess(currentContext!),
|
subscribeAction.getToastMessageSuccess(currentContext!),
|
||||||
actionName: AppLocalizations.of(currentContext!).undo,
|
actionName: AppLocalizations.of(currentContext!).undo,
|
||||||
@@ -683,7 +675,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
: await push(AppRoutes.mailboxCreator, arguments: arguments);
|
: await push(AppRoutes.mailboxCreator, arguments: arguments);
|
||||||
|
|
||||||
if (result != null && result is NewMailboxArguments) {
|
if (result != null && result is NewMailboxArguments) {
|
||||||
final generateCreateId = Id(_uuid.v1());
|
final generateCreateId = Id(uuid.v1());
|
||||||
_createNewMailboxAction(session, accountId, CreateNewMailboxRequest(
|
_createNewMailboxAction(session, accountId, CreateNewMailboxRequest(
|
||||||
generateCreateId,
|
generateCreateId,
|
||||||
result.newName,
|
result.newName,
|
||||||
@@ -698,7 +690,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
|
|
||||||
void _createNewMailboxSuccess(CreateNewMailboxSuccess success) {
|
void _createNewMailboxSuccess(CreateNewMailboxSuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).createFolderSuccessfullyMessage(success.newMailbox.name?.name ?? ''),
|
AppLocalizations.of(currentContext!).createFolderSuccessfullyMessage(success.newMailbox.name?.name ?? ''),
|
||||||
leadingSVGIconColor: Colors.white,
|
leadingSVGIconColor: Colors.white,
|
||||||
@@ -715,7 +707,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
if (exception is ErrorMethodResponse) {
|
if (exception is ErrorMethodResponse) {
|
||||||
messageError = exception.description ?? AppLocalizations.of(currentContext!).createNewFolderFailure;
|
messageError = exception.description ?? AppLocalizations.of(currentContext!).createNewFolderFailure;
|
||||||
}
|
}
|
||||||
_appToast.showToastErrorMessage(currentOverlayContext!, messageError);
|
appToast.showToastErrorMessage(currentOverlayContext!, messageError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
|
|
||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/state/success.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:core/utils/platform_info.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
@@ -53,8 +51,6 @@ class SendingQueueController extends BaseController with MessageDialogActionMixi
|
|||||||
final dashboardController = Get.find<MailboxDashBoardController>();
|
final dashboardController = Get.find<MailboxDashBoardController>();
|
||||||
final _networkConnectionController = Get.find<NetworkConnectionController>();
|
final _networkConnectionController = Get.find<NetworkConnectionController>();
|
||||||
final _sendingQueueIsolateManager = getBinding<SendingQueueIsolateManager>();
|
final _sendingQueueIsolateManager = getBinding<SendingQueueIsolateManager>();
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
|
|
||||||
final listSendingEmailController = ScrollController();
|
final listSendingEmailController = ScrollController();
|
||||||
|
|
||||||
@@ -210,7 +206,7 @@ class SendingQueueController extends BaseController with MessageDialogActionMixi
|
|||||||
AppLocalizations.of(context).messageDialogDeleteSendingEmail,
|
AppLocalizations.of(context).messageDialogDeleteSendingEmail,
|
||||||
AppLocalizations.of(currentContext!).delete,
|
AppLocalizations.of(currentContext!).delete,
|
||||||
title: AppLocalizations.of(currentContext!).deleteOfflineEmail,
|
title: AppLocalizations.of(currentContext!).deleteOfflineEmail,
|
||||||
icon: SvgPicture.asset(_imagePaths.icDeleteDialogRecipients),
|
icon: SvgPicture.asset(imagePaths.icDeleteDialogRecipients),
|
||||||
alignCenter: true,
|
alignCenter: true,
|
||||||
messageStyle: const TextStyle(
|
messageStyle: const TextStyle(
|
||||||
color: AppColor.colorTitleSendingItem,
|
color: AppColor.colorTitleSendingItem,
|
||||||
@@ -259,7 +255,7 @@ class SendingQueueController extends BaseController with MessageDialogActionMixi
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (currentContext != null && currentOverlayContext != null) {
|
if (currentContext != null && currentOverlayContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).messageHaveBeenDeletedSuccessfully);
|
AppLocalizations.of(currentContext!).messageHaveBeenDeletedSuccessfully);
|
||||||
}
|
}
|
||||||
@@ -329,7 +325,7 @@ class SendingQueueController extends BaseController with MessageDialogActionMixi
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (currentContext != null && currentOverlayContext != null) {
|
if (currentContext != null && currentOverlayContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).messagesHaveBeenResent);
|
AppLocalizations.of(currentContext!).messagesHaveBeenResent);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
import 'package:core/presentation/resources/image_paths.dart';
|
|
||||||
import 'package:core/presentation/state/failure.dart';
|
import 'package:core/presentation/state/failure.dart';
|
||||||
import 'package:core/presentation/state/success.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/app_logger.dart';
|
||||||
import 'package:core/utils/platform_info.dart';
|
import 'package:core/utils/platform_info.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
@@ -85,8 +83,6 @@ typedef EndRangeSelection = int;
|
|||||||
|
|
||||||
class ThreadController extends BaseController with EmailActionController {
|
class ThreadController extends BaseController with EmailActionController {
|
||||||
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
final networkConnectionController = Get.find<NetworkConnectionController>();
|
final networkConnectionController = Get.find<NetworkConnectionController>();
|
||||||
|
|
||||||
final GetEmailsInMailboxInteractor _getEmailsInMailboxInteractor;
|
final GetEmailsInMailboxInteractor _getEmailsInMailboxInteractor;
|
||||||
@@ -377,6 +373,14 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
await cachingManager.clearEmailCacheAndAllStateCache();
|
await cachingManager.clearEmailCacheAndAllStateCache();
|
||||||
}
|
}
|
||||||
_getAllEmailAction();
|
_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;
|
mailboxDashBoardController.filterMessageOption.value = newFilterOption;
|
||||||
|
|
||||||
_appToast.showToastMessage(
|
appToast.showToastMessage(
|
||||||
context,
|
context,
|
||||||
newFilterOption.getMessageToast(context),
|
newFilterOption.getMessageToast(context),
|
||||||
leadingSVGIcon: newFilterOption.getIconToast(_imagePaths),
|
leadingSVGIcon: newFilterOption.getIconToast(imagePaths),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (searchController.isSearchEmailRunning) {
|
if (searchController.isSearchEmailRunning) {
|
||||||
@@ -1060,7 +1064,7 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
if (success.newListRules.isNotEmpty == true &&
|
if (success.newListRules.isNotEmpty == true &&
|
||||||
currentOverlayContext != null &&
|
currentOverlayContext != null &&
|
||||||
currentContext != null) {
|
currentContext != null) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).newFilterWasCreated
|
AppLocalizations.of(currentContext!).newFilterWasCreated
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -44,9 +44,6 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
FilterEmailPopupMenuMixin,
|
FilterEmailPopupMenuMixin,
|
||||||
PopupMenuWidgetMixin {
|
PopupMenuWidgetMixin {
|
||||||
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
|
|
||||||
ThreadView({Key? key}) : super(key: key);
|
ThreadView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -63,12 +60,12 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
if (supportVerticalDivider(context))
|
if (supportVerticalDivider(context))
|
||||||
const VerticalDivider(color: AppColor.colorDividerVertical, width: 1),
|
const VerticalDivider(color: AppColor.colorDividerVertical, width: 1),
|
||||||
Expanded(child: SafeArea(
|
Expanded(child: SafeArea(
|
||||||
right: _responsiveUtils.isLandscapeMobile(context),
|
right: controller.responsiveUtils.isLandscapeMobile(context),
|
||||||
left: _responsiveUtils.isLandscapeMobile(context),
|
left: controller.responsiveUtils.isLandscapeMobile(context),
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
if (!_responsiveUtils.isWebDesktop(context))
|
if (!controller.responsiveUtils.isWebDesktop(context))
|
||||||
... [
|
... [
|
||||||
Obx(() {
|
Obx(() {
|
||||||
return AppBarThreadWidget(
|
return AppBarThreadWidget(
|
||||||
@@ -86,13 +83,13 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
selectionEmail
|
selectionEmail
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
onContextMenuFilterEmailAction: _responsiveUtils.isScreenWithShortestSide(context)
|
onContextMenuFilterEmailAction: controller.responsiveUtils.isScreenWithShortestSide(context)
|
||||||
? (filterOption) => controller.openContextMenuAction(
|
? (filterOption) => controller.openContextMenuAction(
|
||||||
context,
|
context,
|
||||||
_filterMessagesCupertinoActionTile(context, filterOption)
|
_filterMessagesCupertinoActionTile(context, filterOption)
|
||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
onPopupMenuFilterEmailAction: !_responsiveUtils.isScreenWithShortestSide(context)
|
onPopupMenuFilterEmailAction: !controller.responsiveUtils.isScreenWithShortestSide(context)
|
||||||
? (filterOption, position) => controller.openPopupMenuAction(
|
? (filterOption, position) => controller.openPopupMenuAction(
|
||||||
context,
|
context,
|
||||||
position,
|
position,
|
||||||
@@ -148,7 +145,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
if (!_responsiveUtils.isDesktop(context))
|
if (!controller.responsiveUtils.isDesktop(context))
|
||||||
_buildMarkAsMailboxReadLoading(context),
|
_buildMarkAsMailboxReadLoading(context),
|
||||||
Obx(() => ThreadViewLoadingBarWidget(viewState: controller.viewState.value)),
|
Obx(() => ThreadViewLoadingBarWidget(viewState: controller.viewState.value)),
|
||||||
Expanded(child: _buildListEmail(context)),
|
Expanded(child: _buildListEmail(context)),
|
||||||
@@ -167,9 +164,9 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
child: ScrollToTopButtonWidget(
|
child: ScrollToTopButtonWidget(
|
||||||
scrollController: controller.listEmailController,
|
scrollController: controller.listEmailController,
|
||||||
onTap: controller.scrollToTop,
|
onTap: controller.scrollToTop,
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
_imagePaths.icArrowUpOutline,
|
controller.imagePaths.icArrowUpOutline,
|
||||||
width: ScrollToTopButtonWidgetStyles.iconWidth,
|
width: ScrollToTopButtonWidgetStyles.iconWidth,
|
||||||
height: ScrollToTopButtonWidgetStyles.iconHeight,
|
height: ScrollToTopButtonWidgetStyles.iconHeight,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
@@ -188,11 +185,11 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
|
|
||||||
bool supportVerticalDivider(BuildContext context) {
|
bool supportVerticalDivider(BuildContext context) {
|
||||||
if (PlatformInfo.isWeb) {
|
if (PlatformInfo.isWeb) {
|
||||||
return _responsiveUtils.isTabletLarge(context);
|
return controller.responsiveUtils.isTabletLarge(context);
|
||||||
} else {
|
} else {
|
||||||
return _responsiveUtils.isDesktop(context) ||
|
return controller.responsiveUtils.isDesktop(context) ||
|
||||||
_responsiveUtils.isTabletLarge(context) ||
|
controller.responsiveUtils.isTabletLarge(context) ||
|
||||||
_responsiveUtils.isLandscapeTablet(context);
|
controller.responsiveUtils.isLandscapeTablet(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,9 +198,9 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
padding: EdgeInsets.symmetric(
|
padding: EdgeInsets.symmetric(
|
||||||
horizontal: 16,
|
horizontal: 16,
|
||||||
vertical: _responsiveUtils.isWebNotDesktop(context) ? 8 : 0),
|
vertical: controller.responsiveUtils.isWebNotDesktop(context) ? 8 : 0),
|
||||||
margin: EdgeInsets.only(bottom: PlatformInfo.isMobile ? 8 : 0),
|
margin: EdgeInsets.only(bottom: PlatformInfo.isMobile ? 8 : 0),
|
||||||
child: SearchBarView(_imagePaths,
|
child: SearchBarView(controller.imagePaths,
|
||||||
hintTextSearch: AppLocalizations.of(context).search_emails,
|
hintTextSearch: AppLocalizations.of(context).search_emails,
|
||||||
onOpenSearchViewAction: controller.goToSearchView));
|
onOpenSearchViewAction: controller.goToSearchView));
|
||||||
}
|
}
|
||||||
@@ -226,11 +223,11 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
Widget _buildListButtonSelectionForMobile(BuildContext context) {
|
Widget _buildListButtonSelectionForMobile(BuildContext context) {
|
||||||
return Obx(() {
|
return Obx(() {
|
||||||
if ((PlatformInfo.isMobile || (PlatformInfo.isWeb && controller.isSelectionEnabled()
|
if ((PlatformInfo.isMobile || (PlatformInfo.isWeb && controller.isSelectionEnabled()
|
||||||
&& controller.isSearchActive() && !_responsiveUtils.isDesktop(context)))
|
&& controller.isSearchActive() && !controller.responsiveUtils.isDesktop(context)))
|
||||||
&& controller.mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected.isNotEmpty) {
|
&& controller.mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected.isNotEmpty) {
|
||||||
return BottomBarThreadSelectionWidget(
|
return BottomBarThreadSelectionWidget(
|
||||||
_imagePaths,
|
controller.imagePaths,
|
||||||
_responsiveUtils,
|
controller.responsiveUtils,
|
||||||
controller.mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected,
|
controller.mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected,
|
||||||
controller.mailboxDashBoardController.selectedMailbox.value,
|
controller.mailboxDashBoardController.selectedMailbox.value,
|
||||||
onPressEmailSelectionActionClick: (actionType, selectionEmail) =>
|
onPressEmailSelectionActionClick: (actionType, selectionEmail) =>
|
||||||
@@ -247,7 +244,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildFloatingButtonCompose(BuildContext context) {
|
Widget _buildFloatingButtonCompose(BuildContext context) {
|
||||||
if (_responsiveUtils.isWebDesktop(context)) {
|
if (controller.responsiveUtils.isWebDesktop(context)) {
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -255,7 +252,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
if (controller.isAllSearchInActive) {
|
if (controller.isAllSearchInActive) {
|
||||||
return Container(
|
return Container(
|
||||||
padding: PlatformInfo.isMobile && controller.listEmailSelected.isNotEmpty
|
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,
|
: EdgeInsets.zero,
|
||||||
child: ComposeFloatingButton(
|
child: ComposeFloatingButton(
|
||||||
scrollController: controller.listEmailController,
|
scrollController: controller.listEmailController,
|
||||||
@@ -278,7 +275,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
return listFilter.map((filter) => (FilterMessageCupertinoActionSheetActionBuilder(
|
return listFilter.map((filter) => (FilterMessageCupertinoActionSheetActionBuilder(
|
||||||
Key('filter_email_${filter.name}'),
|
Key('filter_email_${filter.name}'),
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
filter.getIcon(_imagePaths),
|
filter.getIcon(controller.imagePaths),
|
||||||
width: 20,
|
width: 20,
|
||||||
height: 20,
|
height: 20,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
@@ -288,14 +285,14 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
filter.getName(context),
|
filter.getName(context),
|
||||||
filter,
|
filter,
|
||||||
optionCurrent: optionCurrent,
|
optionCurrent: optionCurrent,
|
||||||
iconLeftPadding: _responsiveUtils.isMobile(context)
|
iconLeftPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? const EdgeInsets.only(left: 12, right: 16)
|
? const EdgeInsets.only(left: 12, right: 16)
|
||||||
: const EdgeInsets.only(right: 12),
|
: const EdgeInsets.only(right: 12),
|
||||||
iconRightPadding: _responsiveUtils.isMobile(context)
|
iconRightPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? const EdgeInsets.only(right: 12)
|
? const EdgeInsets.only(right: 12)
|
||||||
: EdgeInsets.zero,
|
: EdgeInsets.zero,
|
||||||
actionSelected: SvgPicture.asset(
|
actionSelected: SvgPicture.asset(
|
||||||
_imagePaths.icFilterSelected,
|
controller.imagePaths.icFilterSelected,
|
||||||
width: 20,
|
width: 20,
|
||||||
height: 20,
|
height: 20,
|
||||||
fit: BoxFit.fill))
|
fit: BoxFit.fill))
|
||||||
@@ -305,7 +302,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
|
|
||||||
Widget _buildListEmail(BuildContext context) {
|
Widget _buildListEmail(BuildContext context) {
|
||||||
return Container(
|
return Container(
|
||||||
margin: PlatformInfo.isWeb && _responsiveUtils.isDesktop(context)
|
margin: PlatformInfo.isWeb && controller.responsiveUtils.isDesktop(context)
|
||||||
? const EdgeInsets.symmetric(horizontal: 4)
|
? const EdgeInsets.symmetric(horizontal: 4)
|
||||||
: EdgeInsets.zero,
|
: EdgeInsets.zero,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
@@ -371,7 +368,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildEmailItem(BuildContext context, PresentationEmail presentationEmail) {
|
Widget _buildEmailItem(BuildContext context, PresentationEmail presentationEmail) {
|
||||||
if (_responsiveUtils.isWebDesktop(context)) {
|
if (controller.responsiveUtils.isWebDesktop(context)) {
|
||||||
return _buildEmailItemDraggable(context, presentationEmail);
|
return _buildEmailItemDraggable(context, presentationEmail);
|
||||||
} else {
|
} else {
|
||||||
return _buildEmailItemNotDraggable(context, presentationEmail);
|
return _buildEmailItemNotDraggable(context, presentationEmail);
|
||||||
@@ -421,7 +418,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
|
|
||||||
return Dismissible(
|
return Dismissible(
|
||||||
key: ValueKey<EmailId?>(presentationEmail.id),
|
key: ValueKey<EmailId?>(presentationEmail.id),
|
||||||
direction: controller.getSwipeDirection(_responsiveUtils.isWebDesktop(context), selectModeAll),
|
direction: controller.getSwipeDirection(controller.responsiveUtils.isWebDesktop(context), selectModeAll),
|
||||||
background: Container(
|
background: Container(
|
||||||
color: AppColor.colorItemRecipientSelected,
|
color: AppColor.colorItemRecipientSelected,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
@@ -435,11 +432,11 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
radius: 24,
|
radius: 24,
|
||||||
child: !presentationEmail.hasRead
|
child: !presentationEmail.hasRead
|
||||||
? SvgPicture.asset(
|
? SvgPicture.asset(
|
||||||
_imagePaths.icMarkAsRead,
|
controller.imagePaths.icMarkAsRead,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
)
|
)
|
||||||
: SvgPicture.asset(
|
: SvgPicture.asset(
|
||||||
_imagePaths.icUnreadEmail,
|
controller.imagePaths.icUnreadEmail,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
colorFilter: AppColor.primaryColor.asFilter(),
|
colorFilter: AppColor.primaryColor.asFilter(),
|
||||||
),
|
),
|
||||||
@@ -493,7 +490,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
PresentationEmail presentationEmail,
|
PresentationEmail presentationEmail,
|
||||||
RelativeRect? position
|
RelativeRect? position
|
||||||
) {
|
) {
|
||||||
if (_responsiveUtils.isScreenWithShortestSide(context)) {
|
if (controller.responsiveUtils.isScreenWithShortestSide(context)) {
|
||||||
controller.openContextMenuAction(
|
controller.openContextMenuAction(
|
||||||
context,
|
context,
|
||||||
_contextMenuActionTile(context, presentationEmail)
|
_contextMenuActionTile(context, presentationEmail)
|
||||||
@@ -519,7 +516,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
_imagePaths.icFilterMessageAll,
|
controller.imagePaths.icFilterMessageAll,
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24,
|
height: 24,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
@@ -546,7 +543,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
|
|
||||||
double? _getItemExtent(BuildContext context) {
|
double? _getItemExtent(BuildContext context) {
|
||||||
if (PlatformInfo.isWeb) {
|
if (PlatformInfo.isWeb) {
|
||||||
return _responsiveUtils.isDesktop(context) ? 52 : 98;
|
return controller.responsiveUtils.isDesktop(context) ? 52 : 98;
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -559,7 +556,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
? EmptyEmailsWidget(
|
? EmptyEmailsWidget(
|
||||||
key: const Key('empty_thread_view'),
|
key: const Key('empty_thread_view'),
|
||||||
title: _getMessageEmptyEmail(context),
|
title: _getMessageEmptyEmail(context),
|
||||||
iconSVG: _imagePaths.icEmptyEmail,
|
iconSVG: controller.imagePaths.icEmptyEmail,
|
||||||
subTitle: _getSubMessageEmptyEmail(context),
|
subTitle: _getSubMessageEmptyEmail(context),
|
||||||
onCreateFiltersActionCallback: controller.isNewFolderCreated
|
onCreateFiltersActionCallback: controller.isNewFolderCreated
|
||||||
? controller.goToCreateEmailRuleView
|
? controller.goToCreateEmailRuleView
|
||||||
@@ -612,7 +609,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
return (EmailActionCupertinoActionSheetActionBuilder(
|
return (EmailActionCupertinoActionSheetActionBuilder(
|
||||||
const Key('mark_as_spam_or_un_spam_action'),
|
const Key('mark_as_spam_or_un_spam_action'),
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
mailboxContain?.isSpam == true ? _imagePaths.icNotSpam : _imagePaths.icSpam,
|
mailboxContain?.isSpam == true ? controller.imagePaths.icNotSpam : controller.imagePaths.icSpam,
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24,
|
height: 24,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
@@ -621,10 +618,10 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
? AppLocalizations.of(context).remove_from_spam
|
? AppLocalizations.of(context).remove_from_spam
|
||||||
: AppLocalizations.of(context).mark_as_spam,
|
: AppLocalizations.of(context).mark_as_spam,
|
||||||
email,
|
email,
|
||||||
iconLeftPadding: _responsiveUtils.isMobile(context)
|
iconLeftPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? const EdgeInsets.only(left: 12, right: 16)
|
? const EdgeInsets.only(left: 12, right: 16)
|
||||||
: const EdgeInsets.only(right: 12),
|
: const EdgeInsets.only(right: 12),
|
||||||
iconRightPadding: _responsiveUtils.isMobile(context)
|
iconRightPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? const EdgeInsets.only(right: 12)
|
? const EdgeInsets.only(right: 12)
|
||||||
: EdgeInsets.zero)
|
: EdgeInsets.zero)
|
||||||
..onActionClick((email) => controller.pressEmailAction(context,
|
..onActionClick((email) => controller.pressEmailAction(context,
|
||||||
@@ -639,17 +636,17 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
return (EmailActionCupertinoActionSheetActionBuilder(
|
return (EmailActionCupertinoActionSheetActionBuilder(
|
||||||
const Key('open_in_new_tab_action'),
|
const Key('open_in_new_tab_action'),
|
||||||
SvgPicture.asset(
|
SvgPicture.asset(
|
||||||
_imagePaths.icOpenInNewTab,
|
controller.imagePaths.icOpenInNewTab,
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24,
|
height: 24,
|
||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
colorFilter: AppColor.colorTextButton.asFilter()),
|
colorFilter: AppColor.colorTextButton.asFilter()),
|
||||||
AppLocalizations.of(context).openInNewTab,
|
AppLocalizations.of(context).openInNewTab,
|
||||||
email,
|
email,
|
||||||
iconLeftPadding: _responsiveUtils.isMobile(context)
|
iconLeftPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? const EdgeInsets.only(left: 12, right: 16)
|
? const EdgeInsets.only(left: 12, right: 16)
|
||||||
: const EdgeInsets.only(right: 12),
|
: const EdgeInsets.only(right: 12),
|
||||||
iconRightPadding: _responsiveUtils.isMobile(context)
|
iconRightPadding: controller.responsiveUtils.isMobile(context)
|
||||||
? const EdgeInsets.only(right: 12)
|
? const EdgeInsets.only(right: 12)
|
||||||
: EdgeInsets.zero)
|
: EdgeInsets.zero)
|
||||||
..onActionClick((email) {
|
..onActionClick((email) {
|
||||||
@@ -677,7 +674,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
return PopupMenuItem(
|
return PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: popupItem(
|
child: popupItem(
|
||||||
mailboxContain?.isSpam == true ? _imagePaths.icNotSpam : _imagePaths.icSpam,
|
mailboxContain?.isSpam == true ? controller.imagePaths.icNotSpam : controller.imagePaths.icSpam,
|
||||||
mailboxContain?.isSpam == true
|
mailboxContain?.isSpam == true
|
||||||
? AppLocalizations.of(context).remove_from_spam
|
? AppLocalizations.of(context).remove_from_spam
|
||||||
: AppLocalizations.of(context).mark_as_spam,
|
: AppLocalizations.of(context).mark_as_spam,
|
||||||
@@ -705,7 +702,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
return PopupMenuItem(
|
return PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: popupItem(
|
child: popupItem(
|
||||||
_imagePaths.icOpenInNewTab,
|
controller.imagePaths.icOpenInNewTab,
|
||||||
AppLocalizations.of(context).openInNewTab,
|
AppLocalizations.of(context).openInNewTab,
|
||||||
colorIcon: AppColor.colorTextButton,
|
colorIcon: AppColor.colorTextButton,
|
||||||
styleName: const TextStyle(
|
styleName: const TextStyle(
|
||||||
@@ -730,19 +727,19 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
if (success is MarkAsMailboxReadLoading) {
|
if (success is MarkAsMailboxReadLoading) {
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: EdgeInsets.only(
|
padding: EdgeInsets.only(
|
||||||
top: _responsiveUtils.isDesktop(context) ? 16 : 0,
|
top: controller.responsiveUtils.isDesktop(context) ? 16 : 0,
|
||||||
left: 16,
|
left: 16,
|
||||||
right: 16,
|
right: 16,
|
||||||
bottom: _responsiveUtils.isDesktop(context) ? 0 : 16),
|
bottom: controller.responsiveUtils.isDesktop(context) ? 0 : 16),
|
||||||
child: horizontalLoadingWidget);
|
child: horizontalLoadingWidget);
|
||||||
} else if (success is UpdatingMarkAsMailboxReadState) {
|
} else if (success is UpdatingMarkAsMailboxReadState) {
|
||||||
final percent = success.countRead / success.totalUnread;
|
final percent = success.countRead / success.totalUnread;
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: EdgeInsets.only(
|
padding: EdgeInsets.only(
|
||||||
top: _responsiveUtils.isDesktop(context) ? 16 : 0,
|
top: controller.responsiveUtils.isDesktop(context) ? 16 : 0,
|
||||||
left: 16,
|
left: 16,
|
||||||
right: 16,
|
right: 16,
|
||||||
bottom: _responsiveUtils.isDesktop(context) ? 0 : 16),
|
bottom: controller.responsiveUtils.isDesktop(context) ? 0 : 16),
|
||||||
child: horizontalPercentLoadingWidget(percent));
|
child: horizontalPercentLoadingWidget(percent));
|
||||||
}
|
}
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
|
|
||||||
import 'package:async/async.dart';
|
import 'package:async/async.dart';
|
||||||
import 'package:collection/collection.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/failure.dart';
|
||||||
import 'package:core/presentation/state/success.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/app_logger.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:dio/dio.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/features/upload/presentation/model/upload_file_status.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
|
||||||
|
|
||||||
class UploadController extends BaseController {
|
class UploadController extends BaseController {
|
||||||
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _appToast = Get.find<AppToast>();
|
|
||||||
final _uuid = Get.find<Uuid>();
|
|
||||||
final _mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
final _mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
||||||
|
|
||||||
final UploadAttachmentInteractor _uploadAttachmentInteractor;
|
final UploadAttachmentInteractor _uploadAttachmentInteractor;
|
||||||
@@ -130,11 +124,11 @@ class UploadController extends BaseController {
|
|||||||
_deleteInlineFileUploaded(failure.uploadId);
|
_deleteInlineFileUploaded(failure.uploadId);
|
||||||
|
|
||||||
if (currentContext != null && currentOverlayContext != null) {
|
if (currentContext != null && currentOverlayContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).thisImageCannotBeAdded,
|
AppLocalizations.of(currentContext!).thisImageCannotBeAdded,
|
||||||
leadingSVGIconColor: Colors.white,
|
leadingSVGIconColor: Colors.white,
|
||||||
leadingSVGIcon: _imagePaths.icInsertImage);
|
leadingSVGIcon: imagePaths.icInsertImage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -158,7 +152,7 @@ class UploadController extends BaseController {
|
|||||||
log('UploadController::_handleProgressUploadInlineImageStateStream():succeed[${success.uploadId}]');
|
log('UploadController::_handleProgressUploadInlineImageStateStream():succeed[${success.uploadId}]');
|
||||||
final inlineAttachment = success.attachment.toAttachmentWithDisposition(
|
final inlineAttachment = success.attachment.toAttachmentWithDisposition(
|
||||||
disposition: ContentDisposition.inline,
|
disposition: ContentDisposition.inline,
|
||||||
cid: _uuid.v1()
|
cid: uuid.v1()
|
||||||
);
|
);
|
||||||
|
|
||||||
final uploadFileState = _uploadingStateInlineFiles.getUploadFileStateById(success.uploadId);
|
final uploadFileState = _uploadingStateInlineFiles.getUploadFileStateById(success.uploadId);
|
||||||
@@ -256,21 +250,21 @@ class UploadController extends BaseController {
|
|||||||
|
|
||||||
void _handleUploadAttachmentsFailure(ErrorAttachmentUploadState failure) {
|
void _handleUploadAttachmentsFailure(ErrorAttachmentUploadState failure) {
|
||||||
if (currentContext != null && currentOverlayContext != null) {
|
if (currentContext != null && currentOverlayContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
'${AppLocalizations.of(currentContext!).can_not_upload_this_file_as_attachments}. ${failure.exception ?? ''}',
|
'${AppLocalizations.of(currentContext!).can_not_upload_this_file_as_attachments}. ${failure.exception ?? ''}',
|
||||||
leadingSVGIconColor: Colors.white,
|
leadingSVGIconColor: Colors.white,
|
||||||
leadingSVGIcon: _imagePaths.icAttachment);
|
leadingSVGIcon: imagePaths.icAttachment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _handleUploadAttachmentsSuccess(SuccessAttachmentUploadState success) {
|
void _handleUploadAttachmentsSuccess(SuccessAttachmentUploadState success) {
|
||||||
if (currentContext != null && currentOverlayContext != null && _uploadingStateFiles.allSuccess) {
|
if (currentContext != null && currentOverlayContext != null && _uploadingStateFiles.allSuccess) {
|
||||||
_appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).attachments_uploaded_successfully,
|
AppLocalizations.of(currentContext!).attachments_uploaded_successfully,
|
||||||
leadingSVGIconColor: Colors.white,
|
leadingSVGIconColor: Colors.white,
|
||||||
leadingSVGIcon: _imagePaths.icAttachment);
|
leadingSVGIcon: imagePaths.icAttachment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -361,19 +355,19 @@ class UploadController extends BaseController {
|
|||||||
if (failure is UploadAttachmentFailure) {
|
if (failure is UploadAttachmentFailure) {
|
||||||
if (failure.isInline) {
|
if (failure.isInline) {
|
||||||
if (currentContext != null && currentOverlayContext != null) {
|
if (currentContext != null && currentOverlayContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).thisImageCannotBeAdded,
|
AppLocalizations.of(currentContext!).thisImageCannotBeAdded,
|
||||||
leadingSVGIconColor: Colors.white,
|
leadingSVGIconColor: Colors.white,
|
||||||
leadingSVGIcon: _imagePaths.icInsertImage);
|
leadingSVGIcon: imagePaths.icInsertImage);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (currentContext != null && currentOverlayContext != null) {
|
if (currentContext != null && currentOverlayContext != null) {
|
||||||
_appToast.showToastErrorMessage(
|
appToast.showToastErrorMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).can_not_upload_this_file_as_attachments,
|
AppLocalizations.of(currentContext!).can_not_upload_this_file_as_attachments,
|
||||||
leadingSVGIconColor: Colors.white,
|
leadingSVGIconColor: Colors.white,
|
||||||
leadingSVGIcon: _imagePaths.icAttachment);
|
leadingSVGIcon: imagePaths.icAttachment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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_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_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/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/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/cache_exception_thrower.dart';
|
||||||
import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart';
|
import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart';
|
||||||
@@ -59,6 +60,7 @@ class CredentialBindings extends InteractorsBindings {
|
|||||||
Get.find<CredentialRepository>(),
|
Get.find<CredentialRepository>(),
|
||||||
Get.find<AccountRepository>()
|
Get.find<AccountRepository>()
|
||||||
));
|
));
|
||||||
|
Get.put(UpdateAuthenticationAccountInteractor(Get.find<AccountRepository>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
Reference in New Issue
Block a user