mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 14:45:21 +00:00
Various fixes
This commit is contained in:
@@ -802,6 +802,64 @@ open class ItemListControllerNode: ASDisplayNode {
|
|||||||
self.toolbarItem = transition.toolbarItem
|
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
|
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 let strongSelf = self {
|
||||||
if !strongSelf.didSetReady {
|
if !strongSelf.didSetReady {
|
||||||
@@ -924,48 +982,6 @@ open class ItemListControllerNode: ASDisplayNode {
|
|||||||
self.headerItemNode = nil
|
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
|
self.listNode.scrollEnabled = transition.scrollEnabled
|
||||||
|
|
||||||
if updateSearchItem {
|
if updateSearchItem {
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ final class EmojiPickerItemNode: ListViewItemNode {
|
|||||||
if let snapshot = strongSelf.view.snapshotView(afterScreenUpdates: false) {
|
if let snapshot = strongSelf.view.snapshotView(afterScreenUpdates: false) {
|
||||||
snapshot.frame = CGRect(origin: CGPoint(x: 0.0, y: -insets.top), size: snapshot.frame.size)
|
snapshot.frame = CGRect(origin: CGPoint(x: 0.0, y: -insets.top), size: snapshot.frame.size)
|
||||||
strongSelf.view.addSubview(snapshot)
|
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()
|
snapshot.removeFromSuperview()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -261,7 +261,7 @@ final class PeerNameColorChatPreviewItemNode: ListViewItemNode {
|
|||||||
if let snapshot = strongSelf.view.snapshotView(afterScreenUpdates: false) {
|
if let snapshot = strongSelf.view.snapshotView(afterScreenUpdates: false) {
|
||||||
snapshot.frame = CGRect(origin: CGPoint(x: 0.0, y: -insets.top), size: snapshot.frame.size)
|
snapshot.frame = CGRect(origin: CGPoint(x: 0.0, y: -insets.top), size: snapshot.frame.size)
|
||||||
strongSelf.view.addSubview(snapshot)
|
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()
|
snapshot.removeFromSuperview()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -318,7 +318,7 @@ public func PeerNameColorScreen(
|
|||||||
statePromise.get(),
|
statePromise.get(),
|
||||||
context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: peerId))
|
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?
|
var selectedEmojiId: Int64?
|
||||||
if let updatedBackgroundEmojiId = state.updatedBackgroundEmojiId {
|
if let updatedBackgroundEmojiId = state.updatedBackgroundEmojiId {
|
||||||
selectedEmojiId = updatedBackgroundEmojiId
|
selectedEmojiId = updatedBackgroundEmojiId
|
||||||
@@ -353,7 +353,6 @@ public func PeerNameColorScreen(
|
|||||||
selectedItems: Set(selectedItems),
|
selectedItems: Set(selectedItems),
|
||||||
backgroundIconColor: nameColor
|
backgroundIconColor: nameColor
|
||||||
)
|
)
|
||||||
|> map(Optional.init)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let presentationData = updatedPresentationData?.signal ?? context.sharedContext.presentationData
|
let presentationData = updatedPresentationData?.signal ?? context.sharedContext.presentationData
|
||||||
@@ -361,8 +360,8 @@ public func PeerNameColorScreen(
|
|||||||
presentationData,
|
presentationData,
|
||||||
statePromise.get(),
|
statePromise.get(),
|
||||||
context.engine.stickers.availableReactions(),
|
context.engine.stickers.availableReactions(),
|
||||||
context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: peerId)),
|
context.engine.data.subscribe(TelegramEngine.EngineData.Item.Peer.Peer(id: peerId)),
|
||||||
.single(nil) |> then(emojiContent)
|
emojiContent
|
||||||
)
|
)
|
||||||
|> deliverOnMainQueue
|
|> deliverOnMainQueue
|
||||||
|> map { presentationData, state, availableReactions, peer, emojiContent -> (ItemListControllerState, (ItemListNodeState, Any)) in
|
|> 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
|
performItemAction: { _, item, _, _, _, _ in
|
||||||
var selectedFileId: Int64?
|
var selectedFileId: Int64?
|
||||||
if let fileId = item.itemFile?.fileId.id {
|
if let fileId = item.itemFile?.fileId.id {
|
||||||
|
|||||||
Reference in New Issue
Block a user