mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
Conference updates
This commit is contained in:
@@ -1760,74 +1760,6 @@ final class VideoChatParticipantsComponent: Component {
|
||||
}
|
||||
}
|
||||
|
||||
let measureListItemSize = self.measureListItemView.update(
|
||||
transition: .immediate,
|
||||
component: AnyComponent(PeerListItemComponent(
|
||||
context: component.call.accountContext,
|
||||
theme: component.theme,
|
||||
strings: component.strings,
|
||||
style: .generic,
|
||||
sideInset: 0.0,
|
||||
title: "AAA",
|
||||
peer: nil,
|
||||
subtitle: PeerListItemComponent.Subtitle(text: "bbb", color: .neutral),
|
||||
subtitleAccessory: .none,
|
||||
presence: nil,
|
||||
selectionState: .none,
|
||||
hasNext: true,
|
||||
action: { _, _, _ in
|
||||
}
|
||||
)),
|
||||
environment: {},
|
||||
containerSize: CGSize(width: availableSize.width, height: 1000.0)
|
||||
)
|
||||
|
||||
var inviteListItemSizes: [CGSize] = []
|
||||
for (inviteOption) in component.participants?.inviteOptions ?? [] {
|
||||
let inviteText: String
|
||||
let iconType: VideoChatListInviteComponent.Icon
|
||||
switch inviteOption.type {
|
||||
case let .invite(isMultiple):
|
||||
//TODO:localize
|
||||
if isMultiple {
|
||||
inviteText = component.strings.VoiceChat_InviteMember
|
||||
} else {
|
||||
inviteText = "Add Member"
|
||||
}
|
||||
iconType = .addUser
|
||||
case .shareLink:
|
||||
inviteText = component.strings.VoiceChat_Share
|
||||
iconType = .link
|
||||
}
|
||||
|
||||
let inviteListItemView: ComponentView<Empty>
|
||||
var inviteListItemTransition = transition
|
||||
if let current = self.inviteListItemViews[inviteOption.id] {
|
||||
inviteListItemView = current
|
||||
} else {
|
||||
inviteListItemView = ComponentView()
|
||||
self.inviteListItemViews[inviteOption.id] = inviteListItemView
|
||||
inviteListItemTransition = inviteListItemTransition.withAnimation(.none)
|
||||
}
|
||||
|
||||
inviteListItemSizes.append(inviteListItemView.update(
|
||||
transition: inviteListItemTransition,
|
||||
component: AnyComponent(VideoChatListInviteComponent(
|
||||
title: inviteText,
|
||||
icon: iconType,
|
||||
theme: component.theme,
|
||||
action: { [weak self] in
|
||||
guard let self, let component = self.component else {
|
||||
return
|
||||
}
|
||||
component.openInviteMembers(inviteOption.type)
|
||||
}
|
||||
)),
|
||||
environment: {},
|
||||
containerSize: CGSize(width: availableSize.width, height: 1000.0)
|
||||
))
|
||||
}
|
||||
|
||||
var gridParticipants: [VideoParticipant] = []
|
||||
var listParticipants: [GroupCallParticipantsContext.Participant] = []
|
||||
if let participants = component.participants {
|
||||
@@ -1868,6 +1800,90 @@ final class VideoChatParticipantsComponent: Component {
|
||||
self.gridParticipants = gridParticipants
|
||||
self.listParticipants = listParticipants
|
||||
|
||||
let measureListItemSize = self.measureListItemView.update(
|
||||
transition: .immediate,
|
||||
component: AnyComponent(PeerListItemComponent(
|
||||
context: component.call.accountContext,
|
||||
theme: component.theme,
|
||||
strings: component.strings,
|
||||
style: .generic,
|
||||
sideInset: 0.0,
|
||||
title: "AAA",
|
||||
peer: nil,
|
||||
subtitle: PeerListItemComponent.Subtitle(text: "bbb", color: .neutral),
|
||||
subtitleAccessory: .none,
|
||||
presence: nil,
|
||||
selectionState: .none,
|
||||
hasNext: true,
|
||||
action: { _, _, _ in
|
||||
}
|
||||
)),
|
||||
environment: {},
|
||||
containerSize: CGSize(width: availableSize.width, height: 1000.0)
|
||||
)
|
||||
|
||||
var inviteListItemSizes: [CGSize] = []
|
||||
if let participants = component.participants {
|
||||
let tempItemLayout = ItemLayout(
|
||||
containerSize: availableSize,
|
||||
layout: component.layout,
|
||||
isUIHidden: component.expandedVideoState?.isUIHidden ?? false,
|
||||
expandedInsets: component.expandedInsets,
|
||||
safeInsets: component.safeInsets,
|
||||
gridItemCount: gridParticipants.count,
|
||||
listItemCount: listParticipants.count + component.invitedPeers.count,
|
||||
listItemHeight: measureListItemSize.height,
|
||||
listTrailingItemHeights: []
|
||||
)
|
||||
|
||||
for i in 0 ..< participants.inviteOptions.count {
|
||||
let inviteOption = participants.inviteOptions[i]
|
||||
let inviteText: String
|
||||
let iconType: VideoChatListInviteComponent.Icon
|
||||
switch inviteOption.type {
|
||||
case let .invite(isMultiple):
|
||||
//TODO:localize
|
||||
if isMultiple {
|
||||
inviteText = component.strings.VoiceChat_InviteMember
|
||||
} else {
|
||||
inviteText = "Add Member"
|
||||
}
|
||||
iconType = .addUser
|
||||
case .shareLink:
|
||||
inviteText = component.strings.VoiceChat_Share
|
||||
iconType = .link
|
||||
}
|
||||
|
||||
let inviteListItemView: ComponentView<Empty>
|
||||
var inviteListItemTransition = transition
|
||||
if let current = self.inviteListItemViews[inviteOption.id] {
|
||||
inviteListItemView = current
|
||||
} else {
|
||||
inviteListItemView = ComponentView()
|
||||
self.inviteListItemViews[inviteOption.id] = inviteListItemView
|
||||
inviteListItemTransition = inviteListItemTransition.withAnimation(.none)
|
||||
}
|
||||
|
||||
inviteListItemSizes.append(inviteListItemView.update(
|
||||
transition: inviteListItemTransition,
|
||||
component: AnyComponent(VideoChatListInviteComponent(
|
||||
title: inviteText,
|
||||
icon: iconType,
|
||||
theme: component.theme,
|
||||
hasNext: i != participants.inviteOptions.count - 1,
|
||||
action: { [weak self] in
|
||||
guard let self, let component = self.component else {
|
||||
return
|
||||
}
|
||||
component.openInviteMembers(inviteOption.type)
|
||||
}
|
||||
)),
|
||||
environment: {},
|
||||
containerSize: CGSize(width: availableSize.width - tempItemLayout.list.sideInset * 2.0, height: 1000.0)
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
let itemLayout = ItemLayout(
|
||||
containerSize: availableSize,
|
||||
layout: component.layout,
|
||||
|
||||
Reference in New Issue
Block a user