diff --git a/lib/features/email/domain/state/parse_calendar_event_state.dart b/lib/features/email/domain/state/parse_calendar_event_state.dart new file mode 100644 index 000000000..4d1be2026 --- /dev/null +++ b/lib/features/email/domain/state/parse_calendar_event_state.dart @@ -0,0 +1,19 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:jmap_dart_client/jmap/mail/calendar/calendar_event.dart'; + +class ParseCalendarEventLoading extends LoadingState {} + +class ParseCalendarEventSuccess extends UIState { + + final List calendarEventList; + + ParseCalendarEventSuccess(this.calendarEventList); + + @override + List get props => [calendarEventList]; +} + +class ParseCalendarEventFailure extends FeatureFailure { + ParseCalendarEventFailure(dynamic exception) : super(exception: exception); +} \ No newline at end of file diff --git a/lib/features/email/domain/usecases/parse_calendar_event_interactor.dart b/lib/features/email/domain/usecases/parse_calendar_event_interactor.dart new file mode 100644 index 000000000..2c6c9adb1 --- /dev/null +++ b/lib/features/email/domain/usecases/parse_calendar_event_interactor.dart @@ -0,0 +1,23 @@ +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:jmap_dart_client/jmap/core/id.dart'; +import 'package:tmail_ui_user/features/email/domain/repository/calendar_event_repository.dart'; +import 'package:tmail_ui_user/features/email/domain/state/parse_calendar_event_state.dart'; + +class ParseCalendarEventInteractor { + final CalendarEventRepository _calendarEventRepository; + + ParseCalendarEventInteractor(this._calendarEventRepository); + + Stream> execute(AccountId accountId, Set blobIds) async* { + try { + yield Right(ParseCalendarEventLoading()); + final calendarEventList = await _calendarEventRepository.parse(accountId, blobIds); + yield Right(ParseCalendarEventSuccess(calendarEventList)); + } catch (e) { + yield Left(ParseCalendarEventFailure(e)); + } + } +} \ No newline at end of file