TF-439 Handle get stored device id

This commit is contained in:
dab246
2022-11-29 16:45:49 +07:00
committed by Dat H. Pham
parent ce1a52caac
commit 81278d13ba
12 changed files with 121 additions and 11 deletions
@@ -6,4 +6,6 @@ class NotFoundStateToRefreshException implements Exception {}
class NotFoundEmailDeliveryStateException implements Exception {}
class NotFoundFirebaseSubscriptionException implements Exception {}
class NotFoundFirebaseSubscriptionException implements Exception {}
class NotFoundDeviceIdException implements Exception {}
@@ -34,4 +34,6 @@ abstract class FCMRepository {
Future<FirebaseSubscription> getFirebaseSubscriptionByDeviceId(String deviceId);
Future<FirebaseSubscription> registerNewToken(RegisterNewTokenRequest newTokenRequest);
Future<String> getDeviceId();
}
@@ -0,0 +1,24 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
class GetDeviceIdLoading extends UIState {}
class GetDeviceIdSuccess extends UIState {
final String deviceId;
GetDeviceIdSuccess(this.deviceId);
@override
List<Object> get props => [deviceId];
}
class GetDeviceIdFailure extends FeatureFailure {
final dynamic exception;
GetDeviceIdFailure(this.exception);
@override
List<Object> get props => [exception];
}
@@ -0,0 +1,21 @@
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/repository/fcm_repository.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/get_device_id_state.dart';
class GetDeviceIdInteractor {
final FCMRepository _fcmRepository;
GetDeviceIdInteractor(this._fcmRepository);
Stream<Either<Failure, Success>> execute() async* {
try {
yield Right<Failure, Success>(GetDeviceIdLoading());
final deviceId = await _fcmRepository.getDeviceId();
yield Right<Failure, Success>(GetDeviceIdSuccess(deviceId));
} catch (e) {
yield Left<Failure, Success>(GetDeviceIdFailure(e));
}
}
}