diff --git a/lib/features/push_notification/domain/state/store_subscription_state.dart b/lib/features/push_notification/domain/state/store_subscription_state.dart new file mode 100644 index 000000000..341f57e9d --- /dev/null +++ b/lib/features/push_notification/domain/state/store_subscription_state.dart @@ -0,0 +1,22 @@ + +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; + +class StoreSubscriptionLoading extends UIState {} + +class StoreSubscriptionSuccess extends UIState { + + StoreSubscriptionSuccess(); + + @override + List get props => []; +} + +class StoreSubscriptionFailure extends FeatureFailure { + final dynamic exception; + + StoreSubscriptionFailure(this.exception); + + @override + List get props => [exception]; +} \ No newline at end of file diff --git a/lib/features/push_notification/domain/usecases/store_subscription_interator.dart b/lib/features/push_notification/domain/usecases/store_subscription_interator.dart new file mode 100644 index 000000000..47901b5e8 --- /dev/null +++ b/lib/features/push_notification/domain/usecases/store_subscription_interator.dart @@ -0,0 +1,22 @@ +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/push_notification/domain/model/fcm_subscription.dart'; +import 'package:tmail_ui_user/features/push_notification/domain/repository/fcm_repository.dart'; +import 'package:tmail_ui_user/features/push_notification/domain/state/store_subscription_state.dart'; + +class StoreSubscriptionInteractor { + final FCMRepository _fcmRepository; + + StoreSubscriptionInteractor(this._fcmRepository); + + Stream> execute(FCMSubscription fcmSubscription) async* { + try { + yield Right(StoreSubscriptionLoading()); + await _fcmRepository.storeSubscription(fcmSubscription); + yield Right(StoreSubscriptionSuccess()); + } catch (e) { + yield Left(StoreSubscriptionFailure(e)); + } + } +} \ No newline at end of file