mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-10-09 03:20:48 +00:00
Merge commit '48a6568df0e78649100a6be058d089e1992e6acd'
This commit is contained in:
commit
db38904254
@ -802,6 +802,64 @@ open class ItemListControllerNode: ASDisplayNode {
|
||||
self.toolbarItem = transition.toolbarItem
|
||||
}
|
||||
|
||||
var updateFooterItem = false
|
||||
if let footerItem = self.footerItem, let updatedFooterItem = transition.footerItem {
|
||||
updateFooterItem = !footerItem.isEqual(to: updatedFooterItem)
|
||||
} else if (self.footerItem != nil) != (transition.footerItem != nil) {
|
||||
updateFooterItem = true
|
||||
}
|
||||
if updateFooterItem {
|
||||
let hadFooter = self.footerItem != nil
|
||||
self.footerItem = transition.footerItem
|
||||
if let footerItem = transition.footerItem {
|
||||
let updatedNode = footerItem.node(current: self.footerItemNode)
|
||||
if let footerItemNode = self.footerItemNode, updatedNode !== footerItemNode {
|
||||
footerItemNode.removeFromSupernode()
|
||||
}
|
||||
if self.footerItemNode !== updatedNode {
|
||||
self.footerItemNode = updatedNode
|
||||
|
||||
let footerHeight: CGFloat
|
||||
if let validLayout = self.validLayout {
|
||||
footerHeight = updatedNode.updateLayout(layout: validLayout.0, transition: .immediate)
|
||||
} else {
|
||||
footerHeight = 100.0
|
||||
}
|
||||
self.addSubnode(updatedNode)
|
||||
|
||||
if !hadFooter && !transition.firstTime {
|
||||
updatedNode.layer.animatePosition(from: CGPoint(x: 0.0, y: footerHeight), to: .zero, duration: 0.25, additive: true)
|
||||
}
|
||||
|
||||
if !hadFooter, let (layout, navigationBarHeight, _) = self.validLayout {
|
||||
var insets = layout.insets(options: [.input])
|
||||
insets.top += navigationBarHeight
|
||||
insets.bottom = footerHeight
|
||||
|
||||
let inset = max(16.0, floor((layout.size.width - 674.0) / 2.0))
|
||||
if layout.size.width >= 375.0 {
|
||||
insets.left += inset
|
||||
insets.right += inset
|
||||
}
|
||||
|
||||
let (duration, curve) = listViewAnimationDurationAndCurve(transition: .immediate)
|
||||
self.listNode.transaction(deleteIndices: [], insertIndicesAndItems: [], updateIndicesAndItems: [], options: [.Synchronous, .LowLatency], scrollToItem: nil, updateSizeAndInsets: ListViewUpdateSizeAndInsets(size: layout.size, insets: insets, duration: duration, curve: curve), stationaryItemRange: nil, updateOpaqueState: nil, completion: { _ in })
|
||||
}
|
||||
}
|
||||
} else if let footerItemNode = self.footerItemNode {
|
||||
let footerHeight: CGFloat
|
||||
if let validLayout = self.validLayout {
|
||||
footerHeight = footerItemNode.updateLayout(layout: validLayout.0, transition: .immediate)
|
||||
} else {
|
||||
footerHeight = 100.0
|
||||
}
|
||||
footerItemNode.layer.animatePosition(from: .zero, to: CGPoint(x: 0.0, y: footerHeight), duration: 0.25, removeOnCompletion: false, additive: true, completion: { [weak footerItemNode] _ in
|
||||
footerItemNode?.removeFromSupernode()
|
||||
})
|
||||
self.footerItemNode = nil
|
||||
}
|
||||
}
|
||||
|
||||
self.listNode.transaction(deleteIndices: transition.entries.deletions, insertIndicesAndItems: transition.entries.insertions, updateIndicesAndItems: transition.entries.updates, options: options, scrollToItem: scrollToItem, updateOpaqueState: ItemListNodeOpaqueState(mergedEntries: transition.mergedEntries), completion: { [weak self] _ in
|
||||
if let strongSelf = self {
|
||||
if !strongSelf.didSetReady {
|
||||
@ -924,48 +982,6 @@ open class ItemListControllerNode: ASDisplayNode {
|
||||
self.headerItemNode = nil
|
||||
}
|
||||
}
|
||||
var updateFooterItem = false
|
||||
if let footerItem = self.footerItem, let updatedFooterItem = transition.footerItem {
|
||||
updateFooterItem = !footerItem.isEqual(to: updatedFooterItem)
|
||||
} else if (self.footerItem != nil) != (transition.footerItem != nil) {
|
||||
updateFooterItem = true
|
||||
}
|
||||
if updateFooterItem {
|
||||
let hadFooter = self.footerItem != nil
|
||||
self.footerItem = transition.footerItem
|
||||
if let footerItem = transition.footerItem {
|
||||
let updatedNode = footerItem.node(current: self.footerItemNode)
|
||||
if let footerItemNode = self.footerItemNode, updatedNode !== footerItemNode {
|
||||
footerItemNode.removeFromSupernode()
|
||||
}
|
||||
if self.footerItemNode !== updatedNode {
|
||||
self.footerItemNode = updatedNode
|
||||
|
||||
let footerHeight: CGFloat
|
||||
if let validLayout = self.validLayout {
|
||||
footerHeight = updatedNode.updateLayout(layout: validLayout.0, transition: .immediate)
|
||||
} else {
|
||||
footerHeight = 100.0
|
||||
}
|
||||
self.addSubnode(updatedNode)
|
||||
|
||||
if !hadFooter && !transition.firstTime {
|
||||
updatedNode.layer.animatePosition(from: CGPoint(x: 0.0, y: footerHeight), to: .zero, duration: 0.25, additive: true)
|
||||
}
|
||||
}
|
||||
} else if let footerItemNode = self.footerItemNode {
|
||||
let footerHeight: CGFloat
|
||||
if let validLayout = self.validLayout {
|
||||
footerHeight = footerItemNode.updateLayout(layout: validLayout.0, transition: .immediate)
|
||||
} else {
|
||||
footerHeight = 100.0
|
||||
}
|
||||
footerItemNode.layer.animatePosition(from: .zero, to: CGPoint(x: 0.0, y: footerHeight), duration: 0.25, removeOnCompletion: false, additive: true, completion: { [weak footerItemNode] _ in
|
||||
footerItemNode?.removeFromSupernode()
|
||||
})
|
||||
self.footerItemNode = nil
|
||||
}
|
||||
}
|
||||
self.listNode.scrollEnabled = transition.scrollEnabled
|
||||
|
||||
if updateSearchItem {
|
||||
|
@ -123,7 +123,7 @@ final class EmojiPickerItemNode: ListViewItemNode {
|
||||
if let snapshot = strongSelf.view.snapshotView(afterScreenUpdates: false) {
|
||||
snapshot.frame = CGRect(origin: CGPoint(x: 0.0, y: -insets.top), size: snapshot.frame.size)
|
||||
strongSelf.view.addSubview(snapshot)
|
||||
snapshot.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { _ in
|
||||
snapshot.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, delay: 0.25, removeOnCompletion: false, completion: { _ in
|
||||
snapshot.removeFromSuperview()
|
||||
})
|
||||
}
|
||||
|
@ -261,7 +261,7 @@ final class PeerNameColorChatPreviewItemNode: ListViewItemNode {
|
||||
if let snapshot = strongSelf.view.snapshotView(afterScreenUpdates: false) {
|
||||
snapshot.frame = CGRect(origin: CGPoint(x: 0.0, y: -insets.top), size: snapshot.frame.size)
|
||||
strongSelf.view.addSubview(snapshot)
|
||||
snapshot.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, delay: 0.1, removeOnCompletion: false, completion: { _ in
|
||||
snapshot.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, delay: 0.25, removeOnCompletion: false, completion: { _ in
|
||||
snapshot.removeFromSuperview()
|
||||
})
|
||||
}
|
||||
|
@ -318,7 +318,7 @@ public func PeerNameColorScreen(
|
||||
statePromise.get(),
|
||||
context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: peerId))
|
||||
)
|
||||
|> mapToSignal { state, peer -> Signal<EmojiPagerContentComponent?, NoError> in
|
||||
|> mapToSignal { state, peer -> Signal<EmojiPagerContentComponent, NoError> in
|
||||
var selectedEmojiId: Int64?
|
||||
if let updatedBackgroundEmojiId = state.updatedBackgroundEmojiId {
|
||||
selectedEmojiId = updatedBackgroundEmojiId
|
||||
@ -353,7 +353,6 @@ public func PeerNameColorScreen(
|
||||
selectedItems: Set(selectedItems),
|
||||
backgroundIconColor: nameColor
|
||||
)
|
||||
|> map(Optional.init)
|
||||
}
|
||||
|
||||
let presentationData = updatedPresentationData?.signal ?? context.sharedContext.presentationData
|
||||
@ -361,8 +360,8 @@ public func PeerNameColorScreen(
|
||||
presentationData,
|
||||
statePromise.get(),
|
||||
context.engine.stickers.availableReactions(),
|
||||
context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: peerId)),
|
||||
.single(nil) |> then(emojiContent)
|
||||
context.engine.data.subscribe(TelegramEngine.EngineData.Item.Peer.Peer(id: peerId)),
|
||||
emojiContent
|
||||
)
|
||||
|> deliverOnMainQueue
|
||||
|> map { presentationData, state, availableReactions, peer, emojiContent -> (ItemListControllerState, (ItemListNodeState, Any)) in
|
||||
@ -478,7 +477,7 @@ public func PeerNameColorScreen(
|
||||
}
|
||||
)
|
||||
|
||||
emojiContent?.inputInteractionHolder.inputInteraction = EmojiPagerContentComponent.InputInteraction(
|
||||
emojiContent.inputInteractionHolder.inputInteraction = EmojiPagerContentComponent.InputInteraction(
|
||||
performItemAction: { _, item, _, _, _, _ in
|
||||
var selectedFileId: Int64?
|
||||
if let fileId = item.itemFile?.fileId.id {
|
||||
|
Loading…
x
Reference in New Issue
Block a user