mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Search results gallery fixes
This commit is contained in:
parent
5806fef191
commit
9ef16b1185
@ -830,23 +830,6 @@ public final class ChatListSearchContainerNode: SearchDisplayControllerContentNo
|
|||||||
|
|
||||||
self.listNode.isHidden = true
|
self.listNode.isHidden = true
|
||||||
self.mediaNode.isHidden = true
|
self.mediaNode.isHidden = true
|
||||||
self.listNode.visibleBottomContentOffsetChanged = { offset in
|
|
||||||
guard case let .known(value) = offset, value < 160.0 else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
updateSearchContext { previous in
|
|
||||||
guard let previous = previous else {
|
|
||||||
return (nil, false)
|
|
||||||
}
|
|
||||||
if previous.loadMoreIndex != nil {
|
|
||||||
return (previous, false)
|
|
||||||
}
|
|
||||||
guard let last = previous.result.messages.last else {
|
|
||||||
return (previous, false)
|
|
||||||
}
|
|
||||||
return (ChatListSearchMessagesContext(result: previous.result, loadMoreIndex: last.index), true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
self.recentListNode.isHidden = filter.contains(.excludeRecent)
|
self.recentListNode.isHidden = filter.contains(.excludeRecent)
|
||||||
|
|
||||||
let currentRemotePeers = Atomic<([FoundPeer], [FoundPeer])?>(value: nil)
|
let currentRemotePeers = Atomic<([FoundPeer], [FoundPeer])?>(value: nil)
|
||||||
@ -1177,8 +1160,24 @@ public final class ChatListSearchContainerNode: SearchDisplayControllerContentNo
|
|||||||
return ([], 0, false)
|
return ([], 0, false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let loadMore = {
|
||||||
|
updateSearchContext { previous in
|
||||||
|
guard let previous = previous else {
|
||||||
|
return (nil, false)
|
||||||
|
}
|
||||||
|
if previous.loadMoreIndex != nil {
|
||||||
|
return (previous, false)
|
||||||
|
}
|
||||||
|
guard let last = previous.result.messages.last else {
|
||||||
|
return (previous, false)
|
||||||
|
}
|
||||||
|
return (ChatListSearchMessagesContext(result: previous.result, loadMoreIndex: last.index), true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
openMediaMessageImpl = { [weak self] message, mode in
|
openMediaMessageImpl = { [weak self] message, mode in
|
||||||
let _ = context.sharedContext.openChatMessage(OpenChatMessageParams(context: context, chatLocation: nil, chatLocationContextHolder: nil, message: message, standalone: false, reverseMessageGalleryOrder: true, navigationController: nil, dismissInput: {
|
let _ = context.sharedContext.openChatMessage(OpenChatMessageParams(context: context, chatLocation: nil, chatLocationContextHolder: nil, message: message, standalone: false, reverseMessageGalleryOrder: true, navigationController: navigationController, dismissInput: {
|
||||||
self?.view.window?.endEditing(true)
|
self?.view.window?.endEditing(true)
|
||||||
}, present: { c, a in
|
}, present: { c, a in
|
||||||
present(c, a)
|
present(c, a)
|
||||||
@ -1205,18 +1204,7 @@ public final class ChatListSearchContainerNode: SearchDisplayControllerContentNo
|
|||||||
}, callPeer: { _, _ in
|
}, callPeer: { _, _ in
|
||||||
}, enqueueMessage: { _ in
|
}, enqueueMessage: { _ in
|
||||||
}, sendSticker: nil, setupTemporaryHiddenMedia: { _, _, _ in }, chatAvatarHiddenMedia: { _, _ in }, gallerySource: .custom(messages: foundMessages, messageId: message.id, loadMore: {
|
}, sendSticker: nil, setupTemporaryHiddenMedia: { _, _, _ in }, chatAvatarHiddenMedia: { _, _ in }, gallerySource: .custom(messages: foundMessages, messageId: message.id, loadMore: {
|
||||||
updateSearchContext { previous in
|
loadMore()
|
||||||
guard let previous = previous else {
|
|
||||||
return (nil, false)
|
|
||||||
}
|
|
||||||
if previous.loadMoreIndex != nil {
|
|
||||||
return (previous, false)
|
|
||||||
}
|
|
||||||
guard let last = previous.result.messages.last else {
|
|
||||||
return (previous, false)
|
|
||||||
}
|
|
||||||
return (ChatListSearchMessagesContext(result: previous.result, loadMoreIndex: last.index), true)
|
|
||||||
}
|
|
||||||
})))
|
})))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1415,25 +1403,33 @@ public final class ChatListSearchContainerNode: SearchDisplayControllerContentNo
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
let listInteraction = ListMessageItemInteraction(openMessage: { [weak self] message, mode -> Bool in
|
let listInteraction = ListMessageItemInteraction(openMessage: { [weak self] message, mode -> Bool in
|
||||||
return context.sharedContext.openChatMessage(OpenChatMessageParams(context: context, chatLocation: nil, chatLocationContextHolder: nil, message: message, standalone: false, reverseMessageGalleryOrder: false, navigationController: nil, dismissInput: { [weak self] in
|
return context.sharedContext.openChatMessage(OpenChatMessageParams(context: context, chatLocation: nil, chatLocationContextHolder: nil, message: message, standalone: false, reverseMessageGalleryOrder: true, navigationController: navigationController, dismissInput: { [weak self] in
|
||||||
self?.view.window?.endEditing(true)
|
self?.view.window?.endEditing(true)
|
||||||
}, present: { c, a in
|
}, present: { c, a in
|
||||||
present(c, a)
|
present(c, a)
|
||||||
}, transitionNode: { messageId, media in
|
}, transitionNode: { [weak self] messageId, media in
|
||||||
return transitionNodeImpl?(messageId, media)
|
var transitionNode: (ASDisplayNode, CGRect, () -> (UIView?, UIView?))?
|
||||||
|
if let strongSelf = self {
|
||||||
|
strongSelf.listNode.forEachItemNode { itemNode in
|
||||||
|
if let itemNode = itemNode as? ListMessageNode {
|
||||||
|
if let result = itemNode.transitionNode(id: messageId, media: media) {
|
||||||
|
transitionNode = result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return transitionNode
|
||||||
}, addToTransitionSurface: { view in
|
}, addToTransitionSurface: { view in
|
||||||
|
self?.view.addSubview(view)
|
||||||
// strongSelf.paneContainerNode.currentPane?.node.addToTransitionSurface(view: view)
|
|
||||||
}, openUrl: { url in
|
}, openUrl: { url in
|
||||||
// self?.openUrl(url: url, concealed: false, external: false)
|
// self?.openUrl(url: url, concealed: false, external: false)
|
||||||
}, openPeer: { peer, navigation in
|
}, openPeer: { peer, navigation in
|
||||||
// self?.openPeer(peerId: peer.id, navigation: navigation)
|
// self?.openPeer(peerId: peer.id, navigation: navigation)
|
||||||
}, callPeer: { peerId, isVideo in
|
}, callPeer: { _, _ in
|
||||||
//self?.controllerInteraction?.callPeer(peerId)
|
|
||||||
}, enqueueMessage: { _ in
|
}, enqueueMessage: { _ in
|
||||||
}, sendSticker: nil, setupTemporaryHiddenMedia: { _, _, _ in }, chatAvatarHiddenMedia: { _, _ in }, playlistLocation: .searchResults(query: "", peerId: nil, messages: [], at: message.id)))
|
}, sendSticker: nil, setupTemporaryHiddenMedia: { _, _, _ in }, chatAvatarHiddenMedia: { _, _ in }, playlistLocation: .searchResults(query: "", peerId: nil, messages: [], at: message.id), gallerySource: .custom(messages: foundMessages, messageId: message.id, loadMore: {
|
||||||
|
loadMore()
|
||||||
return true
|
})))
|
||||||
}, openMessageContextMenu: { [weak self] message, bool, node, rect, gesture in
|
}, openMessageContextMenu: { [weak self] message, bool, node, rect, gesture in
|
||||||
self?.messageContextAction(message, node: node, rect: rect, gesture: gesture)
|
self?.messageContextAction(message, node: node, rect: rect, gesture: gesture)
|
||||||
}, toggleMessagesSelection: { messageId, selected in
|
}, toggleMessagesSelection: { messageId, selected in
|
||||||
@ -1452,13 +1448,11 @@ public final class ChatListSearchContainerNode: SearchDisplayControllerContentNo
|
|||||||
self?.view.window?.endEditing(true)
|
self?.view.window?.endEditing(true)
|
||||||
}, contentContext: nil)
|
}, contentContext: nil)
|
||||||
})
|
})
|
||||||
}, openInstantPage: { [weak self] message, data in
|
}, openInstantPage: { message, data in
|
||||||
if let strongSelf = self {
|
|
||||||
if let (webpage, anchor) = instantPageAndAnchor(message: message) {
|
if let (webpage, anchor) = instantPageAndAnchor(message: message) {
|
||||||
let pageController = InstantPageController(context: context, webPage: webpage, sourcePeerType: .channel, anchor: anchor)
|
let pageController = InstantPageController(context: context, webPage: webpage, sourcePeerType: .channel, anchor: anchor)
|
||||||
navigationController?.pushViewController(pageController)
|
navigationController?.pushViewController(pageController)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}, longTap: { action, message in
|
}, longTap: { action, message in
|
||||||
|
|
||||||
}, getHiddenMedia: {
|
}, getHiddenMedia: {
|
||||||
@ -1554,19 +1548,15 @@ public final class ChatListSearchContainerNode: SearchDisplayControllerContentNo
|
|||||||
self?.dismissInput?()
|
self?.dismissInput?()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.listNode.visibleBottomContentOffsetChanged = { offset in
|
||||||
|
guard case let .known(value) = offset, value < 160.0 else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
loadMore()
|
||||||
|
}
|
||||||
|
|
||||||
self.mediaNode.loadMore = {
|
self.mediaNode.loadMore = {
|
||||||
updateSearchContext { previous in
|
loadMore()
|
||||||
guard let previous = previous else {
|
|
||||||
return (nil, false)
|
|
||||||
}
|
|
||||||
if previous.loadMoreIndex != nil {
|
|
||||||
return (previous, false)
|
|
||||||
}
|
|
||||||
guard let last = previous.result.messages.last else {
|
|
||||||
return (previous, false)
|
|
||||||
}
|
|
||||||
return (ChatListSearchMessagesContext(result: previous.result, loadMoreIndex: last.index), true)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.filterContainerNode.filterPressed = { [weak self] filter in
|
self.filterContainerNode.filterPressed = { [weak self] filter in
|
||||||
|
@ -215,7 +215,7 @@ public func chatMessageGalleryControllerData(context: AccountContext, chatLocati
|
|||||||
}
|
}
|
||||||
|
|
||||||
if internalDocumentItemSupportsMimeType(file.mimeType, fileName: file.fileName ?? "file") {
|
if internalDocumentItemSupportsMimeType(file.mimeType, fileName: file.fileName ?? "file") {
|
||||||
let gallery = GalleryController(context: context, source: .peerMessagesAtId(messageId: message.id, chatLocation: chatLocation ?? .peer(message.id.peerId), chatLocationContextHolder: chatLocationContextHolder ?? Atomic<ChatLocationContextHolder?>(value: nil)), invertItemOrder: reverseMessageGalleryOrder, streamSingleVideo: stream, fromPlayingVideo: autoplayingVideo, landscape: landscape, timecode: timecode, synchronousLoad: synchronousLoad, replaceRootController: { [weak navigationController] controller, ready in
|
let gallery = GalleryController(context: context, source: source ?? .peerMessagesAtId(messageId: message.id, chatLocation: chatLocation ?? .peer(message.id.peerId), chatLocationContextHolder: chatLocationContextHolder ?? Atomic<ChatLocationContextHolder?>(value: nil)), invertItemOrder: reverseMessageGalleryOrder, streamSingleVideo: stream, fromPlayingVideo: autoplayingVideo, landscape: landscape, timecode: timecode, synchronousLoad: synchronousLoad, replaceRootController: { [weak navigationController] controller, ready in
|
||||||
navigationController?.replaceTopController(controller, animated: false, ready: ready)
|
navigationController?.replaceTopController(controller, animated: false, ready: ready)
|
||||||
}, baseNavigationController: navigationController, actionInteraction: actionInteraction)
|
}, baseNavigationController: navigationController, actionInteraction: actionInteraction)
|
||||||
return .gallery(.single(gallery))
|
return .gallery(.single(gallery))
|
||||||
|
@ -451,9 +451,9 @@ public class GalleryController: ViewController, StandalonePresentableController
|
|||||||
return messages
|
return messages
|
||||||
|> map { messages, totalCount, hasMore in
|
|> map { messages, totalCount, hasMore in
|
||||||
var entries: [MessageHistoryEntry] = []
|
var entries: [MessageHistoryEntry] = []
|
||||||
var index = messages.count - 1
|
var index = messages.count
|
||||||
for message in messages.reversed() {
|
for message in messages.reversed() {
|
||||||
entries.append(MessageHistoryEntry(message: message, isRead: false, location: MessageHistoryEntryLocation(index: index, count: Int(totalCount)), monthLocation: nil, attributes: MutableMessageHistoryEntryAttributes(authorIsContact: false)))
|
entries.append(MessageHistoryEntry(message: message, isRead: false, location: MessageHistoryEntryLocation(index: Int(totalCount) - index, count: Int(totalCount)), monthLocation: nil, attributes: MutableMessageHistoryEntryAttributes(authorIsContact: false)))
|
||||||
index -= 1
|
index -= 1
|
||||||
}
|
}
|
||||||
return GalleryMessageHistoryView.entries(entries, hasMore, false)
|
return GalleryMessageHistoryView.entries(entries, hasMore, false)
|
||||||
@ -1076,9 +1076,9 @@ public class GalleryController: ViewController, StandalonePresentableController
|
|||||||
}
|
}
|
||||||
|
|
||||||
var entries: [MessageHistoryEntry] = []
|
var entries: [MessageHistoryEntry] = []
|
||||||
var index = messages.count - 1
|
var index = messages.count
|
||||||
for message in messages.reversed() {
|
for message in messages.reversed() {
|
||||||
entries.append(MessageHistoryEntry(message: message, isRead: false, location: MessageHistoryEntryLocation(index: index, count: Int(totalCount)), monthLocation: nil, attributes: MutableMessageHistoryEntryAttributes(authorIsContact: false)))
|
entries.append(MessageHistoryEntry(message: message, isRead: false, location: MessageHistoryEntryLocation(index: Int(totalCount) - index, count: Int(totalCount)), monthLocation: nil, attributes: MutableMessageHistoryEntryAttributes(authorIsContact: false)))
|
||||||
index -= 1
|
index -= 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user