From 95dcd7e625ccad17f032d549755d3430036d8e81 Mon Sep 17 00:00:00 2001 From: roxy Date: Sat, 16 May 2026 00:07:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=80=E5=B0=8F=E5=8C=96=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/services/audio/rtm_manager.dart | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) 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();