mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Various improvements
This commit is contained in:
parent
e732ec44a7
commit
2ae69b577f
@ -5382,10 +5382,17 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
if case let .messageOptions(_, _, info) = presentationInterfaceState.subject {
|
||||
if case .reply = info {
|
||||
//TODO:localize
|
||||
let titleContent: ChatTitleContent
|
||||
if case let .reply(hasQuote) = messageOptionsTitleInfo, hasQuote {
|
||||
strongSelf.chatTitleView?.titleContent = .custom("Reply to Quote", subtitleText, false)
|
||||
titleContent = .custom("Reply to Quote", subtitleText, false)
|
||||
} else {
|
||||
strongSelf.chatTitleView?.titleContent = .custom("Reply to Message", subtitleText, false)
|
||||
titleContent = .custom("Reply to Message", subtitleText, false)
|
||||
}
|
||||
if strongSelf.chatTitleView?.titleContent != titleContent {
|
||||
if strongSelf.chatTitleView?.titleContent != nil {
|
||||
strongSelf.chatTitleView?.animateLayoutTransition()
|
||||
}
|
||||
strongSelf.chatTitleView?.titleContent = titleContent
|
||||
}
|
||||
} else if case .link = info {
|
||||
//TODO:localize
|
||||
|
@ -487,8 +487,8 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
||||
|
||||
return (messages, Int32(messages.count), false)
|
||||
}
|
||||
source = .custom(messages: messages, messageId: MessageId(peerId: PeerId(0), namespace: 0, id: 0), loadMore: nil)
|
||||
case .reply:
|
||||
source = .custom(messages: messages, messageId: MessageId(peerId: PeerId(0), namespace: 0, id: 0), quote: nil, loadMore: nil)
|
||||
case let .reply(reply):
|
||||
let messages = combineLatest(context.account.postbox.messagesAtIds(messageIds), context.account.postbox.loadedPeerWithId(context.account.peerId))
|
||||
|> map { messages, accountPeer -> ([Message], Int32, Bool) in
|
||||
var messages = messages
|
||||
@ -501,7 +501,7 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
||||
|
||||
return (messages, Int32(messages.count), false)
|
||||
}
|
||||
source = .custom(messages: messages, messageId: MessageId(peerId: PeerId(0), namespace: 0, id: 0), loadMore: nil)
|
||||
source = .custom(messages: messages, messageId: messageIds.first ?? MessageId(peerId: PeerId(0), namespace: 0, id: 0), quote: reply.quote?.text, loadMore: nil)
|
||||
case let .link(link):
|
||||
let messages = link.options
|
||||
|> mapToSignal { options -> Signal<(ChatControllerSubject.LinkOptions, Peer, Message?), NoError> in
|
||||
@ -576,7 +576,7 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
||||
|
||||
return ([message], 1, false)
|
||||
}
|
||||
source = .custom(messages: messages, messageId: MessageId(peerId: PeerId(0), namespace: 0, id: 0), loadMore: nil)
|
||||
source = .custom(messages: messages, messageId: MessageId(peerId: PeerId(0), namespace: 0, id: 0), quote: nil, loadMore: nil)
|
||||
}
|
||||
} else {
|
||||
source = .default
|
||||
|
@ -417,7 +417,7 @@ private var nextClientId: Int32 = 1
|
||||
|
||||
public enum ChatHistoryListSource {
|
||||
case `default`
|
||||
case custom(messages: Signal<([Message], Int32, Bool), NoError>, messageId: MessageId, loadMore: (() -> Void)?)
|
||||
case custom(messages: Signal<([Message], Int32, Bool), NoError>, messageId: MessageId, quote: String?, loadMore: (() -> Void)?)
|
||||
}
|
||||
|
||||
public final class ChatHistoryListNode: ListView, ChatHistoryNode {
|
||||
@ -1083,7 +1083,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
|
||||
let historyViewUpdate: Signal<(ChatHistoryViewUpdate, Int, ChatHistoryLocationInput?, ClosedRange<Int32>?), NoError>
|
||||
var isFirstTime = true
|
||||
var updateAllOnEachVersion = false
|
||||
if case let .custom(messages, at, _) = self.source {
|
||||
if case let .custom(messages, at, quote, _) = self.source {
|
||||
updateAllOnEachVersion = true
|
||||
historyViewUpdate = messages
|
||||
|> map { messages, _, hasMore in
|
||||
@ -1097,7 +1097,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
|
||||
|
||||
let scrollPosition: ChatHistoryViewScrollPosition?
|
||||
if isFirstTime, let messageIndex = messages.first(where: { $0.id == at })?.index {
|
||||
scrollPosition = .index(subject: MessageHistoryScrollToSubject(index: .message(messageIndex), quote: nil), position: .center(.bottom), directionHint: .Down, animated: false, highlight: false, displayLink: false)
|
||||
scrollPosition = .index(subject: MessageHistoryScrollToSubject(index: .message(messageIndex), quote: quote), position: .center(.bottom), directionHint: .Down, animated: false, highlight: false, displayLink: false)
|
||||
isFirstTime = false
|
||||
} else {
|
||||
scrollPosition = nil
|
||||
|
@ -203,7 +203,7 @@ final class OverlayAudioPlayerControllerNode: ViewControllerTracingNode, UIGestu
|
||||
|
||||
let source: ChatHistoryListSource
|
||||
if let playlistLocation = playlistLocation as? PeerMessagesPlaylistLocation, case let .custom(messages, at, loadMore) = playlistLocation {
|
||||
source = .custom(messages: messages, messageId: at, loadMore: loadMore)
|
||||
source = .custom(messages: messages, messageId: at, quote: nil, loadMore: loadMore)
|
||||
self.isGlobalSearch = true
|
||||
} else {
|
||||
source = .default
|
||||
|
@ -199,16 +199,16 @@ func preparedChatHistoryViewTransition(from fromView: ChatHistoryView?, to toVie
|
||||
var position = position
|
||||
if case .center = position, highlight {
|
||||
scrolledToIndex = scrollSubject
|
||||
if let quote = scrollSubject.quote {
|
||||
position = .center(.custom({ itemNode in
|
||||
if let itemNode = itemNode as? ChatMessageBubbleItemNode {
|
||||
if let quoteRect = itemNode.getQuoteRect(quote: quote) {
|
||||
return quoteRect.midY
|
||||
}
|
||||
}
|
||||
if case .center = position, let quote = scrollSubject.quote {
|
||||
position = .center(.custom({ itemNode in
|
||||
if let itemNode = itemNode as? ChatMessageBubbleItemNode {
|
||||
if let quoteRect = itemNode.getQuoteRect(quote: quote) {
|
||||
return quoteRect.midY
|
||||
}
|
||||
return 0.0
|
||||
}))
|
||||
}
|
||||
}
|
||||
return 0.0
|
||||
}))
|
||||
}
|
||||
var index = toView.filteredEntries.count - 1
|
||||
for entry in toView.filteredEntries {
|
||||
|
Loading…
x
Reference in New Issue
Block a user