tf-1946 add swipe to thread

tf-1946 add swipe to thread

tf-1946 fix duplicate import and change MarkReadAction

(cherry picked from commit 3fa17e200b972c3dd81ae297f19fd7b736f3845a)
This commit is contained in:
hieubt
2023-08-28 10:21:56 +07:00
committed by Dat Vu
parent 20c95caf0e
commit 852599856d
11 changed files with 160 additions and 27 deletions
@@ -30,6 +30,8 @@ import 'package:tmail_ui_user/features/composer/domain/state/save_email_as_draft
import 'package:tmail_ui_user/features/composer/domain/state/send_email_state.dart';
import 'package:tmail_ui_user/features/composer/domain/state/update_email_drafts_state.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/send_email_interactor.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/store_sending_email_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';
@@ -339,6 +341,8 @@ class MailboxDashBoardController extends ReloadableController {
_handleUpdateSendingEmailSuccess(success);
} else if (success is EmptySpamFolderSuccess) {
_emptySpamFolderSuccess(success);
} else if (success is MarkAsEmailReadSuccess) {
_markAsReadEmailSuccess(success);
}
}
@@ -663,13 +667,14 @@ class MailboxDashBoardController extends ReloadableController {
}
}
void markAsEmailRead(PresentationEmail presentationEmail, ReadActions readActions) async {
void markAsEmailRead(PresentationEmail presentationEmail, ReadActions readActions, MarkReadAction markReadAction) async {
if (accountId.value != null && sessionCurrent != null) {
consumeState(_markAsEmailReadInteractor.execute(
sessionCurrent!,
accountId.value!,
presentationEmail.toEmail(),
readActions));
readActions,
markReadAction));
}
}
@@ -721,6 +726,39 @@ class MailboxDashBoardController extends ReloadableController {
}
}
void _markAsReadEmailSuccess(Success success) {
ReadActions? readActions;
MarkReadAction? markReadAction;
PresentationEmail? presentationEmail;
if (success is MarkAsEmailReadSuccess) {
readActions = success.readActions;
markReadAction = success.markReadAction;
presentationEmail = success.updatedEmail.toPresentationEmail();
}
if (readActions != null && currentContext != null && currentOverlayContext != null && markReadAction == MarkReadAction.swipeOnThread) {
final message = readActions == ReadActions.markAsUnread
? AppLocalizations.of(currentContext!).markedSingleMessageToast(AppLocalizations.of(currentContext!).unread.toLowerCase())
: AppLocalizations.of(currentContext!).markedSingleMessageToast(AppLocalizations.of(currentContext!).read.toLowerCase());
final undoAction = readActions == ReadActions.markAsUnread ? ReadActions.markAsRead : ReadActions.markAsUnread;
_appToast.showToastMessage(
currentOverlayContext!,
message,
actionName: AppLocalizations.of(currentContext!).undo,
onActionClick: () {
markAsEmailRead(presentationEmail!, undoAction, MarkReadAction.undo);
},
leadingSVGIcon: _imagePaths.icToastSuccessMessage,
backgroundColor: AppColor.toastSuccessBackgroundColor,
textColor: Colors.white,
actionIcon: SvgPicture.asset(_imagePaths.icUndo),
);
}
}
void markAsStarSelectedMultipleEmail(List<PresentationEmail> listPresentationEmail, MarkStarAction markStarAction) {
final listEmail = listPresentationEmail
.map((presentationEmail) => presentationEmail.toEmail())