diff --git a/lib/modules/index/index_page.dart b/lib/modules/index/index_page.dart index 1e1c264..bb872e9 100644 --- a/lib/modules/index/index_page.dart +++ b/lib/modules/index/index_page.dart @@ -89,12 +89,8 @@ class _SCIndexPageState extends State WakelockPlus.enable(); _showEntryDialogs(); }); - String roomId = DataPersistence.getLastTimeRoomId(); - if (roomId.isNotEmpty) { - Provider.of( - context, - listen: false, - ).cleanupStaleRoomForColdStart(roomId); + if (DataPersistence.getLastTimeRoomId().isNotEmpty) { + unawaited(DataPersistence.setLastTimeRoomId("")); } } diff --git a/lib/services/audio/rtc_manager.dart b/lib/services/audio/rtc_manager.dart index bd1c235..a894f59 100644 --- a/lib/services/audio/rtc_manager.dart +++ b/lib/services/audio/rtc_manager.dart @@ -334,7 +334,6 @@ class RealTimeCommunicationManager extends ChangeNotifier { Future? _rtcEngineInitTask; Future? _rtcEnginePrewarmTask; Future? _pendingRoomSwitchAgoraLeaveTask; - final Map> _coldStartRoomCleanupTasks = {}; String? _joiningChannelId; bool _isRefreshingMicList = false; bool _isRefreshingOnlineUsers = false; @@ -434,51 +433,6 @@ class RealTimeCommunicationManager extends ChangeNotifier { this.context = context; } - void cleanupStaleRoomForColdStart(String roomId) { - final normalizedRoomId = roomId.trim(); - if (normalizedRoomId.isEmpty || - _coldStartRoomCleanupTasks.containsKey(normalizedRoomId)) { - return; - } - late final Future cleanupTask; - cleanupTask = _retryExitNetworkRequest( - 'cold start quit room $normalizedRoomId', - () async { - if (_isCurrentRoomId(normalizedRoomId)) { - return; - } - final didQuit = await SCAccountRepository().quitRoom(normalizedRoomId); - if (!didQuit) { - throw StateError('quitRoom returned false'); - } - }, - ).whenComplete(() { - if (identical( - _coldStartRoomCleanupTasks[normalizedRoomId], - cleanupTask, - )) { - _coldStartRoomCleanupTasks.remove(normalizedRoomId); - } - if (DataPersistence.getLastTimeRoomId() == normalizedRoomId) { - unawaited(DataPersistence.setLastTimeRoomId("")); - } - }); - _coldStartRoomCleanupTasks[normalizedRoomId] = cleanupTask; - unawaited(cleanupTask); - } - - Future _waitForColdStartRoomCleanup(String roomId) async { - final normalizedRoomId = roomId.trim(); - if (normalizedRoomId.isEmpty) { - return; - } - final cleanupTask = _coldStartRoomCleanupTasks[normalizedRoomId]; - if (cleanupTask == null) { - return; - } - await cleanupTask; - } - bool get roomVisualEffectsEnabled => _roomVisualEffectsEnabled; bool get isExitingCurrentVoiceRoomSession => @@ -2153,10 +2107,6 @@ class RealTimeCommunicationManager extends ChangeNotifier { SCTts.show('Microphone permission is denied.'); throw ArgumentError('Microphone permission is denied.'); } - await _waitForColdStartRoomCleanup(roomId); - if (!context.mounted) { - return; - } if (roomId == currenRoom?.roomProfile?.roomProfile?.id) { if (_currentRoomIsEntryPreview || _roomStartupStatus == RoomStartupStatus.loading) { @@ -2182,6 +2132,13 @@ class RealTimeCommunicationManager extends ChangeNotifier { context, listen: false, ).fetchUserProfileData(); + final groupId = currenRoom?.roomProfile?.roomProfile?.roomAccount ?? ""; + if (groupId.isNotEmpty) { + unawaited( + rtmProvider?.loadRoomHistoryMessages(groupId, count: 20) ?? + Future.value(), + ); + } retrieveMicrophoneList(); fetchOnlineUsersList(); _startRoomStatePolling(); @@ -2722,7 +2679,8 @@ class RealTimeCommunicationManager extends ChangeNotifier { if (!_isActiveRoomStartup(entryRequestSerial, roomId)) { return; } - if (joinResult == null || joinResult.code != 0) { + if (joinResult == null || + (joinResult.code != 0 && joinResult.code != 10013)) { _stopVoiceRoomForegroundService(); _setRoomStartupFailed(RoomStartupFailureType.im); return; @@ -2778,6 +2736,7 @@ class RealTimeCommunicationManager extends ChangeNotifier { return; } _setRoomStartupReady(); + _refreshRoomRedPacketListAfterEntry(roomId: roomId); Msg joinMsg = Msg( groupId: currenRoom?.roomProfile?.roomProfile?.roomAccount ?? "", diff --git a/lib/services/audio/rtm_manager.dart b/lib/services/audio/rtm_manager.dart index 3837817..e2a9334 100644 --- a/lib/services/audio/rtm_manager.dart +++ b/lib/services/audio/rtm_manager.dart @@ -649,7 +649,7 @@ class RealTimeMessagingManager extends ChangeNotifier { groupID: groupID, message: message, ); - if (joinResult.code == 0) { + if (joinResult.code == 0 || joinResult.code == 10013) { onNewMessageListenerGroupMap[groupID] = _newGroupMsg; } return joinResult;