Allow sharing stories with forums

This commit is contained in:
Ilya Laktyushin 2024-06-15 21:25:36 +04:00
parent 5d2377bcb7
commit a2872a6189
2 changed files with 15 additions and 15 deletions

View File

@ -296,6 +296,7 @@ final class ShareWithPeersScreenComponent: Component {
private var visibleItems: [AnyHashable: ComponentView<Empty>] = [:] private var visibleItems: [AnyHashable: ComponentView<Empty>] = [:]
private var visibleSectionBackgrounds: [Int: UIView] = [:] private var visibleSectionBackgrounds: [Int: UIView] = [:]
private var visibleSectionFooters: [Int: ComponentView<Empty>] = [:] private var visibleSectionFooters: [Int: ComponentView<Empty>] = [:]
private var itemSizes: [AnyHashable: CGSize] = [:]
private var ignoreScrolling: Bool = false private var ignoreScrolling: Bool = false
private var isDismissed: Bool = false private var isDismissed: Bool = false
@ -672,6 +673,9 @@ final class ShareWithPeersScreenComponent: Component {
} }
var groupPeerIds: [EnginePeer.Id] = [] var groupPeerIds: [EnginePeer.Id] = []
for peer in peers { for peer in peers {
guard !peer.isDeleted else {
continue
}
if !existingPeerIds.contains(peer.id) { if !existingPeerIds.contains(peer.id) {
self.selectedPeers.append(peer.id) self.selectedPeers.append(peer.id)
existingPeerIds.insert(peer.id) existingPeerIds.insert(peer.id)
@ -1022,13 +1026,13 @@ final class ShareWithPeersScreenComponent: Component {
} }
} }
for i in 0 ..< peers.count { for i in 0 ..< peers.count {
let peer = peers[i]
let itemId = AnyHashable(peer.id)
let itemFrame = CGRect(origin: CGPoint(x: 0.0, y: sectionOffset + section.insets.top + CGFloat(i) * section.itemHeight), size: CGSize(width: itemLayout.containerSize.width, height: section.itemHeight)) let itemFrame = CGRect(origin: CGPoint(x: 0.0, y: sectionOffset + section.insets.top + CGFloat(i) * section.itemHeight), size: CGSize(width: itemLayout.containerSize.width, height: section.itemHeight))
if !visibleBounds.intersects(itemFrame) { if !visibleBounds.intersects(itemFrame) {
continue continue
} }
let peer = peers[i]
let itemId = AnyHashable(peer.id)
validIds.append(itemId) validIds.append(itemId)
var itemTransition = transition var itemTransition = transition
@ -1050,13 +1054,13 @@ final class ShareWithPeersScreenComponent: Component {
if case let .channel(channel) = peer { if case let .channel(channel) = peer {
if case .broadcast = channel.info { if case .broadcast = channel.info {
if let count = component.stateContext.stateValue?.participants[peer.id] { if let count = component.stateContext.stateValue?.participants[peer.id] {
subtitle = environment.strings.Conversation_StatusSubscribers(Int32(count)) subtitle = environment.strings.Conversation_StatusSubscribers(Int32(max(1, count)))
} else { } else {
subtitle = environment.strings.Channel_Status subtitle = environment.strings.Channel_Status
} }
} else { } else {
if let count = component.stateContext.stateValue?.participants[peer.id] { if let count = component.stateContext.stateValue?.participants[peer.id] {
subtitle = environment.strings.Conversation_StatusMembers(Int32(count)) subtitle = environment.strings.Conversation_StatusMembers(Int32(max(1, count)))
} else { } else {
subtitle = environment.strings.Group_Status subtitle = environment.strings.Group_Status
} }
@ -1079,7 +1083,7 @@ final class ShareWithPeersScreenComponent: Component {
} }
} }
let _ = visibleItem.update( let itemSize = visibleItem.update(
transition: itemTransition, transition: itemTransition,
component: AnyComponent(PeerListItemComponent( component: AnyComponent(PeerListItemComponent(
context: component.context, context: component.context,
@ -1150,6 +1154,8 @@ final class ShareWithPeersScreenComponent: Component {
environment: {}, environment: {},
containerSize: itemFrame.size containerSize: itemFrame.size
) )
self.itemSizes[itemId] = itemSize
if let itemView = visibleItem.view { if let itemView = visibleItem.view {
if itemView.superview == nil { if itemView.superview == nil {
self.itemContainerView.addSubview(itemView) self.itemContainerView.addSubview(itemView)
@ -1389,13 +1395,13 @@ final class ShareWithPeersScreenComponent: Component {
let subtitle: String? let subtitle: String?
if case let .legacyGroup(group) = peer { if case let .legacyGroup(group) = peer {
subtitle = environment.strings.Conversation_StatusMembers(Int32(group.participantCount)) subtitle = environment.strings.Conversation_StatusMembers(Int32(max(1, group.participantCount)))
} else if case let .channel(channel) = peer { } else if case let .channel(channel) = peer {
if let count = stateValue.participants[peer.id] { if let count = stateValue.participants[peer.id] {
if case .broadcast = channel.info { if case .broadcast = channel.info {
subtitle = environment.strings.Conversation_StatusSubscribers(Int32(count)) subtitle = environment.strings.Conversation_StatusSubscribers(Int32(max(1, count)))
} else { } else {
subtitle = environment.strings.Conversation_StatusMembers(Int32(count)) subtitle = environment.strings.Conversation_StatusMembers(Int32(max(1, count)))
} }
} else { } else {
subtitle = nil subtitle = nil

View File

@ -353,9 +353,6 @@ public extension ShareWithPeersScreen {
} }
} }
if case let .channel(channel) = peer { if case let .channel(channel) = peer {
if channel.isForum {
return false
}
if case .broadcast = channel.info { if case .broadcast = channel.info {
return false return false
} }
@ -496,9 +493,6 @@ public extension ShareWithPeersScreen {
return true return true
} }
} else if case let .channel(channel) = peer { } else if case let .channel(channel) = peer {
if channel.isForum {
return false
}
if case .broadcast = channel.info { if case .broadcast = channel.info {
return false return false
} }