TF-1289: [Domain] add storeSubscription use-case

This commit is contained in:
HuyNguyen
2022-12-29 16:24:03 +07:00
committed by Dat Vu
parent dd6079385d
commit 06510e2ee5
2 changed files with 44 additions and 0 deletions
@@ -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<Object> get props => [];
}
class StoreSubscriptionFailure extends FeatureFailure {
final dynamic exception;
StoreSubscriptionFailure(this.exception);
@override
List<Object> get props => [exception];
}
@@ -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<Either<Failure, Success>> execute(FCMSubscription fcmSubscription) async* {
try {
yield Right<Failure, Success>(StoreSubscriptionLoading());
await _fcmRepository.storeSubscription(fcmSubscription);
yield Right<Failure, Success>(StoreSubscriptionSuccess());
} catch (e) {
yield Left<Failure, Success>(StoreSubscriptionFailure(e));
}
}
}