From 907fb84da15a6e99d16fa134035dcd1036ce527f Mon Sep 17 00:00:00 2001 From: Ali <> Date: Sat, 13 Mar 2021 22:00:14 +0400 Subject: [PATCH] Fix min group call participant updates --- .../TelegramCore/Sources/GroupCalls.swift | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/submodules/TelegramCore/Sources/GroupCalls.swift b/submodules/TelegramCore/Sources/GroupCalls.swift index 427ca4b413..3c31f81988 100644 --- a/submodules/TelegramCore/Sources/GroupCalls.swift +++ b/submodules/TelegramCore/Sources/GroupCalls.swift @@ -1301,10 +1301,14 @@ public final class GroupCallParticipantsContext { var previousJoinTimestamp: Int32? var previousActivityTimestamp: Double? var previousActivityRank: Int? + var previousMuteState: GroupCallParticipantsContext.Participant.MuteState? + var previousVolume: Int32? if let index = updatedParticipants.firstIndex(where: { $0.peer.id == participantUpdate.peerId }) { previousJoinTimestamp = updatedParticipants[index].joinTimestamp previousActivityTimestamp = updatedParticipants[index].activityTimestamp previousActivityRank = updatedParticipants[index].activityRank + previousMuteState = updatedParticipants[index].muteState + previousVolume = updatedParticipants[index].volume updatedParticipants.remove(at: index) } else if case .joined = participantUpdate.participationStatusChange { updatedTotalCount += 1 @@ -1317,6 +1321,19 @@ public final class GroupCallParticipantsContext { } else { activityTimestamp = participantUpdate.activityTimestamp ?? previousActivityTimestamp } + + var volume = participantUpdate.volume + var muteState = participantUpdate.muteState + if participantUpdate.isMin { + if let previousMuteState = previousMuteState { + if previousMuteState.mutedByYou { + muteState = previousMuteState + } + } + if let previousVolume = previousVolume { + volume = previousVolume + } + } let participant = Participant( peer: peer, @@ -1327,8 +1344,8 @@ public final class GroupCallParticipantsContext { hasRaiseHand: participantUpdate.raiseHandRating != nil, activityTimestamp: activityTimestamp, activityRank: previousActivityRank, - muteState: participantUpdate.muteState, - volume: participantUpdate.volume, + muteState: muteState, + volume: volume, about: participantUpdate.about ) updatedParticipants.append(participant)