TF-933 Get mailbox contain email when search activate in EmailView

This commit is contained in:
dab246
2022-09-16 01:52:19 +07:00
committed by Dat H. Pham
parent d69ab05ba6
commit ebb91ad051
2 changed files with 21 additions and 13 deletions
@@ -81,8 +81,6 @@ class EmailController extends BaseController with AppLoaderMixin {
StreamController<Either<Failure, Success>>.broadcast(); StreamController<Either<Failure, Success>>.broadcast();
Stream<Either<Failure, Success>> get downloadProgressState => _downloadProgressStateController.stream; Stream<Either<Failure, Success>> get downloadProgressState => _downloadProgressStateController.stream;
PresentationMailbox? get currentMailbox => mailboxDashBoardController.selectedMailbox.value;
PresentationEmail? get currentEmail => mailboxDashBoardController.selectedEmail.value; PresentationEmail? get currentEmail => mailboxDashBoardController.selectedEmail.value;
EmailController( EmailController(
@@ -240,9 +238,15 @@ class EmailController extends BaseController with AppLoaderMixin {
bool get isExpandEmailAddress => emailAddressExpandMode.value == ExpandMode.EXPAND; bool get isExpandEmailAddress => emailAddressExpandMode.value == ExpandMode.EXPAND;
PresentationMailbox? getMailboxContain(PresentationEmail email) {
return mailboxDashBoardController.searchController.isSearchEmailRunning
? email.findMailboxContain(mailboxDashBoardController.mapMailbox)
: mailboxDashBoardController.selectedMailbox.value;
}
void markAsEmailRead(PresentationEmail presentationEmail, ReadActions readActions) async { void markAsEmailRead(PresentationEmail presentationEmail, ReadActions readActions) async {
final accountId = mailboxDashBoardController.accountId.value; final accountId = mailboxDashBoardController.accountId.value;
final mailboxCurrent = mailboxDashBoardController.selectedMailbox.value; final mailboxCurrent = getMailboxContain(presentationEmail);
if (accountId != null && mailboxCurrent != null) { if (accountId != null && mailboxCurrent != null) {
consumeState(_markAsEmailReadInteractor.execute(accountId, presentationEmail.toEmail(), readActions)); consumeState(_markAsEmailReadInteractor.execute(accountId, presentationEmail.toEmail(), readActions));
} }
@@ -432,7 +436,7 @@ class EmailController extends BaseController with AppLoaderMixin {
} }
void moveToMailbox(BuildContext context, PresentationEmail email) async { void moveToMailbox(BuildContext context, PresentationEmail email) async {
final currentMailbox = mailboxDashBoardController.selectedMailbox.value; final currentMailbox = getMailboxContain(email);
final accountId = mailboxDashBoardController.accountId.value; final accountId = mailboxDashBoardController.accountId.value;
if (currentMailbox != null && accountId != null) { if (currentMailbox != null && accountId != null) {
@@ -503,11 +507,12 @@ class EmailController extends BaseController with AppLoaderMixin {
void moveToTrash(BuildContext context, PresentationEmail email) async { void moveToTrash(BuildContext context, PresentationEmail email) async {
final accountId = mailboxDashBoardController.accountId.value; final accountId = mailboxDashBoardController.accountId.value;
final trashMailboxId = mailboxDashBoardController.getMailboxIdByRole(PresentationMailbox.roleTrash); final trashMailboxId = mailboxDashBoardController.getMailboxIdByRole(PresentationMailbox.roleTrash);
final currentMailbox = getMailboxContain(email);
if (accountId != null && currentMailbox != null && trashMailboxId != null) { if (accountId != null && currentMailbox != null && trashMailboxId != null) {
_moveToTrashAction(context, accountId, MoveToMailboxRequest( _moveToTrashAction(context, accountId, MoveToMailboxRequest(
[email.id], [email.id],
currentMailbox!.id, currentMailbox.id,
trashMailboxId, trashMailboxId,
MoveAction.moving, MoveAction.moving,
EmailActionType.moveToTrash) EmailActionType.moveToTrash)
@@ -523,11 +528,12 @@ class EmailController extends BaseController with AppLoaderMixin {
void moveToSpam(BuildContext context, PresentationEmail email) async { void moveToSpam(BuildContext context, PresentationEmail email) async {
final accountId = mailboxDashBoardController.accountId.value; final accountId = mailboxDashBoardController.accountId.value;
final spamMailboxId = mailboxDashBoardController.getMailboxIdByRole(PresentationMailbox.roleSpam); final spamMailboxId = mailboxDashBoardController.getMailboxIdByRole(PresentationMailbox.roleSpam);
final currentMailbox = getMailboxContain(email);
if (accountId != null && currentMailbox != null && spamMailboxId != null) { if (accountId != null && currentMailbox != null && spamMailboxId != null) {
_moveToSpamAction(context, accountId, MoveToMailboxRequest( _moveToSpamAction(context, accountId, MoveToMailboxRequest(
[email.id], [email.id],
currentMailbox!.id, currentMailbox.id,
spamMailboxId, spamMailboxId,
MoveAction.moving, MoveAction.moving,
EmailActionType.moveToSpam) EmailActionType.moveToSpam)
@@ -558,7 +564,7 @@ class EmailController extends BaseController with AppLoaderMixin {
void markAsStarEmail(PresentationEmail presentationEmail, MarkStarAction markStarAction) async { void markAsStarEmail(PresentationEmail presentationEmail, MarkStarAction markStarAction) async {
final accountId = mailboxDashBoardController.accountId.value; final accountId = mailboxDashBoardController.accountId.value;
final mailboxCurrent = mailboxDashBoardController.selectedMailbox.value; final mailboxCurrent = getMailboxContain(presentationEmail);
if (accountId != null && mailboxCurrent != null) { if (accountId != null && mailboxCurrent != null) {
consumeState(_markAsStarEmailInteractor.execute(accountId, presentationEmail.toEmail(), markStarAction)); consumeState(_markAsStarEmailInteractor.execute(accountId, presentationEmail.toEmail(), markStarAction));
} }
@@ -127,9 +127,9 @@ class EmailView extends GetWidget<EmailController> with NetworkConnectionMixin {
padding: const EdgeInsets.only(top: 6), padding: const EdgeInsets.only(top: 6),
child: AppBarMailWidgetBuilder( child: AppBarMailWidgetBuilder(
controller.currentEmail, controller.currentEmail,
currentMailbox: controller.mailboxDashBoardController.searchController.isSearchEmailRunning currentMailbox: controller.currentEmail != null
? controller.currentEmail?.findMailboxContain(controller.mailboxDashBoardController.mapMailbox) ? controller.getMailboxContain(controller.currentEmail!)
: controller.currentMailbox, : null,
isSearchIsRunning: controller.mailboxDashBoardController.searchController.isSearchEmailRunning, isSearchIsRunning: controller.mailboxDashBoardController.searchController.isSearchEmailRunning,
onBackActionClick: () => controller.closeEmailView(context), onBackActionClick: () => controller.closeEmailView(context),
onEmailActionClick: (email, action) => onEmailActionClick: (email, action) =>
@@ -600,12 +600,14 @@ class EmailView extends GetWidget<EmailController> with NetworkConnectionMixin {
} }
Widget _markAsEmailSpamOrUnSpamAction(BuildContext context, PresentationEmail email) { Widget _markAsEmailSpamOrUnSpamAction(BuildContext context, PresentationEmail email) {
final currentMailbox = controller.getMailboxContain(email);
return (EmailActionCupertinoActionSheetActionBuilder( return (EmailActionCupertinoActionSheetActionBuilder(
const Key('mark_as_spam_or_un_spam_action'), const Key('mark_as_spam_or_un_spam_action'),
SvgPicture.asset( SvgPicture.asset(
controller.currentMailbox?.isSpam == true ? imagePaths.icNotSpam : imagePaths.icSpam, currentMailbox?.isSpam == true ? imagePaths.icNotSpam : imagePaths.icSpam,
width: 28, height: 28, fit: BoxFit.fill, color: AppColor.colorTextButton), width: 28, height: 28, fit: BoxFit.fill, color: AppColor.colorTextButton),
controller.currentMailbox?.isSpam == true currentMailbox?.isSpam == true
? AppLocalizations.of(context).remove_from_spam ? AppLocalizations.of(context).remove_from_spam
: AppLocalizations.of(context).mark_as_spam, : AppLocalizations.of(context).mark_as_spam,
email, email,
@@ -616,7 +618,7 @@ class EmailView extends GetWidget<EmailController> with NetworkConnectionMixin {
? const EdgeInsets.only(right: 12) ? const EdgeInsets.only(right: 12)
: EdgeInsets.zero) : EdgeInsets.zero)
..onActionClick((email) => controller.handleEmailAction(context, email, ..onActionClick((email) => controller.handleEmailAction(context, email,
controller.currentMailbox?.isSpam == true ? EmailActionType.unSpam : EmailActionType.moveToSpam))) currentMailbox?.isSpam == true ? EmailActionType.unSpam : EmailActionType.moveToSpam)))
.build(); .build();
} }