Various improvements

This commit is contained in:
Ali 2023-10-20 02:46:59 +04:00
parent e732ec44a7
commit 2ae69b577f
5 changed files with 26 additions and 19 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 {