diff --git a/lib/features/manage_account/domain/repository/manage_account_repository.dart b/lib/features/manage_account/domain/repository/manage_account_repository.dart index 48806df34..81bd2eb89 100644 --- a/lib/features/manage_account/domain/repository/manage_account_repository.dart +++ b/lib/features/manage_account/domain/repository/manage_account_repository.dart @@ -4,6 +4,7 @@ import 'package:forward/forward/tmail_forward.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/identities/identity.dart'; +import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart'; import 'package:rule_filter/rule_filter/tmail_rule.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_identity_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/delete_email_rule_request.dart'; @@ -32,4 +33,6 @@ abstract class ManageAccountRepository { Future> editEmailRuleFilter(AccountId accountId, EditEmailRuleFilterRequest ruleFilterRequest); Future getForward(AccountId accountId); + + Future> getAllVacationResponse(AccountId accountId); } \ No newline at end of file diff --git a/lib/features/manage_account/domain/state/get_all_vacation_state.dart b/lib/features/manage_account/domain/state/get_all_vacation_state.dart new file mode 100644 index 000000000..afdbd1d27 --- /dev/null +++ b/lib/features/manage_account/domain/state/get_all_vacation_state.dart @@ -0,0 +1,29 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart'; + +class LoadingGetAllVacation extends UIState { + + LoadingGetAllVacation(); + + @override + List get props => []; +} + +class GetAllVacationSuccess extends UIState { + final List? listVacationResponse; + + GetAllVacationSuccess(this.listVacationResponse); + + @override + List get props => [listVacationResponse]; +} + +class GetAllVacationFailure extends FeatureFailure { + final dynamic exception; + + GetAllVacationFailure(this.exception); + + @override + List get props => [exception]; +} \ No newline at end of file diff --git a/lib/features/manage_account/domain/usecases/get_all_vacation_interactor.dart b/lib/features/manage_account/domain/usecases/get_all_vacation_interactor.dart new file mode 100644 index 000000000..80ee63079 --- /dev/null +++ b/lib/features/manage_account/domain/usecases/get_all_vacation_interactor.dart @@ -0,0 +1,24 @@ +import 'dart:core'; + +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:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_vacation_state.dart'; + +class GetAllVacationInteractor { + final ManageAccountRepository manageAccountRepository; + + GetAllVacationInteractor(this.manageAccountRepository); + + Stream> execute(AccountId accountId) async* { + try { + yield Right(LoadingGetAllVacation()); + final listVacationResponse = await manageAccountRepository.getAllVacationResponse(accountId); + yield Right(GetAllVacationSuccess(listVacationResponse)); + } catch (exception) { + yield Left(GetAllVacationFailure(exception)); + } + } +} \ No newline at end of file