diff --git a/lib/features/session/domain/repository/session_repository.dart b/lib/features/session/domain/repository/session_repository.dart new file mode 100644 index 000000000..30a86774d --- /dev/null +++ b/lib/features/session/domain/repository/session_repository.dart @@ -0,0 +1,5 @@ +import 'package:jmap_dart_client/jmap/core/session/session.dart'; + +abstract class SessionRepository { + Future getSession(); +} \ No newline at end of file diff --git a/lib/features/session/domain/state/get_session_state.dart b/lib/features/session/domain/state/get_session_state.dart new file mode 100644 index 000000000..887ff1043 --- /dev/null +++ b/lib/features/session/domain/state/get_session_state.dart @@ -0,0 +1,20 @@ +import 'package:core/core.dart'; +import 'package:jmap_dart_client/jmap/core/session/session.dart'; + +class GetSessionSuccess extends UIState { + final Session session; + + GetSessionSuccess(this.session); + + @override + List get props => [session]; +} + +class GetSessionFailure extends FeatureFailure { + final exception; + + GetSessionFailure(this.exception); + + @override + List get props => [exception]; +} \ No newline at end of file diff --git a/lib/features/session/domain/usecases/get_session_interactor.dart b/lib/features/session/domain/usecases/get_session_interactor.dart new file mode 100644 index 000000000..95d4973ec --- /dev/null +++ b/lib/features/session/domain/usecases/get_session_interactor.dart @@ -0,0 +1,19 @@ +import 'package:core/core.dart'; +import 'package:dartz/dartz.dart'; +import 'package:tmail_ui_user/features/session/domain/repository/session_repository.dart'; +import 'package:tmail_ui_user/features/session/domain/state/get_session_state.dart'; + +class GetSessionInteractor { + final SessionRepository sessionRepository; + + GetSessionInteractor(this.sessionRepository); + + Future> execute() async { + try { + final session = await sessionRepository.getSession(); + return Right(GetSessionSuccess(session)); + } catch (e) { + return Left(GetSessionFailure(e)); + } + } +} \ No newline at end of file