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]!;
|
return emailRecoveryActionSetResponse!.created![restoredDeletedMessageRequest.createRequestId]!;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<EmailRecoveryAction> getRestoredDeletedMessage(EmailRecoveryActionId emailRecoveryActionId) {
|
Future<EmailRecoveryAction> getRestoredDeletedMessage(EmailRecoveryActionId emailRecoveryActionId) async {
|
||||||
final processingInvocation = ProcessingInvocation();
|
final processingInvocation = ProcessingInvocation();
|
||||||
final requestBuilder = JmapRequestBuilder(_httpClient, processingInvocation);
|
final requestBuilder = JmapRequestBuilder(_httpClient, processingInvocation);
|
||||||
|
|
||||||
final getEmailRecoveryActionMethod = GetEmailRecoveryActionMethod()
|
final getEmailRecoveryActionMethod = GetEmailRecoveryActionMethod()
|
||||||
..addIds({emailRecoveryActionId.id});
|
..addIds({emailRecoveryActionId.id});
|
||||||
final getEmailRecoveryActionInvocation = requestBuilder.invocation(getEmailRecoveryActionMethod);
|
final getEmailRecoveryActionInvocation = requestBuilder.invocation(getEmailRecoveryActionMethod);
|
||||||
return (requestBuilder
|
|
||||||
|
final response = await (requestBuilder
|
||||||
..usings(getEmailRecoveryActionMethod.requiredCapabilities))
|
..usings(getEmailRecoveryActionMethod.requiredCapabilities))
|
||||||
.build()
|
.build()
|
||||||
.execute()
|
.execute();
|
||||||
.then((response) {
|
|
||||||
final resultList = response.parse<GetEmailRecoveryActionResponse>(
|
final getEmailRecoveryActionResponse = response.parse<GetEmailRecoveryActionResponse>(
|
||||||
getEmailRecoveryActionInvocation.methodCallId,
|
getEmailRecoveryActionInvocation.methodCallId,
|
||||||
GetEmailRecoveryActionResponse.deserialize
|
GetEmailRecoveryActionResponse.deserialize
|
||||||
);
|
);
|
||||||
|
|
||||||
if (resultList?.list.isNotEmpty == true) {
|
if (getEmailRecoveryActionResponse?.list.isNotEmpty == true) {
|
||||||
return resultList!.list.firstWhere((element) => element.id == emailRecoveryActionId);
|
return getEmailRecoveryActionResponse!.list.firstWhere((element) => element.id == emailRecoveryActionId);
|
||||||
} else {
|
} else {
|
||||||
throw NotFoundEmailRecoveryActionException();
|
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