TF-3385 Fix mark as read not work properly

This commit is contained in:
DatDang
2025-01-03 15:12:53 +07:00
committed by Dat H. Pham
parent 6396b50bc9
commit 3541ac085e
6 changed files with 50 additions and 29 deletions
@@ -9,16 +9,16 @@ class LoadingMarkAsMultipleEmailReadAll extends UIState {}
class MarkAsMultipleEmailReadAllSuccess extends UIState {
final List<EmailId> emailIds;
final ReadActions readActions;
final MailboxId? mailboxId;
final Map<MailboxId, List<EmailId>> markSuccessEmailIdsByMailboxId;
MarkAsMultipleEmailReadAllSuccess(
this.emailIds,
this.readActions,
this.mailboxId,
this.markSuccessEmailIdsByMailboxId,
);
@override
List<Object?> get props => [emailIds, readActions, mailboxId];
List<Object?> get props => [emailIds, readActions, markSuccessEmailIdsByMailboxId];
}
class MarkAsMultipleEmailReadAllFailure extends FeatureFailure {
@@ -33,16 +33,16 @@ class MarkAsMultipleEmailReadAllFailure extends FeatureFailure {
class MarkAsMultipleEmailReadHasSomeEmailFailure extends UIState {
final List<EmailId> successEmailIds;
final ReadActions readActions;
final MailboxId? mailboxId;
final Map<MailboxId, List<EmailId>> markSuccessEmailIdsByMailboxId;
MarkAsMultipleEmailReadHasSomeEmailFailure(
this.successEmailIds,
this.readActions,
this.mailboxId,
this.markSuccessEmailIdsByMailboxId,
);
@override
List<Object?> get props => [successEmailIds, readActions, mailboxId];
List<Object?> get props => [successEmailIds, readActions, markSuccessEmailIdsByMailboxId];
}
class MarkAsMultipleEmailReadFailure extends FeatureFailure {
@@ -19,7 +19,7 @@ class MarkAsMultipleEmailReadInteractor {
AccountId accountId,
List<EmailId> emailIds,
ReadActions readAction,
MailboxId? mailboxId,
Map<MailboxId, List<EmailId>> emailIdsByMailboxId,
) async* {
try {
yield Right(LoadingMarkAsMultipleEmailReadAll());
@@ -30,12 +30,18 @@ class MarkAsMultipleEmailReadInteractor {
emailIds,
readAction,
);
final markSuccessEmailIdsByMailboxId = emailIdsByMailboxId.map(
(key, value) => MapEntry(
key,
value.where(result.emailIdsSuccess.contains).toList(),
),
);
if (emailIds.length == result.emailIdsSuccess.length) {
yield Right(MarkAsMultipleEmailReadAllSuccess(
result.emailIdsSuccess,
readAction,
mailboxId,
markSuccessEmailIdsByMailboxId,
));
} else if (result.emailIdsSuccess.isEmpty) {
yield Left(MarkAsMultipleEmailReadAllFailure(readAction));
@@ -43,7 +49,7 @@ class MarkAsMultipleEmailReadInteractor {
yield Right(MarkAsMultipleEmailReadHasSomeEmailFailure(
result.emailIdsSuccess,
readAction,
mailboxId,
markSuccessEmailIdsByMailboxId,
));
}
} catch (e) {