Skip to content

Commit c7556ce

Browse files
committed
Remove story live mode in groups
1 parent 5390369 commit c7556ce

File tree

3 files changed

+45
-7
lines changed

3 files changed

+45
-7
lines changed

submodules/TelegramUI/Components/CameraScreen/Sources/CameraScreen.swift

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ let collageGrids: [Camera.CollageGrid] = [
4646
Camera.CollageGrid(rows: [Camera.CollageGrid.Row(columns: 2), Camera.CollageGrid.Row(columns: 2), Camera.CollageGrid.Row(columns: 2)])
4747
]
4848

49-
enum CameraMode: Equatable {
49+
enum CameraMode: Int32, Equatable {
5050
case photo
5151
case video
5252
case live
@@ -318,6 +318,7 @@ private final class CameraScreenComponent: CombinedComponent {
318318

319319
fileprivate var sendAsPeerId: EnginePeer.Id?
320320
fileprivate var isCustomTarget = false
321+
fileprivate var canLivestream = true
321322

322323
private var privacy: EngineStoryPrivacy = EngineStoryPrivacy(base: .everyone, additionallyIncludePeers: [])
323324
private var allowComments = true
@@ -388,6 +389,17 @@ private final class CameraScreenComponent: CombinedComponent {
388389
if let customTarget = controller.customTarget {
389390
self.sendAsPeerId = customTarget
390391
self.isCustomTarget = true
392+
393+
let _ = (self.context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: customTarget))
394+
|> deliverOnMainQueue).start(next: { [weak self] peer in
395+
guard let self else {
396+
return
397+
}
398+
if case let .channel(channel) = peer, case .group = channel.info {
399+
self.canLivestream = false
400+
self.updated()
401+
}
402+
})
391403
}
392404

393405
let _ = (mediaEditorStoredState(engine: self.context.engine)
@@ -2091,7 +2103,7 @@ private final class CameraScreenComponent: CombinedComponent {
20912103
}
20922104

20932105
var availableModes: [CameraMode] = [.photo, .video]
2094-
if !isTablet {
2106+
if !isTablet && state.canLivestream {
20952107
availableModes.append(.live)
20962108
}
20972109

submodules/TelegramUI/Components/CameraScreen/Sources/ModeComponent.swift

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ final class ModeComponent: Component {
115115
private var backgroundView = UIView()
116116
private var glassContainerView = GlassBackgroundContainerView()
117117
private var selectionView = GlassBackgroundView()
118-
private var itemViews: [ItemView] = []
118+
private var itemViews: [Int32: ItemView] = [:]
119119

120120
public func matches(tag: Any) -> Bool {
121121
if let component = self.component, let componentTag = component.tag {
@@ -179,14 +179,19 @@ final class ModeComponent: Component {
179179
var itemFrame = CGRect(origin: isTablet ? .zero : CGPoint(x: inset, y: 0.0), size: buttonSize)
180180
var selectedCenter = itemFrame.minX
181181
var selectedFrame = itemFrame
182+
183+
var validKeys: Set<Int32> = Set()
182184
for mode in component.availableModes.reversed() {
185+
let id = mode.rawValue
186+
validKeys.insert(id)
187+
183188
let itemView: ItemView
184-
if self.itemViews.count == i {
189+
if let current = self.itemViews[id] {
190+
itemView = current
191+
} else {
185192
itemView = ItemView()
186193
self.backgroundView.addSubview(itemView)
187-
self.itemViews.append(itemView)
188-
} else {
189-
itemView = self.itemViews[i]
194+
self.itemViews[id] = itemView
190195
}
191196
itemView.pressed = {
192197
updatedMode(mode)
@@ -216,6 +221,20 @@ final class ModeComponent: Component {
216221
i += 1
217222
}
218223

224+
var removeKeys: [Int32] = []
225+
for (id, itemView) in self.itemViews {
226+
if !validKeys.contains(id) {
227+
removeKeys.append(id)
228+
229+
transition.setAlpha(view: itemView, alpha: 0.0, completion: { _ in
230+
itemView.removeFromSuperview()
231+
})
232+
}
233+
}
234+
for id in removeKeys {
235+
self.itemViews.removeValue(forKey: id)
236+
}
237+
219238
let totalSize: CGSize
220239
let size: CGSize
221240
if isTablet {

submodules/TelegramUI/Components/ShareWithPeersScreen/Sources/ShareWithPeersScreenState.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,13 @@ public extension ShareWithPeersScreen {
101101

102102
switch subject {
103103
case let .peers(peers, _):
104+
let peers = peers.filter { peer in
105+
if liveStream, case let .channel(channel) = peer, case .group = channel.info {
106+
return false
107+
} else {
108+
return true
109+
}
110+
}
104111
self.stateDisposable = (.single(peers)
105112
|> mapToSignal { peers -> Signal<([EnginePeer], [EnginePeer.Id: Optional<Int>]), NoError> in
106113
return context.engine.data.subscribe(

0 commit comments

Comments
 (0)