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 let .messageOptions(_, _, info) = presentationInterfaceState.subject {
|
||||||
if case .reply = info {
|
if case .reply = info {
|
||||||
//TODO:localize
|
//TODO:localize
|
||||||
|
let titleContent: ChatTitleContent
|
||||||
if case let .reply(hasQuote) = messageOptionsTitleInfo, hasQuote {
|
if case let .reply(hasQuote) = messageOptionsTitleInfo, hasQuote {
|
||||||
strongSelf.chatTitleView?.titleContent = .custom("Reply to Quote", subtitleText, false)
|
titleContent = .custom("Reply to Quote", subtitleText, false)
|
||||||
} else {
|
} 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 {
|
} else if case .link = info {
|
||||||
//TODO:localize
|
//TODO:localize
|
||||||
|
@ -487,8 +487,8 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
|||||||
|
|
||||||
return (messages, Int32(messages.count), false)
|
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: MessageId(peerId: PeerId(0), namespace: 0, id: 0), quote: nil, loadMore: nil)
|
||||||
case .reply:
|
case let .reply(reply):
|
||||||
let messages = combineLatest(context.account.postbox.messagesAtIds(messageIds), context.account.postbox.loadedPeerWithId(context.account.peerId))
|
let messages = combineLatest(context.account.postbox.messagesAtIds(messageIds), context.account.postbox.loadedPeerWithId(context.account.peerId))
|
||||||
|> map { messages, accountPeer -> ([Message], Int32, Bool) in
|
|> map { messages, accountPeer -> ([Message], Int32, Bool) in
|
||||||
var messages = messages
|
var messages = messages
|
||||||
@ -501,7 +501,7 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
|||||||
|
|
||||||
return (messages, Int32(messages.count), false)
|
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):
|
case let .link(link):
|
||||||
let messages = link.options
|
let messages = link.options
|
||||||
|> mapToSignal { options -> Signal<(ChatControllerSubject.LinkOptions, Peer, Message?), NoError> in
|
|> mapToSignal { options -> Signal<(ChatControllerSubject.LinkOptions, Peer, Message?), NoError> in
|
||||||
@ -576,7 +576,7 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
|||||||
|
|
||||||
return ([message], 1, false)
|
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 {
|
} else {
|
||||||
source = .default
|
source = .default
|
||||||
|
@ -417,7 +417,7 @@ private var nextClientId: Int32 = 1
|
|||||||
|
|
||||||
public enum ChatHistoryListSource {
|
public enum ChatHistoryListSource {
|
||||||
case `default`
|
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 {
|
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>
|
let historyViewUpdate: Signal<(ChatHistoryViewUpdate, Int, ChatHistoryLocationInput?, ClosedRange<Int32>?), NoError>
|
||||||
var isFirstTime = true
|
var isFirstTime = true
|
||||||
var updateAllOnEachVersion = false
|
var updateAllOnEachVersion = false
|
||||||
if case let .custom(messages, at, _) = self.source {
|
if case let .custom(messages, at, quote, _) = self.source {
|
||||||
updateAllOnEachVersion = true
|
updateAllOnEachVersion = true
|
||||||
historyViewUpdate = messages
|
historyViewUpdate = messages
|
||||||
|> map { messages, _, hasMore in
|
|> map { messages, _, hasMore in
|
||||||
@ -1097,7 +1097,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
|
|||||||
|
|
||||||
let scrollPosition: ChatHistoryViewScrollPosition?
|
let scrollPosition: ChatHistoryViewScrollPosition?
|
||||||
if isFirstTime, let messageIndex = messages.first(where: { $0.id == at })?.index {
|
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
|
isFirstTime = false
|
||||||
} else {
|
} else {
|
||||||
scrollPosition = nil
|
scrollPosition = nil
|
||||||
|
@ -203,7 +203,7 @@ final class OverlayAudioPlayerControllerNode: ViewControllerTracingNode, UIGestu
|
|||||||
|
|
||||||
let source: ChatHistoryListSource
|
let source: ChatHistoryListSource
|
||||||
if let playlistLocation = playlistLocation as? PeerMessagesPlaylistLocation, case let .custom(messages, at, loadMore) = playlistLocation {
|
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
|
self.isGlobalSearch = true
|
||||||
} else {
|
} else {
|
||||||
source = .default
|
source = .default
|
||||||
|
@ -199,16 +199,16 @@ func preparedChatHistoryViewTransition(from fromView: ChatHistoryView?, to toVie
|
|||||||
var position = position
|
var position = position
|
||||||
if case .center = position, highlight {
|
if case .center = position, highlight {
|
||||||
scrolledToIndex = scrollSubject
|
scrolledToIndex = scrollSubject
|
||||||
if let quote = scrollSubject.quote {
|
}
|
||||||
position = .center(.custom({ itemNode in
|
if case .center = position, let quote = scrollSubject.quote {
|
||||||
if let itemNode = itemNode as? ChatMessageBubbleItemNode {
|
position = .center(.custom({ itemNode in
|
||||||
if let quoteRect = itemNode.getQuoteRect(quote: quote) {
|
if let itemNode = itemNode as? ChatMessageBubbleItemNode {
|
||||||
return quoteRect.midY
|
if let quoteRect = itemNode.getQuoteRect(quote: quote) {
|
||||||
}
|
return quoteRect.midY
|
||||||
}
|
}
|
||||||
return 0.0
|
}
|
||||||
}))
|
return 0.0
|
||||||
}
|
}))
|
||||||
}
|
}
|
||||||
var index = toView.filteredEntries.count - 1
|
var index = toView.filteredEntries.count - 1
|
||||||
for entry in toView.filteredEntries {
|
for entry in toView.filteredEntries {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user