TF-3385 Update mark as read and star
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/email/read_actions.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart';
|
||||
|
||||
@@ -8,15 +9,17 @@ class MarkAsEmailReadSuccess extends UIState {
|
||||
final EmailId emailId;
|
||||
final ReadActions readActions;
|
||||
final MarkReadAction markReadAction;
|
||||
final MailboxId? mailboxId;
|
||||
|
||||
MarkAsEmailReadSuccess(
|
||||
this.emailId,
|
||||
this.readActions,
|
||||
this.markReadAction,
|
||||
this.mailboxId,
|
||||
);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [emailId, readActions, markReadAction];
|
||||
List<Object?> get props => [emailId, readActions, markReadAction, mailboxId];
|
||||
}
|
||||
|
||||
class MarkAsEmailReadFailure extends FeatureFailure {
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:model/email/mark_star_action.dart';
|
||||
|
||||
class MarkAsStarEmailSuccess extends UIState {
|
||||
final MarkStarAction markStarAction;
|
||||
final EmailId emailId;
|
||||
|
||||
MarkAsStarEmailSuccess(this.markStarAction);
|
||||
MarkAsStarEmailSuccess(this.markStarAction, this.emailId);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [markStarAction];
|
||||
List<Object?> get props => [markStarAction, emailId];
|
||||
}
|
||||
|
||||
class MarkAsStarEmailFailure extends FeatureFailure {
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:dartz/dartz.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/email/read_actions.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
|
||||
@@ -20,6 +21,7 @@ class MarkAsEmailReadInteractor {
|
||||
EmailId emailId,
|
||||
ReadActions readAction,
|
||||
MarkReadAction markReadAction,
|
||||
MailboxId? mailboxId,
|
||||
) async* {
|
||||
try {
|
||||
final result = await _emailRepository.markAsRead(
|
||||
@@ -36,7 +38,8 @@ class MarkAsEmailReadInteractor {
|
||||
result.emailIdsSuccess.first,
|
||||
readAction,
|
||||
markReadAction,
|
||||
));
|
||||
mailboxId,
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
yield Left(MarkAsEmailReadFailure(readAction, exception: e));
|
||||
|
||||
@@ -26,7 +26,7 @@ class MarkAsStarEmailInteractor {
|
||||
[emailId],
|
||||
markStarAction,
|
||||
);
|
||||
yield Right(MarkAsStarEmailSuccess(markStarAction));
|
||||
yield Right(MarkAsStarEmailSuccess(markStarAction, emailId));
|
||||
} catch (e) {
|
||||
yield Left(MarkAsStarEmailFailure(markStarAction, exception: e));
|
||||
}
|
||||
|
||||
@@ -96,6 +96,7 @@ import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.d
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.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/download/download_task_state.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart';
|
||||
@@ -663,11 +664,18 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
presentationEmail.id!,
|
||||
readActions,
|
||||
markReadAction,
|
||||
presentationEmail.mailboxContain?.mailboxId,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
void _handleMarkAsEmailReadCompleted(ReadActions readActions) {
|
||||
if (_currentEmailId != null) {
|
||||
mailboxDashBoardController.updateEmailFlagByEmailIds(
|
||||
[_currentEmailId!],
|
||||
readAction: ReadActions.markAsRead,
|
||||
);
|
||||
}
|
||||
if (readActions == ReadActions.markAsUnread) {
|
||||
closeEmailView(context: currentContext);
|
||||
}
|
||||
@@ -1083,7 +1091,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
|
||||
void _markAsEmailStarSuccess(MarkAsStarEmailSuccess success) {
|
||||
final newEmail = currentEmail?.updateKeywords({
|
||||
KeyWordIdentifier.emailFlagged: true,
|
||||
KeyWordIdentifier.emailFlagged: success.markStarAction == MarkStarAction.markStar,
|
||||
});
|
||||
mailboxDashBoardController.setSelectedEmail(newEmail);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user