TF-1933 Add GetStoredSendingEmail interactor

(cherry picked from commit bcf27cbaa5fbc62767a82e658e543339c5197991)
This commit is contained in:
dab246
2023-06-27 21:50:44 +07:00
committed by Dat Vu
parent 04a8274b49
commit 2fcfc4ff0b
8 changed files with 108 additions and 6 deletions
@@ -39,4 +39,9 @@ class SendingQueueRepositoryImpl extends SendingQueueRepository {
Future<void> deleteMultipleSendingEmail(AccountId accountId, UserName userName, List<String> sendingIds) {
return _emailHiveCacheDataSourceImpl.deleteMultipleSendingEmail(accountId, userName, sendingIds);
}
@override
Future<SendingEmail> getStoredSendingEmail(AccountId accountId, UserName userName, String sendingId) {
return _emailHiveCacheDataSourceImpl.getStoredSendingEmail(accountId, userName, sendingId);
}
}
@@ -15,4 +15,6 @@ abstract class SendingQueueRepository {
Future<SendingEmail> updateSendingEmail(AccountId accountId, UserName userName, SendingEmail newSendingEmail);
Future<List<SendingEmail>> updateMultipleSendingEmail(AccountId accountId, UserName userName, List<SendingEmail> newSendingEmails);
Future<SendingEmail> getStoredSendingEmail(AccountId accountId, UserName userName, String sendingId);
}
@@ -0,0 +1,40 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/user_name.dart';
import 'package:tmail_ui_user/features/offline_mode/model/sending_state.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/model/sending_email.dart';
class GetStoredSendingEmailLoading extends UIState {}
class GetStoredSendingEmailSuccess extends UIState {
final SendingEmail sendingEmail;
final AccountId accountId;
final UserName userName;
final SendingState sendingState;
GetStoredSendingEmailSuccess(
this.sendingEmail,
this.accountId,
this.userName,
this.sendingState
);
@override
List<Object?> get props => [
sendingEmail,
accountId,
userName,
sendingState
];
}
class GetStoredSendingEmailFailure extends FeatureFailure {
GetStoredSendingEmailFailure(dynamic exception) : super(exception: exception);
@override
List<Object?> get props => [exception];
}
@@ -0,0 +1,36 @@
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/user_name.dart';
import 'package:tmail_ui_user/features/offline_mode/model/sending_state.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/repository/sending_queue_repository.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/state/get_stored_sending_email_state.dart';
class GetStoredSendingEmailInteractor {
final SendingQueueRepository _sendingQueueRepository;
GetStoredSendingEmailInteractor(this._sendingQueueRepository);
Stream<Either<Failure, Success>> execute(
AccountId accountId,
UserName userName,
String sendingId,
SendingState sendingState
) async* {
try {
yield Right<Failure, Success>(GetStoredSendingEmailLoading());
final sendingEmail = await _sendingQueueRepository.getStoredSendingEmail(accountId, userName, sendingId);
yield Right<Failure, Success>(
GetStoredSendingEmailSuccess(
sendingEmail,
accountId,
userName,
sendingState
)
);
} catch (e) {
yield Left<Failure, Success>(GetStoredSendingEmailFailure(e));
}
}
}