From ce1a52caac73e304414db297b385ef6a126070bd Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 29 Nov 2022 16:28:24 +0700 Subject: [PATCH] TF-439 Handle register new token the first time --- .../controller/fcm_token_handler.dart | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/lib/features/push_notification/presentation/controller/fcm_token_handler.dart b/lib/features/push_notification/presentation/controller/fcm_token_handler.dart index c948a33fd..7f55103f6 100644 --- a/lib/features/push_notification/presentation/controller/fcm_token_handler.dart +++ b/lib/features/push_notification/presentation/controller/fcm_token_handler.dart @@ -86,7 +86,9 @@ class FcmTokenHandler { void _handleFailureViewState(Failure failure) { log('FcmTokenHandler::_handleFailureViewState(): $failure'); if (failure is GetFirebaseSubscriptionFailure) { - // Register new token + if (_fcmToken != null && _deviceClientId != null) { + _handleRegisterNewToken(_fcmToken!, _deviceClientId!); + } } } @@ -132,13 +134,27 @@ class FcmTokenHandler { ); log('FcmTokenHandler::_handleSuccessViewState():firebaseSubscription: $firebaseSubscription'); - _registerNewTokenAction(RegisterNewTokenRequest( - generateCreationId, - firebaseSubscription + _invokeRegisterNewTokenAction(RegisterNewTokenRequest( + generateCreationId, + firebaseSubscription )); } - void _registerNewTokenAction(RegisterNewTokenRequest newTokenRequest) { + void _handleRegisterNewToken(FirebaseToken fcmToken, DeviceClientId deviceClientId) { + final generateCreationId = Id(const Uuid().v4()); + final firebaseSubscription = FirebaseSubscription( + token: fcmToken, + deviceClientId: deviceClientId, + types: [TypeName.emailType, TypeName.mailboxType, TypeName.emailDelivery] + ); + log('FcmTokenHandler::_handleSuccessViewState():firebaseSubscription: $firebaseSubscription'); + _invokeRegisterNewTokenAction(RegisterNewTokenRequest( + generateCreationId, + firebaseSubscription + )); + } + + void _invokeRegisterNewTokenAction(RegisterNewTokenRequest newTokenRequest) { if (_registerNewTokenInteractor != null) { _consumeState(_registerNewTokenInteractor!.execute(newTokenRequest)); }