Merge commit '22f9a91f97df77ef5d7f8cc4acefdf1b63f80a2d'

This commit is contained in:
Ali 2021-02-18 00:25:25 +04:00
commit 8f2ed45b25
6 changed files with 35 additions and 2 deletions

View File

@ -1424,6 +1424,12 @@ class ChatListItemNode: ItemListRevealOptionsItemNode {
online = true
}
animateOnline = true
} else if let group = renderedPeer.peer as? TelegramGroup {
onlineIsVoiceChat = true
if group.flags.contains(.hasActiveVoiceChat) && item.interaction.searchTextHighightState == nil {
online = true
}
animateOnline = true
}
}

View File

@ -60,6 +60,8 @@ public struct TelegramGroupFlags: OptionSet {
}
public static let deactivated = TelegramGroupFlags(rawValue: 1 << 1)
public static let hasVoiceChat = TelegramGroupFlags(rawValue: 1 << 2)
public static let hasActiveVoiceChat = TelegramGroupFlags(rawValue: 1 << 3)
}
public struct TelegramGroupToChannelMigrationReference: Equatable {

View File

@ -51,6 +51,12 @@ func parseTelegramGroupOrChannel(chat: Api.Chat) -> Peer? {
if (flags & (1 << 5)) != 0 {
groupFlags.insert(.deactivated)
}
if (flags & Int32(1 << 23)) != 0 {
groupFlags.insert(.hasVoiceChat)
}
if (flags & Int32(1 << 24)) != 0 {
groupFlags.insert(.hasActiveVoiceChat)
}
return TelegramGroup(id: PeerId(namespace: Namespaces.Peer.CloudGroup, id: id), title: title, photo: imageRepresentationsForApiChatPhoto(photo), participantCount: Int(participantsCount), role: role, membership: left ? .Left : .Member, flags: groupFlags, defaultBannedRights: defaultBannedRights.flatMap(TelegramChatBannedRights.init(apiBannedRights:)), migrationReference: migrationReference, creationDate: date, version: Int(version))
case let .chatEmpty(id):
return TelegramGroup(id: PeerId(namespace: Namespaces.Peer.CloudGroup, id: id), title: "", photo: [], participantCount: 0, role: .member, membership: .Removed, flags: [], defaultBannedRights: nil, migrationReference: nil, creationDate: 0, version: 0)

View File

@ -522,6 +522,15 @@ public func stopGroupCall(account: Account, peerId: PeerId, callId: Int64, acces
return updated
})
}
if var peer = transaction.getPeer(peerId) as? TelegramGroup {
var flags = peer.flags
flags.remove(.hasVoiceChat)
flags.remove(.hasActiveVoiceChat)
peer = peer.updateFlags(flags: flags, version: peer.version)
updatePeers(transaction: transaction, peers: [peer], update: { _, updated in
return updated
})
}
account.stateManager.addUpdates(result)
}

View File

@ -1055,6 +1055,11 @@ func peerInfoHeaderButtons(peer: Peer?, cachedData: CachedPeerData?, isOpenedFro
var canAddMembers = false
var isPublic = false
var isCreator = false
var hasVoiceChat = false
if group.flags.contains(.hasVoiceChat) {
hasVoiceChat = true
}
if case .creator = group.role {
isCreator = true
@ -1079,6 +1084,9 @@ func peerInfoHeaderButtons(peer: Peer?, cachedData: CachedPeerData?, isOpenedFro
}
result.append(.mute)
if hasVoiceChat {
result.append(.voiceChat)
}
result.append(.search)
result.append(.more)
}

View File

@ -3012,7 +3012,9 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD
case .videoCall:
self.requestCall(isVideo: true)
case .voiceChat:
if let cachedData = self.data?.cachedData as? CachedChannelData, let activeCall = cachedData.activeCall {
if let cachedData = self.data?.cachedData as? CachedGroupData, let activeCall = cachedData.activeCall {
self.context.joinGroupCall(peerId: self.peerId, activeCall: activeCall)
} else if let cachedData = self.data?.cachedData as? CachedChannelData, let activeCall = cachedData.activeCall {
self.context.joinGroupCall(peerId: self.peerId, activeCall: activeCall)
}
case .mute:
@ -3257,7 +3259,7 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD
canManageGroupCalls = true
}
}
if canManageGroupCalls {
if canManageGroupCalls, !group.flags.contains(.hasVoiceChat) {
items.append(ActionSheetButtonItem(title: presentationData.strings.ChannelInfo_CreateVoiceChat, color: .accent, action: { [weak self] in
dismissAction()