diff --git a/lib/src/client.dart b/lib/src/client.dart index a3286834..22b9e8e2 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -2147,6 +2147,9 @@ class Client extends MatrixApi { } // If the membership is "leave" then remove the item and stop here else if (found && membership == Membership.leave) { + // stop stale group call checker for left room. + room.stopStaleCallsChecker(room.id); + rooms.removeAt(roomIndex); } // Update notification, highlight count and/or additional informations diff --git a/lib/src/room.dart b/lib/src/room.dart index 12ff7299..8db8879b 100644 --- a/lib/src/room.dart +++ b/lib/src/room.dart @@ -142,8 +142,8 @@ class Room { setState(state); } } - partial = false; startStaleCallsChecker(id); + partial = false; } /// Returns the [Event] for the given [typeKey] and optional [stateKey]. diff --git a/lib/src/voip/voip_room_extension.dart b/lib/src/voip/voip_room_extension.dart index f52137e0..9816d4b6 100644 --- a/lib/src/voip/voip_room_extension.dart +++ b/lib/src/voip/voip_room_extension.dart @@ -47,6 +47,8 @@ extension GroupCallUtils on Room { void stopStaleCallsChecker(String roomId) { if (staleGroupCallsTimer.tryGet(roomId) != null) { staleGroupCallsTimer[roomId]!.cancel(); + staleGroupCallsTimer.remove(roomId); + Logs().d('stopped stale group calls checker for room $id'); } else { Logs().w('[VOIP] no stale call checker for room found'); } @@ -137,10 +139,10 @@ extension GroupCallUtils on Room { 'm.terminated': GroupCallTerminationReason.CallEnded, }); - Logs().d('[VOIP] Group call $groupCallId was killed uwu'); + Logs().i('[VOIP] Group call $groupCallId was killed uwu'); return req; } catch (e) { - Logs().i('killing stale call $groupCallId failed. reason: $e'); + Logs().e('killing stale call $groupCallId failed. reason: $e'); return null; } }