TF-933 Inject and navigate to SearchEmail routes
This commit is contained in:
@@ -707,7 +707,16 @@ class EmailController extends BaseController with AppLoaderMixin {
|
||||
|
||||
void closeEmailView(BuildContext context) {
|
||||
mailboxDashBoardController.clearSelectedEmail();
|
||||
mailboxDashBoardController.dispatchRoute(AppRoutes.THREAD);
|
||||
|
||||
if (BuildUtils.isWeb) {
|
||||
mailboxDashBoardController.dispatchRoute(AppRoutes.THREAD);
|
||||
} else {
|
||||
if (mailboxDashBoardController.searchController.isSearchEmailRunning) {
|
||||
mailboxDashBoardController.dispatchRoute(AppRoutes.SEARCH_EMAIL);
|
||||
} else {
|
||||
mailboxDashBoardController.dispatchRoute(AppRoutes.THREAD);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void pressEmailAction(EmailActionType emailActionType) {
|
||||
|
||||
@@ -199,25 +199,18 @@ class MailboxController extends BaseMailboxController {
|
||||
if (state is Either) {
|
||||
state.fold((failure) => null, (success) {
|
||||
if (success is MarkAsMultipleEmailReadAllSuccess) {
|
||||
mailboxDashBoardController.clearState();
|
||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||
} else if (success is MarkAsMultipleEmailReadHasSomeEmailFailure) {
|
||||
mailboxDashBoardController.clearState();
|
||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||
} else if (success is MoveMultipleEmailToMailboxAllSuccess) {
|
||||
mailboxDashBoardController.clearState();
|
||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||
} else if (success is MoveMultipleEmailToMailboxHasSomeEmailFailure) {
|
||||
mailboxDashBoardController.clearState();
|
||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||
} else if (success is DeleteMultipleEmailsPermanentlyAllSuccess) {
|
||||
mailboxDashBoardController.clearState();
|
||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||
} else if (success is DeleteMultipleEmailsPermanentlyHasSomeEmailFailure) {
|
||||
mailboxDashBoardController.clearState();
|
||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||
} else if (success is EmptyTrashFolderSuccess) {
|
||||
mailboxDashBoardController.clearState();
|
||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||
} else if (success is MarkAsEmailReadSuccess) {
|
||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||
|
||||
+49
-6
@@ -14,6 +14,14 @@ import 'package:tmail_ui_user/features/email/data/network/email_api.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/repository/email_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/delete_email_permanently_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/delete_multiple_emails_permanently_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/session_storage_composer_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource_impl/session_storage_composer_datasoure_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/repository/composer_cache_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/email_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/datasource/account_datasource.dart';
|
||||
@@ -47,15 +55,10 @@ import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_reposit
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/search_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/session_storage_composer_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource_impl/search_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource_impl/session_storage_composer_datasoure_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/repository/composer_cache_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/repository/search_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/search_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_on_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart';
|
||||
@@ -66,6 +69,8 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/search/domain/usecases/refresh_changes_search_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/search/presentation/search_email_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/thread/data/datasource/thread_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/thread/data/datasource_impl/local_thread_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/thread/data/datasource_impl/thread_datasource_impl.dart';
|
||||
@@ -74,6 +79,12 @@ import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart';
|
||||
import 'package:tmail_ui_user/features/thread/data/network/thread_isolate_worker.dart';
|
||||
import 'package:tmail_ui_user/features/thread/data/repository/thread_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/empty_trash_folder_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/mark_as_multiple_email_read_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/mark_as_star_multiple_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/search_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/search_more_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/thread_bindings.dart';
|
||||
|
||||
class MailboxDashBoardBindings extends BaseBindings {
|
||||
@@ -84,6 +95,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
MailboxBindings().dependencies();
|
||||
ThreadBindings().dependencies();
|
||||
EmailBindings().dependencies();
|
||||
SearchEmailBindings().dependencies();
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -101,7 +113,14 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.find<MoveToMailboxInteractor>(),
|
||||
Get.find<DeleteEmailPermanentlyInteractor>(),
|
||||
Get.find<MarkAsMailboxReadInteractor>(),
|
||||
Get.find<GetComposerCacheOnWebInteractor>()
|
||||
Get.find<GetComposerCacheOnWebInteractor>(),
|
||||
Get.find<MarkAsEmailReadInteractor>(),
|
||||
Get.find<MarkAsStarEmailInteractor>(),
|
||||
Get.find<MarkAsMultipleEmailReadInteractor>(),
|
||||
Get.find<MarkAsStarMultipleEmailInteractor>(),
|
||||
Get.find<MoveMultipleEmailToMailboxInteractor>(),
|
||||
Get.find<EmptyTrashFolderInteractor>(),
|
||||
Get.find<DeleteMultipleEmailsPermanentlyInteractor>(),
|
||||
));
|
||||
Get.put(AdvancedFilterController());
|
||||
}
|
||||
@@ -155,6 +174,9 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.find<MailboxRepository>()));
|
||||
Get.lazyPut(() => SaveRecentSearchInteractor(Get.find<SearchRepository>()));
|
||||
Get.lazyPut(() => GetAllRecentSearchLatestInteractor(Get.find<SearchRepository>()));
|
||||
Get.lazyPut(() => SearchEmailInteractor(Get.find<ThreadRepository>()));
|
||||
Get.lazyPut(() => SearchMoreEmailInteractor(Get.find<ThreadRepository>()));
|
||||
Get.lazyPut(() => RefreshChangesSearchEmailInteractor(Get.find<ThreadRepository>()));
|
||||
Get.lazyPut(() => QuickSearchEmailInteractor(Get.find<ThreadRepository>()));
|
||||
Get.lazyPut(() => MarkAsMailboxReadInteractor(
|
||||
Get.find<MailboxRepository>(),
|
||||
@@ -179,6 +201,27 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.lazyPut(() => GetComposerCacheOnWebInteractor(Get.find<ComposerCacheRepository>()));
|
||||
Get.lazyPut(() => SaveComposerCacheOnWebInteractor(Get.find<ComposerCacheRepository>()));
|
||||
Get.lazyPut(() => RemoveComposerCacheOnWebInteractor(Get.find<ComposerCacheRepository>()));
|
||||
Get.lazyPut(() => MarkAsEmailReadInteractor(
|
||||
Get.find<EmailRepository>(),
|
||||
Get.find<MailboxRepository>()
|
||||
));
|
||||
Get.lazyPut(() => MarkAsStarEmailInteractor(Get.find<EmailRepository>()));
|
||||
Get.lazyPut(() => MarkAsMultipleEmailReadInteractor(
|
||||
Get.find<EmailRepository>(),
|
||||
Get.find<MailboxRepository>()
|
||||
));
|
||||
Get.lazyPut(() => MarkAsStarMultipleEmailInteractor(Get.find<EmailRepository>()));
|
||||
Get.lazyPut(() => MoveMultipleEmailToMailboxInteractor(
|
||||
Get.find<EmailRepository>(),
|
||||
Get.find<MailboxRepository>()
|
||||
));
|
||||
Get.lazyPut(() => DeleteMultipleEmailsPermanentlyInteractor(
|
||||
Get.find<EmailRepository>(),
|
||||
Get.find<MailboxRepository>()));
|
||||
Get.lazyPut(() => EmptyTrashFolderInteractor(
|
||||
Get.find<ThreadRepository>(),
|
||||
Get.find<MailboxRepository>(),
|
||||
Get.find<EmailRepository>()));
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
+402
-2
@@ -5,6 +5,7 @@ import 'package:core/core.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
|
||||
@@ -16,6 +17,7 @@ import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:package_info_plus/package_info_plus.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.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/composer/domain/state/save_email_as_drafts_state.dart';
|
||||
@@ -23,17 +25,23 @@ import 'package:tmail_ui_user/features/composer/domain/state/send_email_state.da
|
||||
import 'package:tmail_ui_user/features/composer/domain/state/update_email_drafts_state.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/composer_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
|
||||
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/delete_email_permanently_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/delete_multiple_emails_permanently_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/move_to_mailbox_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/delete_email_permanently_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/delete_multiple_emails_permanently_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.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/presentation/model/mailbox_actions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_composer_cache_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart';
|
||||
@@ -55,6 +63,15 @@ import 'package:tmail_ui_user/features/manage_account/presentation/model/account
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/manage_account_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/empty_trash_folder_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/mark_as_multiple_email_read_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/mark_as_star_multiple_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/move_multiple_email_to_mailbox_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/empty_trash_folder_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/mark_as_multiple_email_read_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/mark_as_star_multiple_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
@@ -76,6 +93,14 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
final DeleteEmailPermanentlyInteractor _deleteEmailPermanentlyInteractor;
|
||||
final MarkAsMailboxReadInteractor _markAsMailboxReadInteractor;
|
||||
final GetComposerCacheOnWebInteractor _getEmailCacheOnWebInteractor;
|
||||
final MarkAsEmailReadInteractor _markAsEmailReadInteractor;
|
||||
final MarkAsStarEmailInteractor _markAsStarEmailInteractor;
|
||||
final MarkAsMultipleEmailReadInteractor _markAsMultipleEmailReadInteractor;
|
||||
final MarkAsStarMultipleEmailInteractor _markAsStarMultipleEmailInteractor;
|
||||
final MoveMultipleEmailToMailboxInteractor _moveMultipleEmailToMailboxInteractor;
|
||||
final EmptyTrashFolderInteractor _emptyTrashFolderInteractor;
|
||||
final DeleteMultipleEmailsPermanentlyInteractor _deleteMultipleEmailsPermanentlyInteractor;
|
||||
|
||||
GetAllVacationInteractor? _getAllVacationInteractor;
|
||||
UpdateVacationInteractor? _updateVacationInteractor;
|
||||
|
||||
@@ -112,7 +137,14 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
this._moveToMailboxInteractor,
|
||||
this._deleteEmailPermanentlyInteractor,
|
||||
this._markAsMailboxReadInteractor,
|
||||
this._getEmailCacheOnWebInteractor
|
||||
this._getEmailCacheOnWebInteractor,
|
||||
this._markAsEmailReadInteractor,
|
||||
this._markAsStarEmailInteractor,
|
||||
this._markAsMultipleEmailReadInteractor,
|
||||
this._markAsStarMultipleEmailInteractor,
|
||||
this._moveMultipleEmailToMailboxInteractor,
|
||||
this._emptyTrashFolderInteractor,
|
||||
this._deleteMultipleEmailsPermanentlyInteractor,
|
||||
) : super(logoutOidcInteractor,
|
||||
deleteAuthorityOidcInteractor,
|
||||
getAuthenticatedAccountInteractor);
|
||||
@@ -225,6 +257,20 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
}
|
||||
} else if (success is UpdateVacationSuccess) {
|
||||
_handleUpdateVacationSuccess(success);
|
||||
} else if (success is MarkAsMultipleEmailReadAllSuccess
|
||||
|| success is MarkAsMultipleEmailReadHasSomeEmailFailure) {
|
||||
_markAsReadSelectedMultipleEmailSuccess(success);
|
||||
} else if (success is MarkAsStarMultipleEmailAllSuccess
|
||||
|| success is MarkAsStarMultipleEmailHasSomeEmailFailure) {
|
||||
_markAsStarMultipleEmailSuccess(success);
|
||||
} else if (success is MoveMultipleEmailToMailboxAllSuccess
|
||||
|| success is MoveMultipleEmailToMailboxHasSomeEmailFailure) {
|
||||
_moveSelectedMultipleEmailToMailboxSuccess(success);
|
||||
} else if (success is EmptyTrashFolderSuccess) {
|
||||
_emptyTrashFolderSuccess(success);
|
||||
} else if (success is DeleteMultipleEmailsPermanentlyAllSuccess
|
||||
|| success is DeleteMultipleEmailsPermanentlyHasSomeEmailFailure) {
|
||||
_deleteMultipleEmailsPermanentlySuccess(success);
|
||||
}
|
||||
}
|
||||
);
|
||||
@@ -457,6 +503,357 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
}
|
||||
}
|
||||
|
||||
void markAsEmailRead(PresentationEmail presentationEmail, ReadActions readActions) async {
|
||||
if (accountId.value != null) {
|
||||
consumeState(_markAsEmailReadInteractor.execute(
|
||||
accountId.value!,
|
||||
presentationEmail.toEmail(),
|
||||
readActions));
|
||||
}
|
||||
}
|
||||
|
||||
void markAsStarEmail(PresentationEmail presentationEmail, MarkStarAction action) {
|
||||
if (accountId.value != null) {
|
||||
consumeState(_markAsStarEmailInteractor.execute(
|
||||
accountId.value!,
|
||||
presentationEmail.toEmail(),
|
||||
action));
|
||||
}
|
||||
}
|
||||
|
||||
void markAsReadSelectedMultipleEmail(List<PresentationEmail> listPresentationEmail, ReadActions readActions) {
|
||||
final listEmail = listPresentationEmail
|
||||
.map((presentationEmail) => presentationEmail.toEmail())
|
||||
.toList();
|
||||
log('MailboxDashBoardController::markAsReadSelectedMultipleEmail(): listEmail: ${listEmail.length}');
|
||||
if (accountId.value != null) {
|
||||
consumeState(_markAsMultipleEmailReadInteractor.execute(
|
||||
accountId.value!,
|
||||
listEmail,
|
||||
readActions));
|
||||
}
|
||||
}
|
||||
|
||||
void _markAsReadSelectedMultipleEmailSuccess(Success success) {
|
||||
ReadActions? readActions;
|
||||
|
||||
if (success is MarkAsMultipleEmailReadAllSuccess) {
|
||||
readActions = success.readActions;
|
||||
} else if (success is MarkAsMultipleEmailReadHasSomeEmailFailure) {
|
||||
readActions = success.readActions;
|
||||
}
|
||||
|
||||
if (currentContext != null && readActions != null && currentOverlayContext != null) {
|
||||
final message = readActions == ReadActions.markAsUnread
|
||||
? AppLocalizations.of(currentContext!).marked_message_toast(AppLocalizations.of(currentContext!).unread)
|
||||
: AppLocalizations.of(currentContext!).marked_message_toast(AppLocalizations.of(currentContext!).read);
|
||||
_appToast.showToastWithIcon(
|
||||
currentOverlayContext!,
|
||||
message: message,
|
||||
icon: readActions == ReadActions.markAsUnread
|
||||
? _imagePaths.icUnreadToast
|
||||
: _imagePaths.icReadToast);
|
||||
}
|
||||
}
|
||||
|
||||
void markAsStarSelectedMultipleEmail(List<PresentationEmail> listPresentationEmail, MarkStarAction markStarAction) {
|
||||
final listEmail = listPresentationEmail
|
||||
.map((presentationEmail) => presentationEmail.toEmail())
|
||||
.toList();
|
||||
if (accountId.value != null) {
|
||||
consumeState(_markAsStarMultipleEmailInteractor.execute(
|
||||
accountId.value!,
|
||||
listEmail,
|
||||
markStarAction));
|
||||
}
|
||||
}
|
||||
|
||||
void _markAsStarMultipleEmailSuccess(Success success) {
|
||||
MarkStarAction? markStarAction;
|
||||
int countMarkStarSuccess = 0;
|
||||
|
||||
if (success is MarkAsStarMultipleEmailAllSuccess) {
|
||||
markStarAction = success.markStarAction;
|
||||
countMarkStarSuccess = success.countMarkStarSuccess;
|
||||
} else if (success is MarkAsStarMultipleEmailHasSomeEmailFailure) {
|
||||
markStarAction = success.markStarAction;
|
||||
countMarkStarSuccess = success.countMarkStarSuccess;
|
||||
}
|
||||
|
||||
if (currentContext != null && markStarAction != null && currentOverlayContext != null) {
|
||||
final message = markStarAction == MarkStarAction.unMarkStar
|
||||
? AppLocalizations.of(currentContext!).marked_unstar_multiple_item(countMarkStarSuccess)
|
||||
: AppLocalizations.of(currentContext!).marked_star_multiple_item(countMarkStarSuccess);
|
||||
_appToast.showToastWithIcon(
|
||||
currentOverlayContext!,
|
||||
message: message,
|
||||
icon: markStarAction == MarkStarAction.unMarkStar
|
||||
? _imagePaths.icUnStar
|
||||
: _imagePaths.icStar);
|
||||
}
|
||||
}
|
||||
|
||||
void moveSelectedMultipleEmailToMailbox(
|
||||
List<PresentationEmail> listEmails,
|
||||
PresentationMailbox mailboxCurrent
|
||||
) async {
|
||||
if (accountId.value != null) {
|
||||
final destinationMailbox = await push(
|
||||
AppRoutes.DESTINATION_PICKER,
|
||||
arguments: DestinationPickerArguments(accountId.value!, MailboxActions.moveEmail));
|
||||
|
||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
||||
if (destinationMailbox.isTrash) {
|
||||
_moveSelectedEmailMultipleToMailboxAction(accountId.value!, MoveToMailboxRequest(
|
||||
listEmails.listEmailIds,
|
||||
mailboxCurrent.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToTrash));
|
||||
} else if (destinationMailbox.isSpam) {
|
||||
_moveSelectedEmailMultipleToMailboxAction(accountId.value!, MoveToMailboxRequest(
|
||||
listEmails.listEmailIds,
|
||||
mailboxCurrent.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToSpam));
|
||||
} else {
|
||||
_moveSelectedEmailMultipleToMailboxAction(accountId.value!, MoveToMailboxRequest(
|
||||
listEmails.listEmailIds,
|
||||
mailboxCurrent.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToMailbox,
|
||||
destinationPath: destinationMailbox.mailboxPath));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _moveSelectedEmailMultipleToMailboxAction(
|
||||
AccountId accountId,
|
||||
MoveToMailboxRequest moveRequest
|
||||
) {
|
||||
consumeState(_moveMultipleEmailToMailboxInteractor.execute(accountId, moveRequest));
|
||||
}
|
||||
|
||||
void _moveSelectedMultipleEmailToMailboxSuccess(Success success) {
|
||||
String? destinationPath;
|
||||
List<EmailId> movedEmailIds = [];
|
||||
MailboxId? currentMailboxId;
|
||||
MailboxId? destinationMailboxId;
|
||||
MoveAction? moveAction;
|
||||
EmailActionType? emailActionType;
|
||||
|
||||
if (success is MoveMultipleEmailToMailboxAllSuccess) {
|
||||
destinationPath = success.destinationPath;
|
||||
movedEmailIds = success.movedListEmailId;
|
||||
currentMailboxId = success.currentMailboxId;
|
||||
destinationMailboxId = success.destinationMailboxId;
|
||||
moveAction = success.moveAction;
|
||||
emailActionType = success.emailActionType;
|
||||
} else if (success is MoveMultipleEmailToMailboxHasSomeEmailFailure) {
|
||||
destinationPath = success.destinationPath;
|
||||
movedEmailIds = success.movedListEmailId;
|
||||
currentMailboxId = success.currentMailboxId;
|
||||
destinationMailboxId = success.destinationMailboxId;
|
||||
moveAction = success.moveAction;
|
||||
emailActionType = success.emailActionType;
|
||||
}
|
||||
|
||||
if (currentContext != null &&
|
||||
currentOverlayContext != null &&
|
||||
emailActionType != null &&
|
||||
moveAction == MoveAction.moving) {
|
||||
_appToast.showToastWithAction(
|
||||
currentOverlayContext!,
|
||||
emailActionType.getToastMessageMoveToMailboxSuccess(
|
||||
currentContext!,
|
||||
destinationPath: destinationPath),
|
||||
AppLocalizations.of(currentContext!).undo_action,
|
||||
() {
|
||||
final newCurrentMailboxId = destinationMailboxId;
|
||||
final newDestinationMailboxId = currentMailboxId;
|
||||
if (newCurrentMailboxId != null && newDestinationMailboxId != null) {
|
||||
_revertedSelectionEmailToOriginalMailbox(MoveToMailboxRequest(
|
||||
movedEmailIds,
|
||||
newCurrentMailboxId,
|
||||
newDestinationMailboxId,
|
||||
MoveAction.undo,
|
||||
emailActionType!,
|
||||
destinationPath: destinationPath));
|
||||
}
|
||||
},
|
||||
maxWidth: _responsiveUtils.getMaxWidthToast(currentContext!)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void _revertedSelectionEmailToOriginalMailbox(MoveToMailboxRequest newMoveRequest) {
|
||||
if (accountId.value != null) {
|
||||
consumeState(_moveMultipleEmailToMailboxInteractor.execute(
|
||||
accountId.value!,
|
||||
newMoveRequest));
|
||||
}
|
||||
}
|
||||
|
||||
void moveSelectedMultipleEmailToTrash(List<PresentationEmail> listEmails, PresentationMailbox mailboxCurrent) {
|
||||
final trashMailboxId = getMailboxIdByRole(PresentationMailbox.roleTrash);
|
||||
if (accountId.value != null && trashMailboxId != null) {
|
||||
_moveSelectedEmailMultipleToMailboxAction(accountId.value!, MoveToMailboxRequest(
|
||||
listEmails.listEmailIds,
|
||||
mailboxCurrent.id,
|
||||
trashMailboxId,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToTrash)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void moveSelectedMultipleEmailToSpam(List<PresentationEmail> listEmail, PresentationMailbox mailboxCurrent) {
|
||||
final spamMailboxId = getMailboxIdByRole(PresentationMailbox.roleSpam);
|
||||
if (accountId.value != null && spamMailboxId != null) {
|
||||
_moveSelectedEmailMultipleToMailboxAction(accountId.value!, MoveToMailboxRequest(
|
||||
listEmail.listEmailIds,
|
||||
mailboxCurrent.id,
|
||||
spamMailboxId,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToSpam)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void unSpamSelectedMultipleEmail(List<PresentationEmail> listEmail) {
|
||||
final spamMailboxId = getMailboxIdByRole(PresentationMailbox.roleSpam);
|
||||
final inboxMailboxId = getMailboxIdByRole(PresentationMailbox.roleInbox);
|
||||
if (inboxMailboxId != null && accountId.value != null && spamMailboxId != null) {
|
||||
_moveSelectedEmailMultipleToMailboxAction(accountId.value!, MoveToMailboxRequest(
|
||||
listEmail.listEmailIds,
|
||||
spamMailboxId,
|
||||
inboxMailboxId,
|
||||
MoveAction.moving,
|
||||
EmailActionType.unSpam)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void deleteSelectionEmailsPermanently(
|
||||
BuildContext context,
|
||||
DeleteActionType actionType,
|
||||
{
|
||||
List<PresentationEmail>? listEmails,
|
||||
PresentationMailbox? mailboxCurrent,
|
||||
Function? onCancelSelectionEmail,
|
||||
}
|
||||
) {
|
||||
if (_responsiveUtils.isMobile(context)) {
|
||||
(ConfirmationDialogActionSheetBuilder(context)
|
||||
..messageText(actionType.getContentDialog(
|
||||
context,
|
||||
count: listEmails?.length,
|
||||
mailboxName: mailboxCurrent?.name?.name))
|
||||
..onCancelAction(AppLocalizations.of(context).cancel, () => popBack())
|
||||
..onConfirmAction(
|
||||
actionType.getConfirmActionName(context),
|
||||
() => _deleteSelectionEmailsPermanentlyAction(
|
||||
actionType,
|
||||
listEmails: listEmails,
|
||||
onCancelSelectionEmail: onCancelSelectionEmail)))
|
||||
.show();
|
||||
} else {
|
||||
showDialog(
|
||||
context: context,
|
||||
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
||||
builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(_imagePaths)
|
||||
..key(const Key('confirm_dialog_delete_emails_permanently'))
|
||||
..title(actionType.getTitleDialog(context))
|
||||
..content(actionType.getContentDialog(
|
||||
context,
|
||||
count: listEmails?.length,
|
||||
mailboxName: mailboxCurrent?.name?.name))
|
||||
..addIcon(SvgPicture.asset(_imagePaths.icRemoveDialog, fit: BoxFit.fill))
|
||||
..colorConfirmButton(AppColor.colorConfirmActionDialog)
|
||||
..styleTextConfirmButton(const TextStyle(
|
||||
fontSize: 17,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: AppColor.colorActionDeleteConfirmDialog))
|
||||
..onCloseButtonAction(() => popBack())
|
||||
..onConfirmButtonAction(
|
||||
actionType.getConfirmActionName(context),
|
||||
() => _deleteSelectionEmailsPermanentlyAction(
|
||||
actionType,
|
||||
listEmails: listEmails,
|
||||
onCancelSelectionEmail: onCancelSelectionEmail))
|
||||
..onCancelButtonAction(AppLocalizations.of(context).cancel, () => popBack()))
|
||||
.build()));
|
||||
}
|
||||
}
|
||||
|
||||
void _deleteSelectionEmailsPermanentlyAction(
|
||||
DeleteActionType actionType, {
|
||||
List<PresentationEmail>? listEmails,
|
||||
Function? onCancelSelectionEmail,
|
||||
}) {
|
||||
popBack();
|
||||
|
||||
switch(actionType) {
|
||||
case DeleteActionType.all:
|
||||
_emptyTrashFolderAction(onCancelSelectionEmail: onCancelSelectionEmail);
|
||||
break;
|
||||
case DeleteActionType.multiple:
|
||||
_deleteMultipleEmailsPermanently(listEmails ?? [], onCancelSelectionEmail: onCancelSelectionEmail);
|
||||
break;
|
||||
case DeleteActionType.single:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void _emptyTrashFolderAction({Function? onCancelSelectionEmail}) {
|
||||
onCancelSelectionEmail?.call();
|
||||
|
||||
final trashMailboxId = mapDefaultMailboxId[PresentationMailbox.roleTrash];
|
||||
if (accountId.value != null && trashMailboxId != null) {
|
||||
consumeState(_emptyTrashFolderInteractor.execute(accountId.value!, trashMailboxId));
|
||||
}
|
||||
}
|
||||
|
||||
void _emptyTrashFolderSuccess(EmptyTrashFolderSuccess success) {
|
||||
if (currentContext != null && currentOverlayContext != null) {
|
||||
_appToast.showToastWithIcon(
|
||||
currentOverlayContext!,
|
||||
widthToast: _responsiveUtils.isDesktop(currentContext!) ? 360 : null,
|
||||
message: AppLocalizations.of(currentContext!).toast_message_empty_trash_folder_success,
|
||||
icon: _imagePaths.icDeleteToast);
|
||||
}
|
||||
}
|
||||
|
||||
void _deleteMultipleEmailsPermanently(List<PresentationEmail> listEmails, {Function? onCancelSelectionEmail}) {
|
||||
onCancelSelectionEmail?.call();
|
||||
|
||||
if (accountId.value != null) {
|
||||
consumeState(_deleteMultipleEmailsPermanentlyInteractor.execute(
|
||||
accountId.value!,
|
||||
listEmails.listEmailIds));
|
||||
}
|
||||
}
|
||||
|
||||
void _deleteMultipleEmailsPermanentlySuccess(Success success) {
|
||||
List<EmailId> listEmailIdResult = <EmailId>[];
|
||||
if (success is DeleteMultipleEmailsPermanentlyAllSuccess) {
|
||||
listEmailIdResult = success.emailIds;
|
||||
} else if (success is DeleteMultipleEmailsPermanentlyHasSomeEmailFailure) {
|
||||
listEmailIdResult = success.emailIds;
|
||||
}
|
||||
|
||||
if (currentContext != null && currentOverlayContext != null && listEmailIdResult.isNotEmpty) {
|
||||
_appToast.showToastWithIcon(
|
||||
currentOverlayContext!,
|
||||
widthToast: _responsiveUtils.isDesktop(currentContext!) ? 360 : null,
|
||||
message: AppLocalizations.of(currentContext!).toast_message_delete_multiple_email_permanently_success(listEmailIdResult.length),
|
||||
icon: _imagePaths.icDeleteToast);
|
||||
}
|
||||
}
|
||||
|
||||
void dispatchAction(UIAction action) {
|
||||
log('MailboxDashBoardController::dispatchAction(): ${action.runtimeType}');
|
||||
dashBoardAction.value = action;
|
||||
@@ -476,7 +873,10 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
|
||||
void dispatchRoute(String route) {
|
||||
routePath.value = route;
|
||||
log('MailboxDashBoardController::dispatchRoute(): $route');
|
||||
|
||||
if (routePath.value == AppRoutes.SEARCH_EMAIL) {
|
||||
searchController.enableSearch();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -1,17 +1,14 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/network_connection_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_view.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/base_mailbox_dashboard_view.dart';
|
||||
import 'package:tmail_ui_user/features/search/presentation/search_email_view.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/thread_view.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
|
||||
class MailboxDashBoardView extends GetWidget<MailboxDashBoardController>
|
||||
with NetworkConnectionMixin {
|
||||
|
||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
|
||||
MailboxDashBoardView({Key? key}) : super(key: key);
|
||||
|
||||
@@ -30,7 +27,7 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController>
|
||||
return Scaffold(
|
||||
key: controller.scaffoldKey,
|
||||
drawer: ResponsiveWidget(
|
||||
responsiveUtils: _responsiveUtils,
|
||||
responsiveUtils: responsiveUtils,
|
||||
mobile: SizedBox(child: MailboxView(), width: double.infinity),
|
||||
landscapeMobile: SizedBox(
|
||||
child: MailboxView(),
|
||||
@@ -47,30 +44,50 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController>
|
||||
desktop: SizedBox(
|
||||
child: MailboxView(),
|
||||
width: ResponsiveUtils.defaultSizeLeftMenuMobile)),
|
||||
drawerEnableOpenDragGesture: _responsiveUtils.hasLeftMenuDrawerActive(context),
|
||||
drawerEnableOpenDragGesture: responsiveUtils.hasLeftMenuDrawerActive(context),
|
||||
body: Stack(children: [
|
||||
Obx(() {
|
||||
switch(controller.routePath.value) {
|
||||
case AppRoutes.THREAD:
|
||||
return ResponsiveWidget(
|
||||
responsiveUtils: _responsiveUtils,
|
||||
desktop: bodyLandscapeTablet,
|
||||
tabletLarge: bodyLandscapeTablet,
|
||||
landscapeTablet: bodyLandscapeTablet,
|
||||
responsiveUtils: responsiveUtils,
|
||||
desktop: controller.searchController.isSearchEmailRunning
|
||||
? EmailView()
|
||||
: bodyLandscapeTablet,
|
||||
tabletLarge: controller.searchController.isSearchEmailRunning
|
||||
? EmailView()
|
||||
: bodyLandscapeTablet,
|
||||
landscapeTablet: controller.searchController.isSearchEmailRunning
|
||||
? EmailView()
|
||||
: bodyLandscapeTablet,
|
||||
mobile: ThreadView());
|
||||
case AppRoutes.EMAIL:
|
||||
return ResponsiveWidget(
|
||||
responsiveUtils: _responsiveUtils,
|
||||
desktop: bodyLandscapeTablet,
|
||||
tabletLarge: bodyLandscapeTablet,
|
||||
landscapeTablet: bodyLandscapeTablet,
|
||||
responsiveUtils: responsiveUtils,
|
||||
desktop: controller.searchController.isSearchEmailRunning
|
||||
? EmailView()
|
||||
: bodyLandscapeTablet,
|
||||
tabletLarge: controller.searchController.isSearchEmailRunning
|
||||
? EmailView()
|
||||
: bodyLandscapeTablet,
|
||||
landscapeTablet: controller.searchController.isSearchEmailRunning
|
||||
? EmailView()
|
||||
: bodyLandscapeTablet,
|
||||
mobile: EmailView());
|
||||
case AppRoutes.SEARCH_EMAIL:
|
||||
return SafeArea(child: SearchEmailView());
|
||||
default:
|
||||
return ResponsiveWidget(
|
||||
responsiveUtils: _responsiveUtils,
|
||||
desktop: bodyLandscapeTablet,
|
||||
tabletLarge: bodyLandscapeTablet,
|
||||
landscapeTablet: bodyLandscapeTablet,
|
||||
responsiveUtils: responsiveUtils,
|
||||
desktop: controller.searchController.isSearchEmailRunning
|
||||
? EmailView()
|
||||
: bodyLandscapeTablet,
|
||||
tabletLarge: controller.searchController.isSearchEmailRunning
|
||||
? EmailView()
|
||||
: bodyLandscapeTablet,
|
||||
landscapeTablet: controller.searchController.isSearchEmailRunning
|
||||
? EmailView()
|
||||
: bodyLandscapeTablet,
|
||||
mobile: ThreadView());
|
||||
}
|
||||
}),
|
||||
|
||||
+15
-7
@@ -13,12 +13,14 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
||||
|
||||
final PresentationEmail _presentationEmail;
|
||||
final PresentationMailbox? _presentationMailbox;
|
||||
final EdgeInsets? contentPadding;
|
||||
|
||||
EmailQuickSearchItemTileWidget(
|
||||
this._presentationEmail,
|
||||
this._presentationMailbox,
|
||||
{Key? key}
|
||||
) : super(key: key);
|
||||
this._presentationMailbox, {
|
||||
Key? key,
|
||||
this.contentPadding,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -27,7 +29,7 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
||||
final maxWidthItem = constraints.maxWidth;
|
||||
log('EmailQuickSearchItemTileWidget::build(): maxWidthItem: $maxWidthItem');
|
||||
return Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 14),
|
||||
padding: contentPadding ?? const EdgeInsets.all(12),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
@@ -48,7 +50,8 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
||||
constraints: BoxConstraints(maxWidth: maxWidthItem / 3),
|
||||
child: Text(_getInformationSender(),
|
||||
maxLines: 1,
|
||||
overflow: BuildUtils.isWeb ? null : TextOverflow.ellipsis,
|
||||
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||
style: const TextStyle(
|
||||
fontSize: 15,
|
||||
fontWeight: FontWeight.w600,
|
||||
@@ -58,7 +61,8 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
||||
Expanded(
|
||||
child: Text(_presentationEmail.getEmailTitle(),
|
||||
maxLines: 1,
|
||||
overflow: BuildUtils.isWeb ? null : TextOverflow.ellipsis,
|
||||
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||
style: const TextStyle(
|
||||
fontSize: 13,
|
||||
fontWeight: FontWeight.normal,
|
||||
@@ -71,6 +75,9 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
||||
),
|
||||
Text(_presentationEmail.getReceivedAt(Localizations.localeOf(context).toLanguageTag()),
|
||||
textAlign: TextAlign.right,
|
||||
maxLines: 1,
|
||||
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||
style: const TextStyle(
|
||||
fontSize: 13,
|
||||
fontWeight: FontWeight.normal,
|
||||
@@ -79,7 +86,8 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
||||
const SizedBox(height: 3),
|
||||
Text(_presentationEmail.getPartialContent(),
|
||||
maxLines: 1,
|
||||
overflow: BuildUtils.isWeb ? null : TextOverflow.ellipsis,
|
||||
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||
style: const TextStyle(
|
||||
fontSize: 13,
|
||||
fontWeight: FontWeight.normal,
|
||||
|
||||
+7
-2
@@ -10,13 +10,18 @@ class RecentSearchItemTileWidget extends StatelessWidget {
|
||||
final imagePath = Get.find<ImagePaths>();
|
||||
|
||||
final RecentSearch recentSearch;
|
||||
final EdgeInsets? contentPadding;
|
||||
|
||||
RecentSearchItemTileWidget(this.recentSearch, {Key? key}) : super(key: key);
|
||||
RecentSearchItemTileWidget(
|
||||
this.recentSearch, {
|
||||
Key? key,
|
||||
this.contentPadding,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 10),
|
||||
padding: contentPadding ?? const EdgeInsets.all(12),
|
||||
child: Row(
|
||||
children: [
|
||||
SvgPicture.asset(imagePath.icClockSB),
|
||||
|
||||
@@ -42,6 +42,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart';
|
||||
import 'package:tmail_ui_user/features/search/presentation/search_email_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/constants/thread_constants.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/email_filter.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
||||
@@ -1350,4 +1351,9 @@ class ThreadController extends BaseController {
|
||||
|
||||
mailboxDashBoardController.goToComposer(arguments);
|
||||
}
|
||||
|
||||
void goToSearchView() {
|
||||
SearchEmailBindings().dependencies();
|
||||
mailboxDashBoardController.dispatchRoute(AppRoutes.SEARCH_EMAIL);
|
||||
}
|
||||
}
|
||||
@@ -89,16 +89,35 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
|
||||
}
|
||||
|
||||
Widget _buildSearchBarView(BuildContext context) {
|
||||
return Obx(() => Container(
|
||||
color: Colors.white,
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 16,
|
||||
vertical: _responsiveUtils.isWebNotDesktop(context) ? 8 : 0),
|
||||
margin: const EdgeInsets.only(
|
||||
bottom: !BuildUtils.isWeb ? 16 : 0),
|
||||
child: !controller.isSearchActive()
|
||||
? _buildSearchFormInActive(context)
|
||||
: _buildSearchFormActive(context)));
|
||||
if (BuildUtils.isWeb) {
|
||||
return Obx(() => Container(
|
||||
color: Colors.white,
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 16,
|
||||
vertical: _responsiveUtils.isWebNotDesktop(context) ? 8 : 0),
|
||||
margin: const EdgeInsets.only(
|
||||
bottom: !BuildUtils.isWeb ? 16 : 0),
|
||||
child: !controller.isSearchActive()
|
||||
? _buildSearchFormInActive(context)
|
||||
: _buildSearchFormActive(context)));
|
||||
} else {
|
||||
return Obx(() {
|
||||
if (!controller.searchController.isSearchActive()) {
|
||||
return Container(
|
||||
color: Colors.white,
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 16,
|
||||
vertical: _responsiveUtils.isWebNotDesktop(context) ? 8 : 0),
|
||||
margin: const EdgeInsets.only(
|
||||
bottom: !BuildUtils.isWeb ? 16 : 0),
|
||||
child: SearchBarView(_imagePaths,
|
||||
hintTextSearch: AppLocalizations.of(context).search_emails,
|
||||
onOpenSearchViewAction: () => controller.goToSearchView()));
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Widget _buildVacationNotificationMessage(BuildContext context) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"@@last_modified": "2022-09-16T10:29:51.348820",
|
||||
"@@last_modified": "2022-09-16T03:16:09.866930",
|
||||
"initializing_data": "Initializing data...",
|
||||
"@initializing_data": {
|
||||
"type": "text",
|
||||
@@ -2179,5 +2179,11 @@
|
||||
"type": "text",
|
||||
"placeholders_order": [],
|
||||
"placeholders": {}
|
||||
},
|
||||
"clearAll": "Clear all",
|
||||
"@clearAll": {
|
||||
"type": "text",
|
||||
"placeholders_order": [],
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
@@ -2252,4 +2252,11 @@ class AppLocalizations {
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
String get clearAll {
|
||||
return Intl.message(
|
||||
'Clear all',
|
||||
name: 'clearAll',
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -13,4 +13,5 @@ abstract class AppRoutes {
|
||||
static const IDENTITY_CREATOR = '$MANAGE_ACCOUNT/identity_creator';
|
||||
static const RULES_FILTER_CREATOR = '$MANAGE_ACCOUNT/rules_filter_creator';
|
||||
static const EMAILS_FORWARD_CREATOR = '$MANAGE_ACCOUNT/emails_forward_creator';
|
||||
static const SEARCH_EMAIL = '$MAILBOX_DASHBOARD/search_email';
|
||||
}
|
||||
@@ -8,12 +8,18 @@ extension ListPresentationEmailExtension on List<PresentationEmail> {
|
||||
|
||||
bool get isAllEmailStarred => every((email) => email.hasStarred);
|
||||
|
||||
bool get isAllSelectionInActive {
|
||||
return every((email) => email.selectMode == SelectMode.INACTIVE);
|
||||
}
|
||||
|
||||
List<Email> get listEmail => map((presentationEmail) => presentationEmail.toEmail()).toList();
|
||||
|
||||
List<PresentationEmail> get listEmailSelected {
|
||||
return where((email) => email.selectMode == SelectMode.ACTIVE).toList();
|
||||
}
|
||||
|
||||
List<EmailId> get listEmailIds => map((email) => email.id).toList();
|
||||
|
||||
bool isAllCanDeletePermanently(Map<MailboxId, PresentationMailbox> mapMailbox) {
|
||||
final listMailboxContain = map((email) => email.findMailboxContain(mapMailbox))
|
||||
.whereType<PresentationMailbox>()
|
||||
|
||||
Reference in New Issue
Block a user