TF-439 Implement get firebase subscription

This commit is contained in:
dab246
2022-11-29 15:34:06 +07:00
committed by Dat H. Pham
parent 38a6067319
commit 4de25a778c
13 changed files with 231 additions and 28 deletions
@@ -4,9 +4,11 @@ import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.dart';
import 'package:dartz/dartz.dart';
import 'package:fcm/model/firebase_token.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/push_notification/domain/state/get_firebase_subscription_state.dart';
import 'package:tmail_ui_user/features/push_notification/domain/usecases/get_firebase_subscription_interactor.dart';
import 'package:tmail_ui_user/features/push_notification/domain/usecases/store_device_id_interactor.dart';
import 'package:tmail_ui_user/features/push_notification/presentation/utils/fcm_utils.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
class FcmTokenHandler {
@@ -17,22 +19,35 @@ class FcmTokenHandler {
static FcmTokenHandler get instance => _instance;
StoreDeviceIdInteractor? _storeDeviceIdInteractor;
GetFirebaseSubscriptionInteractor? _getFirebaseSubscriptionInteractor;
FirebaseToken? _fcmToken;
String? _deviceId;
void initialize() {
try {
_storeDeviceIdInteractor = Get.find<StoreDeviceIdInteractor>();
_storeDeviceIdInteractor = getBinding<StoreDeviceIdInteractor>();
_getFirebaseSubscriptionInteractor = getBinding<GetFirebaseSubscriptionInteractor>();
} catch (e) {
logError('FcmTokenHandler::initialize(): ${e.toString()}');
}
}
void handle(String token) {
void handle(String? token) {
log('FcmTokenHandler::handle():token: $token');
final fcmToken = FirebaseToken(token);
final deviceId = FcmUtils.instance.hashTokenToDeviceId(token);
log('FcmTokenHandler::handle(): fcmToken: $fcmToken');
log('FcmTokenHandler::handle(): deviceId: $deviceId');
_storeDeviceIdAction(deviceId);
if (token != null) {
_fcmToken = FirebaseToken(token);
_deviceId = FcmUtils.instance.hashTokenToDeviceId(token);
log('FcmTokenHandler::handle(): fcmToken: $_fcmToken');
log('FcmTokenHandler::handle(): deviceId: $_deviceId');
_getFcmTokenFromBackend(_deviceId!);
}
}
void _getFcmTokenFromBackend(String deviceId) {
if (_getFirebaseSubscriptionInteractor != null) {
_consumeState(_getFirebaseSubscriptionInteractor!.execute(deviceId));
}
}
void _storeDeviceIdAction(String deviceId) {
@@ -57,9 +72,16 @@ class FcmTokenHandler {
void _handleFailureViewState(Failure failure) {
log('FcmTokenHandler::_handleFailureViewState(): $failure');
if (failure is GetFirebaseSubscriptionFailure) {
// Register new token
}
}
void _handleSuccessViewState(Success success) {
log('FcmTokenHandler::_handleSuccessViewState(): $success');
if (success is GetFirebaseSubscriptionSuccess) {
final token = success.firebaseSubscription.token;
log('FcmTokenHandler::_handleSuccessViewState():token: $token');
}
}
}