TF-3385 Update mark as read and star

This commit is contained in:
DatDang
2024-12-31 10:12:43 +07:00
committed by Dat H. Pham
parent a94513efb4
commit 8f5168ec6b
24 changed files with 521 additions and 32 deletions
@@ -33,6 +33,8 @@ import 'package:tmail_ui_user/features/composer/presentation/extensions/prefix_e
import 'package:tmail_ui_user/features/contact/presentation/model/contact_arguments.dart';
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart';
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_star_state.dart';
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart';
import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.dart';
@@ -44,6 +46,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all
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/save_recent_search_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_current_emails_flags_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.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/email_sort_order_type.dart';
@@ -60,6 +63,8 @@ import 'package:tmail_ui_user/features/search/email/presentation/model/search_mo
import 'package:tmail_ui_user/features/search/email/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/search_query.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/search_email_state.dart';
import 'package:tmail_ui_user/features/thread/domain/state/search_more_email_state.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/search_email_interactor.dart';
@@ -260,6 +265,41 @@ class SearchEmailController extends BaseController
}
},
);
ever(mailboxDashBoardController.viewState, (viewState) {
final reactionState = viewState.getOrElse(() => UIState.idle);
if (reactionState is MarkAsEmailReadSuccess) {
mailboxDashBoardController.updateEmailFlagByEmailIds(
[reactionState.emailId],
readAction: reactionState.readActions,
);
} else if (reactionState is MarkAsMultipleEmailReadAllSuccess) {
mailboxDashBoardController.updateEmailFlagByEmailIds(
reactionState.emailIds,
readAction: reactionState.readActions,
);
} else if (reactionState is MarkAsMultipleEmailReadHasSomeEmailFailure) {
mailboxDashBoardController.updateEmailFlagByEmailIds(
reactionState.successEmailIds,
readAction: reactionState.readActions,
);
} else if (reactionState is MarkAsStarEmailSuccess) {
mailboxDashBoardController.updateEmailFlagByEmailIds(
[reactionState.emailId],
markStarAction: reactionState.markStarAction,
);
} else if (reactionState is MarkAsStarMultipleEmailAllSuccess) {
mailboxDashBoardController.updateEmailFlagByEmailIds(
reactionState.emailIds,
markStarAction: reactionState.markStarAction,
);
} else if (reactionState is MarkAsStarMultipleEmailHasSomeEmailFailure) {
mailboxDashBoardController.updateEmailFlagByEmailIds(
reactionState.successEmailIds,
markStarAction: reactionState.markStarAction,
);
}
});
}
void _refreshEmailChanges({jmap.State? newState}) {
@@ -33,6 +33,7 @@ import 'package:tmail_ui_user/features/mailbox/domain/model/subscribe_request.da
import 'package:tmail_ui_user/features/mailbox/domain/state/create_new_mailbox_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/delete_multiple_mailbox_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/get_all_mailboxes_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/state/move_mailbox_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/refresh_changes_all_mailboxes_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/rename_mailbox_state.dart';
@@ -185,6 +186,18 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
_refreshMailboxChanges(newState: action.newState);
}
});
ever(dashboardController.viewState, (viewState) {
final reactionState = viewState.getOrElse(() => UIState.idle);
if (reactionState is MarkAsMailboxReadAllSuccess) {
clearUnreadCount(reactionState.mailboxId);
} else if (reactionState is MarkAsMailboxReadHasSomeEmailFailure) {
updateUnreadCountOfMailboxById(
reactionState.mailboxId,
unreadChanges: -reactionState.countEmailsRead,
);
}
});
}
void _getAllMailboxAction() {