diff --git a/lib/services/audio/rtm_manager.dart b/lib/services/audio/rtm_manager.dart index a2d302c..a32333d 100644 --- a/lib/services/audio/rtm_manager.dart +++ b/lib/services/audio/rtm_manager.dart @@ -1928,16 +1928,20 @@ class RealTimeMessagingManager extends ChangeNotifier { currentContext, listen: false, ); + final isCurrentVisibleRoom = + rtcProvider.shouldShowRoomVisualEffects && + rtcProvider.isVoiceRoomRouteVisible; final launch = _buildRoomRocketLaunchFromStatusPayload( rtcProvider: rtcProvider, payload: data, roomId: roomId, ); - if (_shouldHandleRoomRocketLaunchFromStatusPayload( - rtcProvider: rtcProvider, - payload: data, - launch: launch, - )) { + if (isCurrentVisibleRoom && + _shouldHandleRoomRocketLaunchFromStatusPayload( + rtcProvider: rtcProvider, + payload: data, + launch: launch, + )) { _handleCurrentVisibleRoomRocketLaunch( rtcProvider: rtcProvider, launch: launch, @@ -2004,6 +2008,9 @@ class RealTimeMessagingManager extends ChangeNotifier { if (!_isCurrentVoiceRoom(resolvedRoomId)) { return; } + if (!_isCurrentVisibleVoiceRoom(resolvedRoomId)) { + return; + } final initialRoomRecords = _roomRocketRewardRecordsFromPayload(data); unawaited( @@ -2018,6 +2025,9 @@ class RealTimeMessagingManager extends ChangeNotifier { required RealTimeCommunicationManager rtcProvider, required RoomRocketLaunchBroadcastMessage launch, }) { + if (!_isCurrentVisibleVoiceRoom(launch.roomId)) { + return; + } final launchKey = _roomRocketLaunchNoticeKey(launch); final looseLaunchKey = _roomRocketLaunchLooseKey(launch); final now = DateTime.now().millisecondsSinceEpoch; @@ -2070,8 +2080,14 @@ class RealTimeMessagingManager extends ChangeNotifier { List initialRoomRecords = const [], }) async { + if (!_isCurrentVisibleVoiceRoom(roomId)) { + return; + } try { final res = await SCChatRoomRepository().roomRocketRewardPopups(roomId); + if (!_isCurrentVisibleVoiceRoom(roomId)) { + return; + } if (res.records.isEmpty && initialRoomRecords.isEmpty) { _scheduleRoomRocketRewardPopupRetry( roomId, @@ -2128,7 +2144,7 @@ class RealTimeMessagingManager extends ChangeNotifier { const [], }) { if (attempt >= _roomRocketRewardPopupRetryDelays.length || - !_isCurrentVoiceRoom(roomId)) { + !_isCurrentVisibleVoiceRoom(roomId)) { return; } _roomRocketRewardPopupRetryTimer?.cancel();