TF-1915 SendingState of SendingEmail updates according to the work done in WorkManager when network connectivity is restored

(cherry picked from commit 744c8bc8dc8a82cb3afb75aead5a744adaae5501)
This commit is contained in:
dab246
2023-06-09 15:23:22 +07:00
committed by Dat Vu
parent 20168f5e8d
commit 6aa87ff012
51 changed files with 523 additions and 374 deletions
@@ -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/email/domain/state/delete_sending_email_state.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/repository/sending_queue_repository.dart';
class DeleteSendingEmailInteractor {
final SendingQueueRepository _sendingQueueRepository;
DeleteSendingEmailInteractor(this._sendingQueueRepository);
Stream<Either<Failure, Success>> execute(AccountId accountId, UserName userName, String sendingId, {bool needToReopen = false}) async* {
try {
yield Right<Failure, Success>(DeleteSendingEmailLoading());
await _sendingQueueRepository.deleteSendingEmail(accountId, userName, sendingId, needToReopen: needToReopen);
yield Right<Failure, Success>(DeleteSendingEmailSuccess());
} catch (e) {
yield Left<Failure, Success>(DeleteSendingEmailFailure(e));
}
}
}
@@ -0,0 +1,28 @@
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/email/domain/state/store_sending_email_state.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/model/sending_email.dart';
import 'package:tmail_ui_user/features/sending_queue/domain/repository/sending_queue_repository.dart';
class StoreSendingEmailInteractor {
final SendingQueueRepository _sendingQueueRepository;
StoreSendingEmailInteractor(this._sendingQueueRepository);
Stream<Either<Failure, Success>> execute(
AccountId accountId,
UserName userName,
SendingEmail sendingEmail,
) async* {
try {
yield Right<Failure, Success>(StoreSendingEmailLoading());
final storedSendingEmail = await _sendingQueueRepository.storeSendingEmail(accountId, userName, sendingEmail);
yield Right<Failure, Success>(StoreSendingEmailSuccess(storedSendingEmail));
} catch (e) {
yield Left<Failure, Success>(StoreSendingEmailFailure(e));
}
}
}
@@ -0,0 +1,29 @@
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/model/sending_email.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/update_sending_email_state.dart';
class UpdateSendingEmailInteractor {
final SendingQueueRepository _sendingQueueRepository;
UpdateSendingEmailInteractor(this._sendingQueueRepository);
Stream<Either<Failure, Success>> execute(
AccountId accountId,
UserName userName,
SendingEmail newSendingEmail,
{bool needToReopen = false}
) async* {
try {
yield Right<Failure, Success>(UpdateSendingEmailLoading());
final storedSendingEmail = await _sendingQueueRepository.updateSendingEmail(accountId, userName, newSendingEmail, needToReopen: needToReopen);
yield Right<Failure, Success>(UpdateSendingEmailSuccess(storedSendingEmail));
} catch (e) {
yield Left<Failure, Success>(UpdateSendingEmailFailure(e));
}
}
}