From 06510e2ee501dd317e2e085d24c3f8249fc41167 Mon Sep 17 00:00:00 2001 From: HuyNguyen Date: Thu, 29 Dec 2022 16:24:03 +0700 Subject: [PATCH] TF-1289: [Domain] add storeSubscription use-case --- .../state/store_subscription_state.dart | 22 +++++++++++++++++++ .../store_subscription_interator.dart | 22 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 lib/features/push_notification/domain/state/store_subscription_state.dart create mode 100644 lib/features/push_notification/domain/usecases/store_subscription_interator.dart 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