TF-1813 Implement GetAllSendingEmails for domain and data layer

(cherry picked from commit 35fb38a1ed860cfa65ee57ec6d1e5e715fb1b7a7)
This commit is contained in:
dab246
2023-06-01 14:03:46 +07:00
committed by Dat Vu
parent 8756c5fefb
commit cbf770cc08
9 changed files with 113 additions and 0 deletions
@@ -0,0 +1,17 @@
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/composer/domain/model/sending_email.dart';
import 'package:tmail_ui_user/features/email/data/datasource_impl/email_hive_cache_datasource_impl.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/repository/sending_queue_repository.dart';
class SendingQueueRepositoryImpl extends SendingQueueRepository {
final EmailHiveCacheDataSourceImpl _emailHiveCacheDataSourceImpl;
SendingQueueRepositoryImpl(this._emailHiveCacheDataSourceImpl);
@override
Future<List<SendingEmail>> getAllSendingEmails(AccountId accountId, UserName userName) {
return _emailHiveCacheDataSourceImpl.getAllSendingEmails(accountId, userName);
}
}
@@ -0,0 +1,8 @@
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/composer/domain/model/sending_email.dart';
abstract class SendingQueueRepository {
Future<List<SendingEmail>> getAllSendingEmails(AccountId accountId, UserName userName);
}
@@ -0,0 +1,24 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:tmail_ui_user/features/composer/domain/model/sending_email.dart';
class GetAllSendingEmailLoading extends UIState {}
class GetAllSendingEmailSuccess extends UIState {
final List<SendingEmail> sendingEmails;
GetAllSendingEmailSuccess(this.sendingEmails);
@override
List<Object?> get props => [sendingEmails];
}
class GetAllSendingEmailFailure extends FeatureFailure {
GetAllSendingEmailFailure(dynamic exception) : super(exception: exception);
@override
List<Object?> get props => [exception];
}
@@ -0,0 +1,23 @@
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/sending_queue/domain/repository/sending_queue_repository.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/state/get_all_sending_email_state.dart';
class GetAllSendingEmailInteractor {
final SendingQueueRepository _sendingQueueRepository;
GetAllSendingEmailInteractor(this._sendingQueueRepository);
Stream<Either<Failure, Success>> execute(AccountId accountId, UserName userName) async* {
try {
yield Right<Failure, Success>(GetAllSendingEmailLoading());
final sendingEmails = await _sendingQueueRepository.getAllSendingEmails(accountId, userName);
yield Right<Failure, Success>(GetAllSendingEmailSuccess(sendingEmails));
} catch (e) {
yield Left<Failure, Success>(GetAllSendingEmailFailure(e));
}
}
}