TF-3334 Remove Email/get of mark as read & mark as star action
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/patch_object.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
||||
import 'package:model/extensions/keyword_identifier_extension.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
@@ -61,6 +62,31 @@ enum EventActionType {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
Map<KeyWordIdentifier, bool> getMapKeywords() {
|
||||
switch(this) {
|
||||
case EventActionType.yes:
|
||||
return {
|
||||
KeyWordIdentifierExtension.acceptedEventAttendance: true,
|
||||
KeyWordIdentifierExtension.tentativelyAcceptedEventAttendance: false,
|
||||
KeyWordIdentifierExtension.rejectedEventAttendance: false,
|
||||
};
|
||||
case EventActionType.maybe:
|
||||
return {
|
||||
KeyWordIdentifierExtension.acceptedEventAttendance: false,
|
||||
KeyWordIdentifierExtension.tentativelyAcceptedEventAttendance: true,
|
||||
KeyWordIdentifierExtension.rejectedEventAttendance: false,
|
||||
};
|
||||
case EventActionType.no:
|
||||
return {
|
||||
KeyWordIdentifierExtension.acceptedEventAttendance: false,
|
||||
KeyWordIdentifierExtension.tentativelyAcceptedEventAttendance: false,
|
||||
KeyWordIdentifierExtension.rejectedEventAttendance: true,
|
||||
};
|
||||
case EventActionType.mailToAttendees:
|
||||
return {};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class EventAction with EquatableMixin {
|
||||
|
||||
@@ -45,7 +45,12 @@ abstract class EmailRepository {
|
||||
}
|
||||
);
|
||||
|
||||
Future<List<Email>> markAsRead(Session session, AccountId accountId, List<Email> emails, ReadActions readActions);
|
||||
Future<List<EmailId>> markAsRead(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<EmailId> emailIds,
|
||||
ReadActions readActions,
|
||||
);
|
||||
|
||||
Future<List<DownloadTaskId>> downloadAttachments(
|
||||
List<Attachment> attachments,
|
||||
@@ -74,10 +79,10 @@ abstract class EmailRepository {
|
||||
|
||||
Future<List<EmailId>> moveToMailbox(Session session, AccountId accountId, MoveToMailboxRequest moveRequest);
|
||||
|
||||
Future<List<Email>> markAsStar(
|
||||
Future<List<EmailId>> markAsStar(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<Email> emails,
|
||||
List<EmailId> emailIds,
|
||||
MarkStarAction markStarAction
|
||||
);
|
||||
|
||||
@@ -147,7 +152,7 @@ abstract class EmailRepository {
|
||||
|
||||
Future<void> printEmail(EmailPrint emailPrint);
|
||||
|
||||
Future<Email> storeEventAttendanceStatus(
|
||||
Future<void> storeEventAttendanceStatus(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailId emailId,
|
||||
|
||||
@@ -7,12 +7,12 @@ import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart';
|
||||
|
||||
class MarkAsEmailReadSuccess extends UIActionState {
|
||||
final Email updatedEmail;
|
||||
final EmailId emailId;
|
||||
final ReadActions readActions;
|
||||
final MarkReadAction markReadAction;
|
||||
|
||||
MarkAsEmailReadSuccess(
|
||||
this.updatedEmail,
|
||||
this.emailId,
|
||||
this.readActions,
|
||||
this.markReadAction,
|
||||
{
|
||||
@@ -22,7 +22,7 @@ class MarkAsEmailReadSuccess extends UIActionState {
|
||||
) : super(currentEmailState, currentMailboxState);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [updatedEmail, readActions, markReadAction, ...super.props];
|
||||
List<Object?> get props => [emailId, readActions, markReadAction, ...super.props];
|
||||
}
|
||||
|
||||
class MarkAsEmailReadFailure extends FeatureFailure {
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:model/email/mark_star_action.dart';
|
||||
import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
|
||||
|
||||
class MarkAsStarEmailSuccess extends UIActionState {
|
||||
final Email updatedEmail;
|
||||
final MarkStarAction markStarAction;
|
||||
|
||||
MarkAsStarEmailSuccess(
|
||||
this.updatedEmail,
|
||||
this.markStarAction,
|
||||
{
|
||||
jmap.State? currentEmailState,
|
||||
@@ -18,7 +15,7 @@ class MarkAsStarEmailSuccess extends UIActionState {
|
||||
) : super(currentEmailState, currentMailboxState);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [updatedEmail, markStarAction, ...super.props];
|
||||
List<Object?> get props => [markStarAction, ...super.props];
|
||||
}
|
||||
|
||||
class MarkAsStarEmailFailure extends FeatureFailure {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/event_action.dart';
|
||||
|
||||
@@ -10,11 +9,9 @@ class StoreEventAttendanceStatusLoading extends LoadingState {}
|
||||
class StoreEventAttendanceStatusSuccess extends UIActionState {
|
||||
|
||||
final EventActionType eventActionType;
|
||||
final Email updatedEmail;
|
||||
|
||||
StoreEventAttendanceStatusSuccess(
|
||||
this.eventActionType,
|
||||
this.updatedEmail,
|
||||
{
|
||||
jmap.State? currentEmailState,
|
||||
jmap.State? currentMailboxState,
|
||||
@@ -24,7 +21,6 @@ class StoreEventAttendanceStatusSuccess extends UIActionState {
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
eventActionType,
|
||||
updatedEmail,
|
||||
...super.props];
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
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:model/model.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';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_state.dart';
|
||||
@@ -15,7 +16,13 @@ class MarkAsEmailReadInteractor {
|
||||
|
||||
MarkAsEmailReadInteractor(this._emailRepository, this._mailboxRepository);
|
||||
|
||||
Stream<Either<Failure, Success>> execute(Session session, AccountId accountId, Email email, ReadActions readAction, MarkReadAction markReadAction) async* {
|
||||
Stream<Either<Failure, Success>> execute(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailId emailId,
|
||||
ReadActions readAction,
|
||||
MarkReadAction markReadAction,
|
||||
) async* {
|
||||
try {
|
||||
final listState = await Future.wait([
|
||||
_mailboxRepository.getMailboxState( session,accountId),
|
||||
@@ -25,18 +32,20 @@ class MarkAsEmailReadInteractor {
|
||||
final currentMailboxState = listState.first;
|
||||
final currentEmailState = listState.last;
|
||||
|
||||
final result = await _emailRepository.markAsRead(session, accountId, [email], readAction);
|
||||
if (result.isNotEmpty) {
|
||||
final updatedEmail = email.updatedEmail(newKeywords: result.first.keywords);
|
||||
yield Right(MarkAsEmailReadSuccess(
|
||||
updatedEmail,
|
||||
readAction,
|
||||
markReadAction,
|
||||
currentEmailState: currentEmailState,
|
||||
currentMailboxState: currentMailboxState));
|
||||
} else {
|
||||
yield Left(MarkAsEmailReadFailure(readAction));
|
||||
}
|
||||
final result = await _emailRepository.markAsRead(
|
||||
session,
|
||||
accountId,
|
||||
[emailId],
|
||||
readAction,
|
||||
);
|
||||
|
||||
yield Right(MarkAsEmailReadSuccess(
|
||||
result.first,
|
||||
readAction,
|
||||
markReadAction,
|
||||
currentEmailState: currentEmailState,
|
||||
currentMailboxState: currentMailboxState,
|
||||
));
|
||||
} catch (e) {
|
||||
yield Left(MarkAsEmailReadFailure(readAction, exception: e));
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
@@ -12,19 +13,24 @@ class MarkAsStarEmailInteractor {
|
||||
|
||||
MarkAsStarEmailInteractor(this.emailRepository);
|
||||
|
||||
Stream<Either<Failure, Success>> execute(Session session, AccountId accountId, Email email, MarkStarAction markStarAction) async* {
|
||||
Stream<Either<Failure, Success>> execute(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailId emailId,
|
||||
MarkStarAction markStarAction,
|
||||
) async* {
|
||||
try {
|
||||
final currentEmailState = await emailRepository.getEmailState(session, accountId);
|
||||
final result = await emailRepository.markAsStar(session, accountId, [email], markStarAction);
|
||||
if (result.isNotEmpty) {
|
||||
final updatedEmail = email.updatedEmail(newKeywords: result.first.keywords);
|
||||
yield Right(MarkAsStarEmailSuccess(
|
||||
updatedEmail,
|
||||
markStarAction,
|
||||
currentEmailState: currentEmailState));
|
||||
} else {
|
||||
yield Left(MarkAsStarEmailFailure(markStarAction));
|
||||
}
|
||||
await emailRepository.markAsStar(
|
||||
session,
|
||||
accountId,
|
||||
[emailId],
|
||||
markStarAction,
|
||||
);
|
||||
yield Right(MarkAsStarEmailSuccess(
|
||||
markStarAction,
|
||||
currentEmailState: currentEmailState,
|
||||
));
|
||||
} catch (e) {
|
||||
yield Left(MarkAsStarEmailFailure(markStarAction, exception: e));
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ class StoreEventAttendanceStatusInteractor {
|
||||
|
||||
final currentEmailState = await _emailRepository.getEmailState(session, accountId);
|
||||
|
||||
final updatedEmail = await _emailRepository.storeEventAttendanceStatus(
|
||||
await _emailRepository.storeEventAttendanceStatus(
|
||||
session,
|
||||
accountId,
|
||||
emailId,
|
||||
@@ -32,7 +32,6 @@ class StoreEventAttendanceStatusInteractor {
|
||||
|
||||
yield Right(StoreEventAttendanceStatusSuccess(
|
||||
eventActionType,
|
||||
updatedEmail,
|
||||
currentEmailState: currentEmailState));
|
||||
} catch (e) {
|
||||
yield Left(StoreEventAttendanceStatusFailure(exception: e));
|
||||
|
||||
Reference in New Issue
Block a user