diff --git a/lib/features/mailbox_dashboard/domain/state/get_user_profile_state.dart b/lib/features/mailbox_dashboard/domain/state/get_user_profile_state.dart new file mode 100644 index 000000000..104c09851 --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/state/get_user_profile_state.dart @@ -0,0 +1,21 @@ +import 'package:core/core.dart'; +import 'package:core/presentation/state/failure.dart'; +import 'package:model/model.dart'; + +class GetUserProfileSuccess extends UIState { + final UserProfile userProfile; + + GetUserProfileSuccess(this.userProfile); + + @override + List get props => []; +} + +class GetUserProfileFailure extends FeatureFailure { + final exception; + + GetUserProfileFailure(this.exception); + + @override + List get props => [exception]; +} \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/usecases/get_user_profile_interactor.dart b/lib/features/mailbox_dashboard/domain/usecases/get_user_profile_interactor.dart new file mode 100644 index 000000000..ceb5b84c3 --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/usecases/get_user_profile_interactor.dart @@ -0,0 +1,22 @@ +import 'dart:core'; + +import 'package:core/core.dart'; +import 'package:dartz/dartz.dart'; +import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_user_profile_state.dart'; + +class GetUserProfileInteractor { + final CredentialRepository credentialRepository; + + GetUserProfileInteractor(this.credentialRepository); + + Stream> execute() async* { + try { + yield Right(UIState.loading); + final userProfile = await credentialRepository.getUserProfile(); + yield Right(GetUserProfileSuccess(userProfile)); + } catch (exception) { + yield Left(GetUserProfileFailure(exception)); + } + } +} \ No newline at end of file