TF-2102 Add restore_deleted_message interactors
(cherry picked from commit ba81255c213c49ecce7afdeca25a5cd7657c3816)
This commit is contained in:
@@ -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