TF-3385 Update mark as read and star
This commit is contained in:
@@ -29,6 +29,7 @@ abstract class ThreadRepository {
|
||||
Properties? propertiesCreated,
|
||||
Properties? propertiesUpdated,
|
||||
bool getLatestChanges = true,
|
||||
bool skipCache = false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -1,20 +1,24 @@
|
||||
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';
|
||||
|
||||
class LoadingMarkAsMultipleEmailReadAll extends UIState {}
|
||||
|
||||
class MarkAsMultipleEmailReadAllSuccess extends UIState {
|
||||
final int countMarkAsReadSuccess;
|
||||
final List<EmailId> emailIds;
|
||||
final ReadActions readActions;
|
||||
final MailboxId? mailboxId;
|
||||
|
||||
MarkAsMultipleEmailReadAllSuccess(
|
||||
this.countMarkAsReadSuccess,
|
||||
this.readActions,
|
||||
this.emailIds,
|
||||
this.readActions,
|
||||
this.mailboxId,
|
||||
);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [countMarkAsReadSuccess, readActions];
|
||||
List<Object?> get props => [emailIds, readActions, mailboxId];
|
||||
}
|
||||
|
||||
class MarkAsMultipleEmailReadAllFailure extends FeatureFailure {
|
||||
@@ -27,16 +31,18 @@ class MarkAsMultipleEmailReadAllFailure extends FeatureFailure {
|
||||
}
|
||||
|
||||
class MarkAsMultipleEmailReadHasSomeEmailFailure extends UIState {
|
||||
final int countMarkAsReadSuccess;
|
||||
final List<EmailId> successEmailIds;
|
||||
final ReadActions readActions;
|
||||
final MailboxId? mailboxId;
|
||||
|
||||
MarkAsMultipleEmailReadHasSomeEmailFailure(
|
||||
this.countMarkAsReadSuccess,
|
||||
this.successEmailIds,
|
||||
this.readActions,
|
||||
this.mailboxId,
|
||||
);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [countMarkAsReadSuccess, readActions];
|
||||
List<Object?> get props => [successEmailIds, readActions, mailboxId];
|
||||
}
|
||||
|
||||
class MarkAsMultipleEmailReadFailure extends FeatureFailure {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
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 LoadingMarkAsStarMultipleEmailAll extends UIState {}
|
||||
@@ -7,14 +8,16 @@ class LoadingMarkAsStarMultipleEmailAll extends UIState {}
|
||||
class MarkAsStarMultipleEmailAllSuccess extends UIState {
|
||||
final int countMarkStarSuccess;
|
||||
final MarkStarAction markStarAction;
|
||||
final List<EmailId> emailIds;
|
||||
|
||||
MarkAsStarMultipleEmailAllSuccess(
|
||||
this.countMarkStarSuccess,
|
||||
this.markStarAction,
|
||||
this.emailIds,
|
||||
);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [countMarkStarSuccess, markStarAction];
|
||||
List<Object?> get props => [countMarkStarSuccess, markStarAction, emailIds];
|
||||
}
|
||||
|
||||
class MarkAsStarMultipleEmailAllFailure extends FeatureFailure {
|
||||
@@ -29,14 +32,16 @@ class MarkAsStarMultipleEmailAllFailure extends FeatureFailure {
|
||||
class MarkAsStarMultipleEmailHasSomeEmailFailure extends UIState {
|
||||
final int countMarkStarSuccess;
|
||||
final MarkStarAction markStarAction;
|
||||
final List<EmailId> successEmailIds;
|
||||
|
||||
MarkAsStarMultipleEmailHasSomeEmailFailure(
|
||||
this.countMarkStarSuccess,
|
||||
this.markStarAction,
|
||||
this.successEmailIds,
|
||||
);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [countMarkStarSuccess, markStarAction];
|
||||
List<Object?> get props => [countMarkStarSuccess, markStarAction, successEmailIds];
|
||||
}
|
||||
|
||||
class MarkAsStarMultipleEmailFailure extends FeatureFailure {
|
||||
|
||||
@@ -27,6 +27,7 @@ class GetEmailsInMailboxInteractor {
|
||||
Properties? propertiesCreated,
|
||||
Properties? propertiesUpdated,
|
||||
bool getLatestChanges = true,
|
||||
bool skipCache = false,
|
||||
}
|
||||
) async* {
|
||||
try {
|
||||
@@ -41,7 +42,8 @@ class GetEmailsInMailboxInteractor {
|
||||
emailFilter: emailFilter,
|
||||
propertiesCreated: propertiesCreated,
|
||||
propertiesUpdated: propertiesUpdated,
|
||||
getLatestChanges: getLatestChanges)
|
||||
getLatestChanges: getLatestChanges,
|
||||
skipCache: skipCache)
|
||||
.map((emailResponse) => _toGetEmailState(
|
||||
emailResponse: emailResponse,
|
||||
currentMailboxId: emailFilter?.mailboxId
|
||||
|
||||
@@ -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/model.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/mark_as_multiple_email_read_state.dart';
|
||||
@@ -17,7 +18,8 @@ class MarkAsMultipleEmailReadInteractor {
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<EmailId> emailIds,
|
||||
ReadActions readAction
|
||||
ReadActions readAction,
|
||||
MailboxId? mailboxId,
|
||||
) async* {
|
||||
try {
|
||||
yield Right(LoadingMarkAsMultipleEmailReadAll());
|
||||
@@ -31,15 +33,17 @@ class MarkAsMultipleEmailReadInteractor {
|
||||
|
||||
if (emailIds.length == result.emailIdsSuccess.length) {
|
||||
yield Right(MarkAsMultipleEmailReadAllSuccess(
|
||||
result.emailIdsSuccess.length,
|
||||
readAction,
|
||||
result.emailIdsSuccess,
|
||||
readAction,
|
||||
mailboxId,
|
||||
));
|
||||
} else if (result.emailIdsSuccess.isEmpty) {
|
||||
yield Left(MarkAsMultipleEmailReadAllFailure(readAction));
|
||||
} else {
|
||||
yield Right(MarkAsMultipleEmailReadHasSomeEmailFailure(
|
||||
result.emailIdsSuccess.length,
|
||||
readAction,
|
||||
result.emailIdsSuccess,
|
||||
readAction,
|
||||
mailboxId,
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
@@ -26,15 +26,17 @@ class MarkAsStarMultipleEmailInteractor {
|
||||
|
||||
if (emailIds.length == result.emailIdsSuccess.length) {
|
||||
yield Right(MarkAsStarMultipleEmailAllSuccess(
|
||||
emailIds.length,
|
||||
markStarAction,
|
||||
emailIds.length,
|
||||
markStarAction,
|
||||
result.emailIdsSuccess,
|
||||
));
|
||||
} else if (result.emailIdsSuccess.isEmpty) {
|
||||
yield Left(MarkAsStarMultipleEmailAllFailure(markStarAction));
|
||||
} else {
|
||||
yield Right(MarkAsStarMultipleEmailHasSomeEmailFailure(
|
||||
result.emailIdsSuccess.length,
|
||||
markStarAction,
|
||||
result.emailIdsSuccess.length,
|
||||
markStarAction,
|
||||
result.emailIdsSuccess,
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user