Merge commit 'e52134993a' into beta

This commit is contained in:
Ilya Laktyushin 2025-11-15 20:48:20 +04:00
commit d8efc7c865
6 changed files with 55 additions and 11 deletions

View file

@ -78,7 +78,11 @@ public final class GiftAuctionContext {
public let gift: StarGift
public var isActive: Bool {
return myState?.bidAmount != nil
if case .finished = auctionState {
return false
} else {
return myState?.bidAmount != nil
}
}
private let disposable = MetaDisposable()

View file

@ -46,7 +46,7 @@ let collageGrids: [Camera.CollageGrid] = [
Camera.CollageGrid(rows: [Camera.CollageGrid.Row(columns: 2), Camera.CollageGrid.Row(columns: 2), Camera.CollageGrid.Row(columns: 2)])
]
enum CameraMode: Equatable {
enum CameraMode: Int32, Equatable {
case photo
case video
case live
@ -318,6 +318,7 @@ private final class CameraScreenComponent: CombinedComponent {
fileprivate var sendAsPeerId: EnginePeer.Id?
fileprivate var isCustomTarget = false
fileprivate var canLivestream = true
private var privacy: EngineStoryPrivacy = EngineStoryPrivacy(base: .everyone, additionallyIncludePeers: [])
private var allowComments = true
@ -388,6 +389,17 @@ private final class CameraScreenComponent: CombinedComponent {
if let customTarget = controller.customTarget {
self.sendAsPeerId = customTarget
self.isCustomTarget = true
let _ = (self.context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: customTarget))
|> deliverOnMainQueue).start(next: { [weak self] peer in
guard let self else {
return
}
if case let .channel(channel) = peer, case .group = channel.info {
self.canLivestream = false
self.updated()
}
})
}
let _ = (mediaEditorStoredState(engine: self.context.engine)
@ -2091,7 +2103,7 @@ private final class CameraScreenComponent: CombinedComponent {
}
var availableModes: [CameraMode] = [.photo, .video]
if !isTablet {
if !isTablet && state.canLivestream {
availableModes.append(.live)
}

View file

@ -115,7 +115,7 @@ final class ModeComponent: Component {
private var backgroundView = UIView()
private var glassContainerView = GlassBackgroundContainerView()
private var selectionView = GlassBackgroundView()
private var itemViews: [ItemView] = []
private var itemViews: [Int32: ItemView] = [:]
public func matches(tag: Any) -> Bool {
if let component = self.component, let componentTag = component.tag {
@ -179,14 +179,19 @@ final class ModeComponent: Component {
var itemFrame = CGRect(origin: isTablet ? .zero : CGPoint(x: inset, y: 0.0), size: buttonSize)
var selectedCenter = itemFrame.minX
var selectedFrame = itemFrame
var validKeys: Set<Int32> = Set()
for mode in component.availableModes.reversed() {
let id = mode.rawValue
validKeys.insert(id)
let itemView: ItemView
if self.itemViews.count == i {
if let current = self.itemViews[id] {
itemView = current
} else {
itemView = ItemView()
self.backgroundView.addSubview(itemView)
self.itemViews.append(itemView)
} else {
itemView = self.itemViews[i]
self.itemViews[id] = itemView
}
itemView.pressed = {
updatedMode(mode)
@ -216,6 +221,20 @@ final class ModeComponent: Component {
i += 1
}
var removeKeys: [Int32] = []
for (id, itemView) in self.itemViews {
if !validKeys.contains(id) {
removeKeys.append(id)
transition.setAlpha(view: itemView, alpha: 0.0, completion: { _ in
itemView.removeFromSuperview()
})
}
}
for id in removeKeys {
self.itemViews.removeValue(forKey: id)
}
let totalSize: CGSize
let size: CGSize
if isTablet {

View file

@ -1940,7 +1940,9 @@ private class QrContentNode: ASDisplayNode, ContentNode {
imageSide = 220.0
if size.width > 375.0 {
if textLength > 12 {
if textLength > 18 {
fontSize = 16.0
} else if textLength > 12 {
fontSize = 22.0
} else {
fontSize = 24.0

View file

@ -1058,7 +1058,7 @@ public class NewContactScreen: ViewControllerComponentContainer {
fileprivate func complete(result: NewContactScreenComponent.Result) {
let entities = generateChatInputTextEntities(result.note)
if let peer = result.peer {
let _ = self.context.engine.contacts.addContactInteractively(
let _ = (self.context.engine.contacts.addContactInteractively(
peerId: peer.id,
firstName: result.firstName,
lastName: result.lastName,
@ -1066,7 +1066,7 @@ public class NewContactScreen: ViewControllerComponentContainer {
noteText: result.note.string,
noteEntities: entities,
addToPrivacyExceptions: result.addToPrivacyExceptions
).startStandalone(completed: { [weak self] in
) |> deliverOnMainQueue).startStandalone(completed: { [weak self] in
if !result.syncContactToPhone {
self?.completion(result.peer, nil, nil)
}

View file

@ -101,6 +101,13 @@ public extension ShareWithPeersScreen {
switch subject {
case let .peers(peers, _):
let peers = peers.filter { peer in
if liveStream, case let .channel(channel) = peer, case .group = channel.info {
return false
} else {
return true
}
}
self.stateDisposable = (.single(peers)
|> mapToSignal { peers -> Signal<([EnginePeer], [EnginePeer.Id: Optional<Int>]), NoError> in
return context.engine.data.subscribe(