TF-2102 Add restore_deleted_message interactors
(cherry picked from commit ba81255c213c49ecce7afdeca25a5cd7657c3816)
This commit is contained in:
@@ -718,28 +718,28 @@ class EmailAPI with HandleSetErrorMixin {
|
||||
return emailRecoveryActionSetResponse!.created![restoredDeletedMessageRequest.createRequestId]!;
|
||||
}
|
||||
|
||||
Future<EmailRecoveryAction> getRestoredDeletedMessage(EmailRecoveryActionId emailRecoveryActionId) {
|
||||
Future<EmailRecoveryAction> getRestoredDeletedMessage(EmailRecoveryActionId emailRecoveryActionId) async {
|
||||
final processingInvocation = ProcessingInvocation();
|
||||
final requestBuilder = JmapRequestBuilder(_httpClient, processingInvocation);
|
||||
|
||||
final getEmailRecoveryActionMethod = GetEmailRecoveryActionMethod()
|
||||
..addIds({emailRecoveryActionId.id});
|
||||
final getEmailRecoveryActionInvocation = requestBuilder.invocation(getEmailRecoveryActionMethod);
|
||||
return (requestBuilder
|
||||
|
||||
final response = await (requestBuilder
|
||||
..usings(getEmailRecoveryActionMethod.requiredCapabilities))
|
||||
.build()
|
||||
.execute()
|
||||
.then((response) {
|
||||
final resultList = response.parse<GetEmailRecoveryActionResponse>(
|
||||
getEmailRecoveryActionInvocation.methodCallId,
|
||||
GetEmailRecoveryActionResponse.deserialize
|
||||
);
|
||||
.execute();
|
||||
|
||||
final getEmailRecoveryActionResponse = response.parse<GetEmailRecoveryActionResponse>(
|
||||
getEmailRecoveryActionInvocation.methodCallId,
|
||||
GetEmailRecoveryActionResponse.deserialize
|
||||
);
|
||||
|
||||
if (resultList?.list.isNotEmpty == true) {
|
||||
return resultList!.list.firstWhere((element) => element.id == emailRecoveryActionId);
|
||||
} else {
|
||||
throw NotFoundEmailRecoveryActionException();
|
||||
}
|
||||
});
|
||||
if (getEmailRecoveryActionResponse?.list.isNotEmpty == true) {
|
||||
return getEmailRecoveryActionResponse!.list.firstWhere((element) => element.id == emailRecoveryActionId);
|
||||
} else {
|
||||
throw NotFoundEmailRecoveryActionException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:email_recovery/email_recovery/email_recovery_action.dart';
|
||||
|
||||
class GetRestoredDeletedMessageLoading extends LoadingState {}
|
||||
|
||||
class GetRestoredDeletedMessageSuccess extends UIState {
|
||||
final EmailRecoveryAction emailRecoveryAction;
|
||||
|
||||
GetRestoredDeletedMessageSuccess(this.emailRecoveryAction);
|
||||
|
||||
@override
|
||||
List<Object> get props => [emailRecoveryAction];
|
||||
}
|
||||
|
||||
class GetRestoredDeletedMessageFailure extends FeatureFailure {
|
||||
GetRestoredDeletedMessageFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:email_recovery/email_recovery/email_recovery_action.dart';
|
||||
|
||||
class RestoreDeletedMessageLoading extends LoadingState {}
|
||||
|
||||
class RestoreDeletedMessageSuccess extends UIState {
|
||||
final EmailRecoveryAction emailRecoveryAction;
|
||||
|
||||
RestoreDeletedMessageSuccess(this.emailRecoveryAction);
|
||||
|
||||
@override
|
||||
List<Object> get props => [emailRecoveryAction];
|
||||
}
|
||||
|
||||
class RestoreDeletedMessageFailure extends FeatureFailure {
|
||||
RestoreDeletedMessageFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:email_recovery/email_recovery/email_recovery_action_id.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/get_restored_deleted_message_state.dart';
|
||||
|
||||
class GetRestoredDeletedMessageInterator {
|
||||
final EmailRepository _emailRepository;
|
||||
|
||||
GetRestoredDeletedMessageInterator(this._emailRepository);
|
||||
|
||||
Stream<Either<Failure, Success>> execute(
|
||||
EmailRecoveryActionId emailRecoveryActionId,
|
||||
) async* {
|
||||
try {
|
||||
yield Right<Failure, Success>(GetRestoredDeletedMessageLoading());
|
||||
final emailRecovery = await _emailRepository.getRestoredDeletedMessage(emailRecoveryActionId);
|
||||
yield Right<Failure, Success>(GetRestoredDeletedMessageSuccess(emailRecovery));
|
||||
} catch (e) {
|
||||
yield Left<Failure, Success>(GetRestoredDeletedMessageFailure(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/restore_deleted_message_request.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/restore_deleted_message_state.dart';
|
||||
|
||||
class RestoredDeletedMessageInteractor {
|
||||
final EmailRepository _emailRepository;
|
||||
|
||||
RestoredDeletedMessageInteractor(this._emailRepository);
|
||||
|
||||
Stream<Either<Failure, Success>> execute(
|
||||
RestoredDeletedMessageRequest newRecoveryRequest,
|
||||
) async* {
|
||||
try {
|
||||
yield Right<Failure, Success>(RestoreDeletedMessageLoading());
|
||||
final emailRecovery = await _emailRepository.restoreDeletedMessage(newRecoveryRequest);
|
||||
yield Right<Failure, Success>(RestoreDeletedMessageSuccess(emailRecovery));
|
||||
} catch (e) {
|
||||
yield Left<Failure, Success>(RestoreDeletedMessageFailure(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user