Skip to content

Commit d8efc7c

Browse files
committed
Merge commit 'e52134993ab3602d60e6a002ee6ab534fa78b2eb' into beta
2 parents da08c69 + e521349 commit d8efc7c

File tree

6 files changed

+55
-11
lines changed

6 files changed

+55
-11
lines changed

submodules/TelegramCore/Sources/TelegramEngine/Payments/StarGiftsAuctions.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,11 @@ public final class GiftAuctionContext {
7878
public let gift: StarGift
7979

8080
public var isActive: Bool {
81-
return myState?.bidAmount != nil
81+
if case .finished = auctionState {
82+
return false
83+
} else {
84+
return myState?.bidAmount != nil
85+
}
8286
}
8387

8488
private let disposable = MetaDisposable()

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/Chat/ChatQrCodeScreen/Sources/ChatQrCodeScreen.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1940,7 +1940,9 @@ private class QrContentNode: ASDisplayNode, ContentNode {
19401940
imageSide = 220.0
19411941

19421942
if size.width > 375.0 {
1943-
if textLength > 12 {
1943+
if textLength > 18 {
1944+
fontSize = 16.0
1945+
} else if textLength > 12 {
19441946
fontSize = 22.0
19451947
} else {
19461948
fontSize = 24.0

submodules/TelegramUI/Components/Contacts/NewContactScreen/Sources/NewContactScreen.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1058,15 +1058,15 @@ public class NewContactScreen: ViewControllerComponentContainer {
10581058
fileprivate func complete(result: NewContactScreenComponent.Result) {
10591059
let entities = generateChatInputTextEntities(result.note)
10601060
if let peer = result.peer {
1061-
let _ = self.context.engine.contacts.addContactInteractively(
1061+
let _ = (self.context.engine.contacts.addContactInteractively(
10621062
peerId: peer.id,
10631063
firstName: result.firstName,
10641064
lastName: result.lastName,
10651065
phoneNumber: result.phoneNumber,
10661066
noteText: result.note.string,
10671067
noteEntities: entities,
10681068
addToPrivacyExceptions: result.addToPrivacyExceptions
1069-
).startStandalone(completed: { [weak self] in
1069+
) |> deliverOnMainQueue).startStandalone(completed: { [weak self] in
10701070
if !result.syncContactToPhone {
10711071
self?.completion(result.peer, nil, nil)
10721072
}

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)