mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
Saved messages improvements
This commit is contained in:
@@ -1407,7 +1407,7 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
||||
var inputPanelNodeHandlesTransition = false
|
||||
|
||||
var dismissedInputPanelNode: ChatInputPanelNode?
|
||||
var dismissedSecondaryInputPanelNode: ASDisplayNode?
|
||||
var dismissedSecondaryInputPanelNode: ChatInputPanelNode?
|
||||
var dismissedAccessoryPanelNode: AccessoryPanelNode?
|
||||
var dismissedInputContextPanelNode: ChatInputContextPanelNode?
|
||||
var dismissedOverlayContextPanelNode: ChatInputContextPanelNode?
|
||||
@@ -1463,6 +1463,9 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
||||
immediatelyLayoutSecondaryInputPanelAndAnimateAppearance = true
|
||||
self.inputPanelClippingNode.insertSubnode(secondaryInputPanelNode, aboveSubnode: self.inputPanelBackgroundNode)
|
||||
}
|
||||
if let viewForOverlayContent = secondaryInputPanelNode.viewForOverlayContent, viewForOverlayContent.superview == nil {
|
||||
self.inputPanelOverlayNode.view.addSubview(viewForOverlayContent)
|
||||
}
|
||||
} else {
|
||||
let inputPanelHeight = secondaryInputPanelNode.updateLayout(width: layout.size.width, leftInset: layout.safeInsets.left, rightInset: layout.safeInsets.right, bottomInset: layout.intrinsicInsets.bottom, additionalSideInsets: layout.additionalInsets, maxHeight: layout.size.height - insets.top - inputPanelBottomInset, isSecondary: true, transition: transition, interfaceState: self.chatPresentationInterfaceState, metrics: layout.metrics, isMediaInputExpanded: self.inputPanelContainerNode.expansionFraction == 1.0)
|
||||
secondaryInputPanelSize = CGSize(width: layout.size.width, height: inputPanelHeight)
|
||||
@@ -2092,6 +2095,14 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
||||
|
||||
transition.updateFrame(node: secondaryInputPanelNode, frame: apparentSecondaryInputPanelFrame)
|
||||
transition.updateAlpha(node: secondaryInputPanelNode, alpha: 1.0)
|
||||
|
||||
if let viewForOverlayContent = secondaryInputPanelNode.viewForOverlayContent {
|
||||
if inputPanelNodeHandlesTransition {
|
||||
viewForOverlayContent.frame = apparentSecondaryInputPanelFrame
|
||||
} else {
|
||||
transition.updateFrame(view: viewForOverlayContent, frame: apparentSecondaryInputPanelFrame)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if let accessoryPanelNode = self.accessoryPanelNode, let accessoryPanelFrame = accessoryPanelFrame, !accessoryPanelNode.frame.equalTo(accessoryPanelFrame) {
|
||||
@@ -2275,6 +2286,8 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
||||
alphaCompleted = true
|
||||
completed()
|
||||
})
|
||||
|
||||
dismissedSecondaryInputPanelNode.viewForOverlayContent?.removeFromSuperview()
|
||||
}
|
||||
|
||||
if let dismissedAccessoryPanelNode = dismissedAccessoryPanelNode {
|
||||
@@ -2455,9 +2468,11 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
||||
|
||||
let mappedContents: ChatInlineSearchResultsListComponent.Contents
|
||||
if let _ = self.chatPresentationInterfaceState.search?.resultsState {
|
||||
mappedContents = .search
|
||||
mappedContents = .search(query: self.chatPresentationInterfaceState.search?.query ?? "", includeSavedPeers: self.alwaysShowSearchResultsAsList)
|
||||
} else if let historyFilter = self.chatPresentationInterfaceState.historyFilter {
|
||||
mappedContents = .tag(historyFilter.customTag)
|
||||
} else if let search = self.chatPresentationInterfaceState.search, self.alwaysShowSearchResultsAsList {
|
||||
mappedContents = .search(query: search.query, includeSavedPeers: self.alwaysShowSearchResultsAsList)
|
||||
} else {
|
||||
mappedContents = .empty
|
||||
}
|
||||
@@ -2494,6 +2509,34 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
||||
return state.updatedDisplayHistoryFilterAsList(false)
|
||||
})
|
||||
},
|
||||
peerSelected: { [weak self] peer in
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
guard let navigationController = self.controller?.navigationController as? NavigationController else {
|
||||
return
|
||||
}
|
||||
self.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(
|
||||
navigationController: navigationController,
|
||||
context: self.context,
|
||||
chatLocation: .replyThread(ChatReplyThreadMessage(
|
||||
peerId: self.context.account.peerId,
|
||||
threadId: peer.id.toInt64(),
|
||||
channelMessageId: nil,
|
||||
isChannelPost: false,
|
||||
isForumPost: false,
|
||||
maxMessage: nil,
|
||||
maxReadIncomingMessageId: nil,
|
||||
maxReadOutgoingMessageId: nil,
|
||||
unreadCount: 0,
|
||||
initialFilledHoles: IndexSet(),
|
||||
initialAnchor: .automatic,
|
||||
isNotAvailable: false
|
||||
)),
|
||||
subject: nil,
|
||||
keepStack: .always
|
||||
))
|
||||
},
|
||||
loadTagMessages: { tag, index in
|
||||
let input: ChatHistoryLocationInput
|
||||
if let index {
|
||||
@@ -2542,6 +2585,27 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
||||
|> map { result in
|
||||
return result?.0
|
||||
}
|
||||
},
|
||||
getSavedPeers: { [weak self] query in
|
||||
guard let self else {
|
||||
return nil
|
||||
}
|
||||
let strings = self.chatPresentationInterfaceState.strings
|
||||
let foundLocalPeers = context.engine.messages.searchLocalSavedMessagesPeers(query: query.lowercased(), indexNameMapping: [
|
||||
context.account.peerId: [
|
||||
PeerIndexNameRepresentation.title(title: strings.DialogList_MyNotes.lowercased(), addressNames: []),
|
||||
PeerIndexNameRepresentation.title(title: "my notes".lowercased(), addressNames: [])
|
||||
],
|
||||
PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(2666000)): [
|
||||
PeerIndexNameRepresentation.title(title: strings.ChatList_AuthorHidden.lowercased(), addressNames: [])
|
||||
]
|
||||
])
|
||||
|> map { peers -> [(EnginePeer, MessageIndex?)] in
|
||||
return peers.map { peer in
|
||||
return (peer, nil)
|
||||
}
|
||||
}
|
||||
return foundLocalPeers
|
||||
}
|
||||
)),
|
||||
environment: {},
|
||||
@@ -3375,6 +3439,15 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
if let secondaryInputPanelNode = self.secondaryInputPanelNode, let viewForOverlayContent = secondaryInputPanelNode.viewForOverlayContent {
|
||||
if let result = viewForOverlayContent.hitTest(self.view.convert(point, to: viewForOverlayContent), with: event) {
|
||||
return result
|
||||
}
|
||||
if maybeDismissOverlayContent {
|
||||
viewForOverlayContent.maybeDismissContent(point: self.view.convert(point, to: viewForOverlayContent))
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user