TF-3715 Thread Detail create resuable actions

TF-3715 Thread Detail refactor actions for expanded email view

TF-3715 Thread Detail apply actions for collapsed email view

TF-3715 Thread Detail fix unit tests

TF-3715 Thread Detail add await for _getEmailContent in composer

TF-3715 Thread Detail remove unused emailLoaded in ThreadDetailAppBar

TF-3715 Thread Detail hide print action when isMobile

TF-3715 Thread Detail allow mark as read in EmailActionReactor

TF-3715 Thread Detail fix loadMoreThreadDetailEmails unit test

TF-3715 Thread Detail fix action small tap region

TF-3715 Thread Detail fix cannot permanent delete email

TF-3715 Thread Detail prevent close when move email

TF-3715 Thread Detail fix refresh when mark star selected collapsed email

TF-3715 Thread Detail update print action display logic

TF-3715 Thread Detail fix duplicate mark star in app bar

TF-3715 Thread Detail create new transformer for reply forward empty content email

TF-3715 Thread Detail fix email not load after open multiple times

TF-3715 Thread Detail fix close when move expanded email

TF-3715 Thread Detail fix duplicate and missing actions

TF-3715 Thread Detail restore editAsNewEmail action to _getEmailContent in setupEmailContent

TF-3715 Thread Detail update print action name

TF-3715 Thread Detail handle move and delete email with 1 item in thread detail

TF-3715 Thread Detail fix tap outside to close context menu

TF-3715 Thread Detail fix create rule and compose from recipient info

TF-3715 Thread Detail handle move and delete email with 1 item in thread detail

TF-3715 Thread Detail Fix cannot create email rule

TF-3715 Thread Detail Fix crash composer

TF-3715 Thread Detail Fix cannot unsubscribe

TF-3715 Thread Detail Fix duplicate actions on single email

TF-3715 Thread Detail Fix refresh view when reply/forward

TF-3715 Thread Detail Revert old logic to _getEmailContent

TF-3715 Thread Detail Update specific cases for UpdatedEmailKeywordsAction

TF-3715 Thread Detail Fix concurrent modification during iteration

TF-3715 Thread Detail Fix unsubscribe for all thread detail emails

TF-3715 Thread Detail Remove unnecessary Future in reactor

TF-3715 Thread Detail Remove dependency from SingleEmailController

TF-3715 Thread Detail Apply individual list post and unsubscribe header

TF-3715 Thread Detail Fix unsubscribe collapsed email

TF-3715 Thread Detail Conditionally inject rule filter interactor
This commit is contained in:
DatDang
2025-05-16 15:37:07 +07:00
committed by Dat H. Pham
parent 421fa321ba
commit 8a2ea62987
38 changed files with 2135 additions and 715 deletions
@@ -0,0 +1,16 @@
import 'package:model/email/presentation_email.dart';
import 'package:model/extensions/presentation_email_extension.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
extension GetMailboxContainExtension on MailboxDashBoardController {
PresentationMailbox? getMailboxContain(PresentationEmail email) {
if (selectedMailbox.value == null) {
return email.findMailboxContain(mapMailboxById);
} else {
return searchController.isSearchEmailRunning
? email.findMailboxContain(mapMailboxById)
: selectedMailbox.value;
}
}
}
@@ -3,9 +3,9 @@ import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
import 'package:model/email/mark_star_action.dart';
import 'package:model/email/presentation_email.dart';
import 'package:model/email/read_actions.dart';
import 'package:model/extensions/presentation_email_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
import 'package:tmail_ui_user/features/thread_detail/presentation/action/thread_detail_ui_action.dart';
extension UpdateCurrentEmailsFlagsExtension on MailboxDashBoardController {
void updateEmailFlagByEmailIds(
@@ -76,23 +76,25 @@ extension UpdateCurrentEmailsFlagsExtension on MailboxDashBoardController {
}
void updateEmailAnswered(EmailId emailId) {
if (selectedEmail.value != null) {
final newEmail = selectedEmail.value!.updateKeywords({
KeyWordIdentifier.emailAnswered: true,
});
setSelectedEmail(newEmail);
}
dispatchThreadDetailUIAction(UpdatedEmailKeywordsAction(
emailId,
KeyWordIdentifier.emailAnswered,
true,
));
// Reset threadDetailUIAction
dispatchThreadDetailUIAction(ThreadDetailUIAction());
updateEmailFlagByEmailIds([emailId], markAsAnswered: true);
}
void updateEmailForwarded(EmailId emailId) {
if (selectedEmail.value != null) {
final newEmail = selectedEmail.value!.updateKeywords({
KeyWordIdentifier.emailForwarded: true,
});
setSelectedEmail(newEmail);
}
dispatchThreadDetailUIAction(UpdatedEmailKeywordsAction(
emailId,
KeyWordIdentifier.emailForwarded,
true,
));
// Reset threadDetailUIAction
dispatchThreadDetailUIAction(ThreadDetailUIAction());
updateEmailFlagByEmailIds([emailId], markAsForwarded: true);
}