Search filters fixes

This commit is contained in:
Ilya Laktyushin 2020-09-29 03:12:59 +04:00
parent c0e64535bf
commit 1d1e3de5d5
2 changed files with 16 additions and 2 deletions

View File

@ -564,6 +564,8 @@ public final class ChatListSearchContainerNode: SearchDisplayControllerContentNo
} else { } else {
transition.updateFrame(node: selectionPanelNode, frame: panelFrame) transition.updateFrame(node: selectionPanelNode, frame: panelFrame)
} }
bottomIntrinsicInset = panelHeight
} else if let selectionPanelNode = self.selectionPanelNode { } else if let selectionPanelNode = self.selectionPanelNode {
self.selectionPanelNode = nil self.selectionPanelNode = nil
transition.updateFrame(node: selectionPanelNode, frame: CGRect(origin: CGPoint(x: 0.0, y: layout.size.height), size: selectionPanelNode.bounds.size), completion: { [weak selectionPanelNode] _ in transition.updateFrame(node: selectionPanelNode, frame: CGRect(origin: CGPoint(x: 0.0, y: layout.size.height), size: selectionPanelNode.bounds.size), completion: { [weak selectionPanelNode] _ in
@ -576,6 +578,8 @@ public final class ChatListSearchContainerNode: SearchDisplayControllerContentNo
var bottomInset = layout.intrinsicInsets.bottom var bottomInset = layout.intrinsicInsets.bottom
if let inputHeight = layout.inputHeight { if let inputHeight = layout.inputHeight {
bottomInset = inputHeight bottomInset = inputHeight
} else if let _ = self.selectionPanelNode {
bottomInset = bottomIntrinsicInset
} else if case .root = self.groupId { } else if case .root = self.groupId {
bottomInset -= bottomIntrinsicInset bottomInset -= bottomIntrinsicInset
} }

View File

@ -649,7 +649,8 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
let currentViewVersion = Atomic<Int?>(value: nil) let currentViewVersion = Atomic<Int?>(value: nil)
let historyViewUpdate: Signal<(ChatHistoryViewUpdate, Int), NoError> let historyViewUpdate: Signal<(ChatHistoryViewUpdate, Int), NoError>
if case let .custom(messages, _, loadMore) = source { var isFirstTime = true
if case let .custom(messages, at, _) = source {
historyViewUpdate = messages historyViewUpdate = messages
|> map { messages, _, hasMore in |> map { messages, _, hasMore in
let version = currentViewVersion.modify({ value in let version = currentViewVersion.modify({ value in
@ -659,7 +660,16 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
return 0 return 0
} }
})! })!
return (ChatHistoryViewUpdate.HistoryView(view: MessageHistoryView(tagMask: nil, namespaces: .all, entries: messages.reversed().map { MessageHistoryEntry(message: $0, isRead: false, location: nil, monthLocation: nil, attributes: MutableMessageHistoryEntryAttributes(authorIsContact: false)) }, holeEarlier: hasMore), type: .Generic(type: ViewUpdateType.Initial), scrollPosition: nil, flashIndicators: false, originalScrollPosition: nil, initialData: ChatHistoryCombinedInitialData(initialData: nil, buttonKeyboardMessage: nil, cachedData: nil, cachedDataMessages: nil, readStateData: nil), id: 0), version)
let scrollPosition: ChatHistoryViewScrollPosition?
if isFirstTime, let messageIndex = messages.first(where: { $0.id == at })?.index {
scrollPosition = .index(index: .message(messageIndex), position: .center(.bottom), directionHint: .Down, animated: false, highlight: false)
isFirstTime = false
} else {
scrollPosition = nil
}
return (ChatHistoryViewUpdate.HistoryView(view: MessageHistoryView(tagMask: nil, namespaces: .all, entries: messages.reversed().map { MessageHistoryEntry(message: $0, isRead: false, location: nil, monthLocation: nil, attributes: MutableMessageHistoryEntryAttributes(authorIsContact: false)) }, holeEarlier: hasMore), type: .Generic(type: ViewUpdateType.Initial), scrollPosition: scrollPosition, flashIndicators: false, originalScrollPosition: nil, initialData: ChatHistoryCombinedInitialData(initialData: nil, buttonKeyboardMessage: nil, cachedData: nil, cachedDataMessages: nil, readStateData: nil), id: 0), version)
} }
} else { } else {
historyViewUpdate = self.chatHistoryLocationPromise.get() historyViewUpdate = self.chatHistoryLocationPromise.get()