Various Fixes

This commit is contained in:
Ilya Laktyushin
2021-07-25 03:38:38 +03:00
parent 273c34bc5c
commit 8f8aa37020
13 changed files with 373 additions and 305 deletions

View File

@@ -16,6 +16,7 @@ import SegmentedControlNode
final class PeerSelectionControllerNode: ASDisplayNode {
private let context: AccountContext
private let present: (ViewController, Any?) -> Void
private let presentInGlobalOverlay: (ViewController, Any?) -> Void
private let dismiss: () -> Void
private let filter: ChatListNodePeersFilter
private let hasGlobalSearch: Bool
@@ -55,7 +56,7 @@ final class PeerSelectionControllerNode: ASDisplayNode {
var requestOpenDisabledPeer: ((Peer) -> Void)?
var requestOpenPeerFromSearch: ((Peer) -> Void)?
var requestOpenMessageFromSearch: ((Peer, MessageId) -> Void)?
var requestSend: (([Peer], NSAttributedString) -> Void)?
var requestSend: (([Peer], NSAttributedString, PeerSelectionControllerSendMode) -> Void)?
private var presentationData: PresentationData
private var presentationDataDisposable: Disposable?
@@ -65,9 +66,10 @@ final class PeerSelectionControllerNode: ASDisplayNode {
return self.readyValue.get()
}
init(context: AccountContext, filter: ChatListNodePeersFilter, hasChatListSelector: Bool, hasContactSelector: Bool, hasGlobalSearch: Bool, createNewGroup: (() -> Void)?, present: @escaping (ViewController, Any?) -> Void, dismiss: @escaping () -> Void) {
init(context: AccountContext, filter: ChatListNodePeersFilter, hasChatListSelector: Bool, hasContactSelector: Bool, hasGlobalSearch: Bool, createNewGroup: (() -> Void)?, present: @escaping (ViewController, Any?) -> Void, presentInGlobalOverlay: @escaping (ViewController, Any?) -> Void, dismiss: @escaping () -> Void) {
self.context = context
self.present = present
self.presentInGlobalOverlay = presentInGlobalOverlay
self.dismiss = dismiss
self.filter = filter
self.hasGlobalSearch = hasGlobalSearch
@@ -266,7 +268,32 @@ final class PeerSelectionControllerNode: ASDisplayNode {
}, openLinkEditing: {
}, reportPeerIrrelevantGeoLocation: {
}, displaySlowmodeTooltip: { _, _ in
}, displaySendMessageOptions: { _, _ in
}, displaySendMessageOptions: { [weak self] node, gesture in
guard let strongSelf = self, let textInputPanelNode = strongSelf.textInputPanelNode else {
return
}
textInputPanelNode.loadTextInputNodeIfNeeded()
guard let textInputNode = textInputPanelNode.textInputNode else {
return
}
// let previousSupportedOrientations = strongSelf.supportedOrientations
// if layout.size.width > layout.size.height {
// strongSelf.supportedOrientations = ViewControllerSupportedOrientations(regularSize: .all, compactSize: .landscape)
// } else {
// strongSelf.supportedOrientations = ViewControllerSupportedOrientations(regularSize: .all, compactSize: .portrait)
// }
let controller = ChatSendMessageActionSheetController(context: strongSelf.context, interfaceState: strongSelf.presentationInterfaceState, gesture: gesture, sourceSendButton: node, textInputNode: textInputNode, completion: { [weak self] in
if let strongSelf = self {
// strongSelf.supportedOrientations = previousSupportedOrientations
}
}, sendMessage: { [weak textInputPanelNode] silently in
textInputPanelNode?.sendMessage(silently ? .silent : .generic)
}, schedule: { [weak textInputPanelNode] in
textInputPanelNode?.sendMessage(.schedule)
})
// strongSelf.sendMessageActionsController = controller
strongSelf.presentInGlobalOverlay(controller, nil)
}, openScheduledMessages: {
}, openPeersNearby: {
}, displaySearchResultsTooltip: { _, _ in
@@ -311,7 +338,7 @@ final class PeerSelectionControllerNode: ASDisplayNode {
} else {
let textInputPanelNode = PeerSelectionTextInputPanelNode(presentationInterfaceState: self.presentationInterfaceState, presentController: { [weak self] c in self?.present(c, nil) })
textInputPanelNode.interfaceInteraction = self.interfaceInteraction
textInputPanelNode.sendMessage = { [weak self] in
textInputPanelNode.sendMessage = { [weak self] mode in
guard let strongSelf = self else {
return
}
@@ -327,7 +354,7 @@ final class PeerSelectionControllerNode: ASDisplayNode {
}
}
if !selectedPeers.isEmpty {
strongSelf.requestSend?(selectedPeers, effectiveInputText)
strongSelf.requestSend?(selectedPeers, effectiveInputText, mode)
}
} else {
var selectedPeerIds: [PeerId] = []
@@ -345,7 +372,7 @@ final class PeerSelectionControllerNode: ASDisplayNode {
selectedPeers.append(peer)
}
}
strongSelf.requestSend?(selectedPeers, effectiveInputText)
strongSelf.requestSend?(selectedPeers, effectiveInputText, mode)
}
}
}