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) {
|
void closeEmailView(BuildContext context) {
|
||||||
mailboxDashBoardController.clearSelectedEmail();
|
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) {
|
void pressEmailAction(EmailActionType emailActionType) {
|
||||||
|
|||||||
@@ -199,25 +199,18 @@ class MailboxController extends BaseMailboxController {
|
|||||||
if (state is Either) {
|
if (state is Either) {
|
||||||
state.fold((failure) => null, (success) {
|
state.fold((failure) => null, (success) {
|
||||||
if (success is MarkAsMultipleEmailReadAllSuccess) {
|
if (success is MarkAsMultipleEmailReadAllSuccess) {
|
||||||
mailboxDashBoardController.clearState();
|
|
||||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||||
} else if (success is MarkAsMultipleEmailReadHasSomeEmailFailure) {
|
} else if (success is MarkAsMultipleEmailReadHasSomeEmailFailure) {
|
||||||
mailboxDashBoardController.clearState();
|
|
||||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||||
} else if (success is MoveMultipleEmailToMailboxAllSuccess) {
|
} else if (success is MoveMultipleEmailToMailboxAllSuccess) {
|
||||||
mailboxDashBoardController.clearState();
|
|
||||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||||
} else if (success is MoveMultipleEmailToMailboxHasSomeEmailFailure) {
|
} else if (success is MoveMultipleEmailToMailboxHasSomeEmailFailure) {
|
||||||
mailboxDashBoardController.clearState();
|
|
||||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||||
} else if (success is DeleteMultipleEmailsPermanentlyAllSuccess) {
|
} else if (success is DeleteMultipleEmailsPermanentlyAllSuccess) {
|
||||||
mailboxDashBoardController.clearState();
|
|
||||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||||
} else if (success is DeleteMultipleEmailsPermanentlyHasSomeEmailFailure) {
|
} else if (success is DeleteMultipleEmailsPermanentlyHasSomeEmailFailure) {
|
||||||
mailboxDashBoardController.clearState();
|
|
||||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||||
} else if (success is EmptyTrashFolderSuccess) {
|
} else if (success is EmptyTrashFolderSuccess) {
|
||||||
mailboxDashBoardController.clearState();
|
|
||||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||||
} else if (success is MarkAsEmailReadSuccess) {
|
} else if (success is MarkAsEmailReadSuccess) {
|
||||||
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
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/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/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_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/domain/usecases/move_to_mailbox_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/email_bindings.dart';
|
import 'package:tmail_ui_user/features/email/presentation/email_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/login/data/datasource/account_datasource.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/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/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/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/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/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/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_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/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_composer_cache_on_web_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_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/mailbox_dashboard_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_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/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/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';
|
||||||
@@ -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/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/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/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';
|
import 'package:tmail_ui_user/features/thread/presentation/thread_bindings.dart';
|
||||||
|
|
||||||
class MailboxDashBoardBindings extends BaseBindings {
|
class MailboxDashBoardBindings extends BaseBindings {
|
||||||
@@ -84,6 +95,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
MailboxBindings().dependencies();
|
MailboxBindings().dependencies();
|
||||||
ThreadBindings().dependencies();
|
ThreadBindings().dependencies();
|
||||||
EmailBindings().dependencies();
|
EmailBindings().dependencies();
|
||||||
|
SearchEmailBindings().dependencies();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -101,7 +113,14 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
Get.find<MoveToMailboxInteractor>(),
|
Get.find<MoveToMailboxInteractor>(),
|
||||||
Get.find<DeleteEmailPermanentlyInteractor>(),
|
Get.find<DeleteEmailPermanentlyInteractor>(),
|
||||||
Get.find<MarkAsMailboxReadInteractor>(),
|
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());
|
Get.put(AdvancedFilterController());
|
||||||
}
|
}
|
||||||
@@ -155,6 +174,9 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
Get.find<MailboxRepository>()));
|
Get.find<MailboxRepository>()));
|
||||||
Get.lazyPut(() => SaveRecentSearchInteractor(Get.find<SearchRepository>()));
|
Get.lazyPut(() => SaveRecentSearchInteractor(Get.find<SearchRepository>()));
|
||||||
Get.lazyPut(() => GetAllRecentSearchLatestInteractor(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(() => QuickSearchEmailInteractor(Get.find<ThreadRepository>()));
|
||||||
Get.lazyPut(() => MarkAsMailboxReadInteractor(
|
Get.lazyPut(() => MarkAsMailboxReadInteractor(
|
||||||
Get.find<MailboxRepository>(),
|
Get.find<MailboxRepository>(),
|
||||||
@@ -179,6 +201,27 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
Get.lazyPut(() => GetComposerCacheOnWebInteractor(Get.find<ComposerCacheRepository>()));
|
Get.lazyPut(() => GetComposerCacheOnWebInteractor(Get.find<ComposerCacheRepository>()));
|
||||||
Get.lazyPut(() => SaveComposerCacheOnWebInteractor(Get.find<ComposerCacheRepository>()));
|
Get.lazyPut(() => SaveComposerCacheOnWebInteractor(Get.find<ComposerCacheRepository>()));
|
||||||
Get.lazyPut(() => RemoveComposerCacheOnWebInteractor(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
|
@override
|
||||||
|
|||||||
+402
-2
@@ -5,6 +5,7 @@ import 'package:core/core.dart';
|
|||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.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:jmap_dart_client/jmap/mail/vacation/vacation_response.dart';
|
||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
import 'package:package_info_plus/package_info_plus.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/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/composer/domain/state/save_email_as_drafts_state.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/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/composer_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.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_action.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.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_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/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_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/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/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/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/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/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';
|
||||||
|
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/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/state/remove_email_drafts_state.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/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/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/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_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/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
@@ -76,6 +93,14 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
final DeleteEmailPermanentlyInteractor _deleteEmailPermanentlyInteractor;
|
final DeleteEmailPermanentlyInteractor _deleteEmailPermanentlyInteractor;
|
||||||
final MarkAsMailboxReadInteractor _markAsMailboxReadInteractor;
|
final MarkAsMailboxReadInteractor _markAsMailboxReadInteractor;
|
||||||
final GetComposerCacheOnWebInteractor _getEmailCacheOnWebInteractor;
|
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;
|
GetAllVacationInteractor? _getAllVacationInteractor;
|
||||||
UpdateVacationInteractor? _updateVacationInteractor;
|
UpdateVacationInteractor? _updateVacationInteractor;
|
||||||
|
|
||||||
@@ -112,7 +137,14 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
this._moveToMailboxInteractor,
|
this._moveToMailboxInteractor,
|
||||||
this._deleteEmailPermanentlyInteractor,
|
this._deleteEmailPermanentlyInteractor,
|
||||||
this._markAsMailboxReadInteractor,
|
this._markAsMailboxReadInteractor,
|
||||||
this._getEmailCacheOnWebInteractor
|
this._getEmailCacheOnWebInteractor,
|
||||||
|
this._markAsEmailReadInteractor,
|
||||||
|
this._markAsStarEmailInteractor,
|
||||||
|
this._markAsMultipleEmailReadInteractor,
|
||||||
|
this._markAsStarMultipleEmailInteractor,
|
||||||
|
this._moveMultipleEmailToMailboxInteractor,
|
||||||
|
this._emptyTrashFolderInteractor,
|
||||||
|
this._deleteMultipleEmailsPermanentlyInteractor,
|
||||||
) : super(logoutOidcInteractor,
|
) : super(logoutOidcInteractor,
|
||||||
deleteAuthorityOidcInteractor,
|
deleteAuthorityOidcInteractor,
|
||||||
getAuthenticatedAccountInteractor);
|
getAuthenticatedAccountInteractor);
|
||||||
@@ -225,6 +257,20 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
}
|
}
|
||||||
} else if (success is UpdateVacationSuccess) {
|
} else if (success is UpdateVacationSuccess) {
|
||||||
_handleUpdateVacationSuccess(success);
|
_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) {
|
void dispatchAction(UIAction action) {
|
||||||
log('MailboxDashBoardController::dispatchAction(): ${action.runtimeType}');
|
log('MailboxDashBoardController::dispatchAction(): ${action.runtimeType}');
|
||||||
dashBoardAction.value = action;
|
dashBoardAction.value = action;
|
||||||
@@ -476,7 +873,10 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
|
|
||||||
void dispatchRoute(String route) {
|
void dispatchRoute(String route) {
|
||||||
routePath.value = route;
|
routePath.value = route;
|
||||||
log('MailboxDashBoardController::dispatchRoute(): $route');
|
|
||||||
|
if (routePath.value == AppRoutes.SEARCH_EMAIL) {
|
||||||
|
searchController.enableSearch();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -1,17 +1,14 @@
|
|||||||
import 'package:core/core.dart';
|
import 'package:core/core.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/network_connection_mixin.dart';
|
|
||||||
import 'package:tmail_ui_user/features/email/presentation/email_view.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/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/features/thread/presentation/thread_view.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||||
|
|
||||||
class MailboxDashBoardView extends GetWidget<MailboxDashBoardController>
|
class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||||
with NetworkConnectionMixin {
|
|
||||||
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
|
|
||||||
MailboxDashBoardView({Key? key}) : super(key: key);
|
MailboxDashBoardView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@@ -30,7 +27,7 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController>
|
|||||||
return Scaffold(
|
return Scaffold(
|
||||||
key: controller.scaffoldKey,
|
key: controller.scaffoldKey,
|
||||||
drawer: ResponsiveWidget(
|
drawer: ResponsiveWidget(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: responsiveUtils,
|
||||||
mobile: SizedBox(child: MailboxView(), width: double.infinity),
|
mobile: SizedBox(child: MailboxView(), width: double.infinity),
|
||||||
landscapeMobile: SizedBox(
|
landscapeMobile: SizedBox(
|
||||||
child: MailboxView(),
|
child: MailboxView(),
|
||||||
@@ -47,30 +44,50 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController>
|
|||||||
desktop: SizedBox(
|
desktop: SizedBox(
|
||||||
child: MailboxView(),
|
child: MailboxView(),
|
||||||
width: ResponsiveUtils.defaultSizeLeftMenuMobile)),
|
width: ResponsiveUtils.defaultSizeLeftMenuMobile)),
|
||||||
drawerEnableOpenDragGesture: _responsiveUtils.hasLeftMenuDrawerActive(context),
|
drawerEnableOpenDragGesture: responsiveUtils.hasLeftMenuDrawerActive(context),
|
||||||
body: Stack(children: [
|
body: Stack(children: [
|
||||||
Obx(() {
|
Obx(() {
|
||||||
switch(controller.routePath.value) {
|
switch(controller.routePath.value) {
|
||||||
case AppRoutes.THREAD:
|
case AppRoutes.THREAD:
|
||||||
return ResponsiveWidget(
|
return ResponsiveWidget(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: responsiveUtils,
|
||||||
desktop: bodyLandscapeTablet,
|
desktop: controller.searchController.isSearchEmailRunning
|
||||||
tabletLarge: bodyLandscapeTablet,
|
? EmailView()
|
||||||
landscapeTablet: bodyLandscapeTablet,
|
: bodyLandscapeTablet,
|
||||||
|
tabletLarge: controller.searchController.isSearchEmailRunning
|
||||||
|
? EmailView()
|
||||||
|
: bodyLandscapeTablet,
|
||||||
|
landscapeTablet: controller.searchController.isSearchEmailRunning
|
||||||
|
? EmailView()
|
||||||
|
: bodyLandscapeTablet,
|
||||||
mobile: ThreadView());
|
mobile: ThreadView());
|
||||||
case AppRoutes.EMAIL:
|
case AppRoutes.EMAIL:
|
||||||
return ResponsiveWidget(
|
return ResponsiveWidget(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: responsiveUtils,
|
||||||
desktop: bodyLandscapeTablet,
|
desktop: controller.searchController.isSearchEmailRunning
|
||||||
tabletLarge: bodyLandscapeTablet,
|
? EmailView()
|
||||||
landscapeTablet: bodyLandscapeTablet,
|
: bodyLandscapeTablet,
|
||||||
|
tabletLarge: controller.searchController.isSearchEmailRunning
|
||||||
|
? EmailView()
|
||||||
|
: bodyLandscapeTablet,
|
||||||
|
landscapeTablet: controller.searchController.isSearchEmailRunning
|
||||||
|
? EmailView()
|
||||||
|
: bodyLandscapeTablet,
|
||||||
mobile: EmailView());
|
mobile: EmailView());
|
||||||
|
case AppRoutes.SEARCH_EMAIL:
|
||||||
|
return SafeArea(child: SearchEmailView());
|
||||||
default:
|
default:
|
||||||
return ResponsiveWidget(
|
return ResponsiveWidget(
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: responsiveUtils,
|
||||||
desktop: bodyLandscapeTablet,
|
desktop: controller.searchController.isSearchEmailRunning
|
||||||
tabletLarge: bodyLandscapeTablet,
|
? EmailView()
|
||||||
landscapeTablet: bodyLandscapeTablet,
|
: bodyLandscapeTablet,
|
||||||
|
tabletLarge: controller.searchController.isSearchEmailRunning
|
||||||
|
? EmailView()
|
||||||
|
: bodyLandscapeTablet,
|
||||||
|
landscapeTablet: controller.searchController.isSearchEmailRunning
|
||||||
|
? EmailView()
|
||||||
|
: bodyLandscapeTablet,
|
||||||
mobile: ThreadView());
|
mobile: ThreadView());
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|||||||
+15
-7
@@ -13,12 +13,14 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
|||||||
|
|
||||||
final PresentationEmail _presentationEmail;
|
final PresentationEmail _presentationEmail;
|
||||||
final PresentationMailbox? _presentationMailbox;
|
final PresentationMailbox? _presentationMailbox;
|
||||||
|
final EdgeInsets? contentPadding;
|
||||||
|
|
||||||
EmailQuickSearchItemTileWidget(
|
EmailQuickSearchItemTileWidget(
|
||||||
this._presentationEmail,
|
this._presentationEmail,
|
||||||
this._presentationMailbox,
|
this._presentationMailbox, {
|
||||||
{Key? key}
|
Key? key,
|
||||||
) : super(key: key);
|
this.contentPadding,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -27,7 +29,7 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
|||||||
final maxWidthItem = constraints.maxWidth;
|
final maxWidthItem = constraints.maxWidth;
|
||||||
log('EmailQuickSearchItemTileWidget::build(): maxWidthItem: $maxWidthItem');
|
log('EmailQuickSearchItemTileWidget::build(): maxWidthItem: $maxWidthItem');
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 14),
|
padding: contentPadding ?? const EdgeInsets.all(12),
|
||||||
child: Row(
|
child: Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
@@ -48,7 +50,8 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
|||||||
constraints: BoxConstraints(maxWidth: maxWidthItem / 3),
|
constraints: BoxConstraints(maxWidth: maxWidthItem / 3),
|
||||||
child: Text(_getInformationSender(),
|
child: Text(_getInformationSender(),
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
overflow: BuildUtils.isWeb ? null : TextOverflow.ellipsis,
|
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||||
|
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 15,
|
fontSize: 15,
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
@@ -58,7 +61,8 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
|||||||
Expanded(
|
Expanded(
|
||||||
child: Text(_presentationEmail.getEmailTitle(),
|
child: Text(_presentationEmail.getEmailTitle(),
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
overflow: BuildUtils.isWeb ? null : TextOverflow.ellipsis,
|
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||||
|
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 13,
|
fontSize: 13,
|
||||||
fontWeight: FontWeight.normal,
|
fontWeight: FontWeight.normal,
|
||||||
@@ -71,6 +75,9 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
Text(_presentationEmail.getReceivedAt(Localizations.localeOf(context).toLanguageTag()),
|
Text(_presentationEmail.getReceivedAt(Localizations.localeOf(context).toLanguageTag()),
|
||||||
textAlign: TextAlign.right,
|
textAlign: TextAlign.right,
|
||||||
|
maxLines: 1,
|
||||||
|
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||||
|
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 13,
|
fontSize: 13,
|
||||||
fontWeight: FontWeight.normal,
|
fontWeight: FontWeight.normal,
|
||||||
@@ -79,7 +86,8 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
|||||||
const SizedBox(height: 3),
|
const SizedBox(height: 3),
|
||||||
Text(_presentationEmail.getPartialContent(),
|
Text(_presentationEmail.getPartialContent(),
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
overflow: BuildUtils.isWeb ? null : TextOverflow.ellipsis,
|
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||||
|
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 13,
|
fontSize: 13,
|
||||||
fontWeight: FontWeight.normal,
|
fontWeight: FontWeight.normal,
|
||||||
|
|||||||
+7
-2
@@ -10,13 +10,18 @@ class RecentSearchItemTileWidget extends StatelessWidget {
|
|||||||
final imagePath = Get.find<ImagePaths>();
|
final imagePath = Get.find<ImagePaths>();
|
||||||
|
|
||||||
final RecentSearch recentSearch;
|
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
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 10),
|
padding: contentPadding ?? const EdgeInsets.all(12),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
SvgPicture.asset(imagePath.icClockSB),
|
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/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/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/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/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/email_filter.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';
|
||||||
@@ -1350,4 +1351,9 @@ class ThreadController extends BaseController {
|
|||||||
|
|
||||||
mailboxDashBoardController.goToComposer(arguments);
|
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) {
|
Widget _buildSearchBarView(BuildContext context) {
|
||||||
return Obx(() => Container(
|
if (BuildUtils.isWeb) {
|
||||||
color: Colors.white,
|
return Obx(() => Container(
|
||||||
padding: EdgeInsets.symmetric(
|
color: Colors.white,
|
||||||
horizontal: 16,
|
padding: EdgeInsets.symmetric(
|
||||||
vertical: _responsiveUtils.isWebNotDesktop(context) ? 8 : 0),
|
horizontal: 16,
|
||||||
margin: const EdgeInsets.only(
|
vertical: _responsiveUtils.isWebNotDesktop(context) ? 8 : 0),
|
||||||
bottom: !BuildUtils.isWeb ? 16 : 0),
|
margin: const EdgeInsets.only(
|
||||||
child: !controller.isSearchActive()
|
bottom: !BuildUtils.isWeb ? 16 : 0),
|
||||||
? _buildSearchFormInActive(context)
|
child: !controller.isSearchActive()
|
||||||
: _buildSearchFormActive(context)));
|
? _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) {
|
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": "Initializing data...",
|
||||||
"@initializing_data": {
|
"@initializing_data": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
@@ -2179,5 +2179,11 @@
|
|||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
"placeholders": {}
|
"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 IDENTITY_CREATOR = '$MANAGE_ACCOUNT/identity_creator';
|
||||||
static const RULES_FILTER_CREATOR = '$MANAGE_ACCOUNT/rules_filter_creator';
|
static const RULES_FILTER_CREATOR = '$MANAGE_ACCOUNT/rules_filter_creator';
|
||||||
static const EMAILS_FORWARD_CREATOR = '$MANAGE_ACCOUNT/emails_forward_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 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<Email> get listEmail => map((presentationEmail) => presentationEmail.toEmail()).toList();
|
||||||
|
|
||||||
List<PresentationEmail> get listEmailSelected {
|
List<PresentationEmail> get listEmailSelected {
|
||||||
return where((email) => email.selectMode == SelectMode.ACTIVE).toList();
|
return where((email) => email.selectMode == SelectMode.ACTIVE).toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<EmailId> get listEmailIds => map((email) => email.id).toList();
|
||||||
|
|
||||||
bool isAllCanDeletePermanently(Map<MailboxId, PresentationMailbox> mapMailbox) {
|
bool isAllCanDeletePermanently(Map<MailboxId, PresentationMailbox> mapMailbox) {
|
||||||
final listMailboxContain = map((email) => email.findMailboxContain(mapMailbox))
|
final listMailboxContain = map((email) => email.findMailboxContain(mapMailbox))
|
||||||
.whereType<PresentationMailbox>()
|
.whereType<PresentationMailbox>()
|
||||||
|
|||||||
Reference in New Issue
Block a user