TF-1360 Fix can not add data to stream controller when re-login
This commit is contained in:
@@ -47,7 +47,7 @@ class FcmController extends BaseController {
|
||||
GetSessionInteractor? _getSessionInteractor;
|
||||
|
||||
FcmController._internal() {
|
||||
_listenFcmMessageStream();
|
||||
_listenFcmStream();
|
||||
}
|
||||
|
||||
static final FcmController _instance = FcmController._internal();
|
||||
@@ -59,17 +59,33 @@ class FcmController extends BaseController {
|
||||
FcmTokenHandler.instance.initialize();
|
||||
}
|
||||
|
||||
void _listenFcmMessageStream() {
|
||||
log('FcmController::_listenFcmMessageStream():');
|
||||
void _listenFcmStream() async {
|
||||
await Future.wait([
|
||||
listenForegroundMessageStream(),
|
||||
listenBackgroundMessageStream(),
|
||||
listenTokenStream()
|
||||
]);
|
||||
}
|
||||
|
||||
Future<void> listenForegroundMessageStream() {
|
||||
FcmService.instance.foregroundMessageStream
|
||||
.throttleTime(const Duration(milliseconds: FcmService.durationMessageComing))
|
||||
.listen(_handleForegroundMessageAction);
|
||||
return Future.value();
|
||||
}
|
||||
|
||||
Future<void> listenBackgroundMessageStream() {
|
||||
FcmService.instance.backgroundMessageStream
|
||||
.throttleTime(const Duration(milliseconds: FcmService.durationMessageComing))
|
||||
.listen(_handleBackgroundMessageAction);
|
||||
return Future.value();
|
||||
}
|
||||
|
||||
FcmService.instance.fcmTokenStream.listen(FcmTokenHandler.instance.handle);
|
||||
Future<void> listenTokenStream() {
|
||||
FcmService.instance.fcmTokenStream
|
||||
.debounceTime(const Duration(milliseconds: FcmService.durationRefreshToken))
|
||||
.listen(FcmTokenHandler.instance.handleTokenAction);
|
||||
return Future.value();
|
||||
}
|
||||
|
||||
void _handleForegroundMessageAction(RemoteMessage newRemoteMessage) {
|
||||
@@ -253,13 +269,6 @@ class FcmController extends BaseController {
|
||||
_remoteMessageBackground = null;
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_clearRemoteMessageBackground();
|
||||
FcmService.instance.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
void onData(Either<Failure, Success> newState) {
|
||||
super.onData(newState);
|
||||
|
||||
@@ -54,14 +54,14 @@ class FcmTokenHandler {
|
||||
}
|
||||
}
|
||||
|
||||
void handle(String? token) {
|
||||
log('FcmTokenHandler::handle():token: $token');
|
||||
void handleTokenAction(String? token) {
|
||||
log('FcmTokenHandler::handleTokenAction():token: $token');
|
||||
if (token != null) {
|
||||
_fcmToken = FirebaseToken(token);
|
||||
final deviceId = FcmUtils.instance.hashTokenToDeviceId(token);
|
||||
_deviceClientId = DeviceClientId(deviceId);
|
||||
log('FcmTokenHandler::handle(): fcmToken: $_fcmToken');
|
||||
log('FcmTokenHandler::handle(): deviceId: $deviceId');
|
||||
log('FcmTokenHandler::handleTokenAction(): fcmToken: $_fcmToken');
|
||||
log('FcmTokenHandler::handleTokenAction(): deviceId: $deviceId');
|
||||
_getFcmTokenFromBackend(deviceId);
|
||||
} else {
|
||||
_getFCMSubscriptionLocalAction();
|
||||
@@ -171,7 +171,7 @@ class FcmTokenHandler {
|
||||
deviceClientId: deviceClientId,
|
||||
types: [TypeName.emailType, TypeName.mailboxType, TypeName.emailDelivery]
|
||||
);
|
||||
log('FcmTokenHandler::_handleSuccessViewState():firebaseSubscription: $firebaseSubscription');
|
||||
log('FcmTokenHandler::_handleRegisterNewToken():firebaseSubscription: $firebaseSubscription');
|
||||
_invokeRegisterNewTokenAction(RegisterNewTokenRequest(
|
||||
generateCreationId,
|
||||
firebaseSubscription
|
||||
|
||||
Reference in New Issue
Block a user