diff --git a/submodules/WebSearchUI/Sources/WebSearchController.swift b/submodules/WebSearchUI/Sources/WebSearchController.swift index ca03c963ca..257188e1da 100644 --- a/submodules/WebSearchUI/Sources/WebSearchController.swift +++ b/submodules/WebSearchUI/Sources/WebSearchController.swift @@ -79,18 +79,20 @@ final class WebSearchControllerInteraction { let setSearchQuery: (String) -> Void let deleteRecentQuery: (String) -> Void let toggleSelection: (ChatContextResult, Bool) -> Void - let sendSelected: (ChatContextResultCollection, ChatContextResult?) -> Void + let sendSelected: (ChatContextResult?, Bool, Int32?) -> Void + let schedule: () -> Void let avatarCompleted: (UIImage) -> Void let selectionState: TGMediaSelectionContext? let editingState: TGMediaEditingContext var hiddenMediaId: String? - init(openResult: @escaping (ChatContextResult) -> Void, setSearchQuery: @escaping (String) -> Void, deleteRecentQuery: @escaping (String) -> Void, toggleSelection: @escaping (ChatContextResult, Bool) -> Void, sendSelected: @escaping (ChatContextResultCollection, ChatContextResult?) -> Void, avatarCompleted: @escaping (UIImage) -> Void, selectionState: TGMediaSelectionContext?, editingState: TGMediaEditingContext) { + init(openResult: @escaping (ChatContextResult) -> Void, setSearchQuery: @escaping (String) -> Void, deleteRecentQuery: @escaping (String) -> Void, toggleSelection: @escaping (ChatContextResult, Bool) -> Void, sendSelected: @escaping (ChatContextResult?, Bool, Int32?) -> Void, schedule: @escaping () -> Void, avatarCompleted: @escaping (UIImage) -> Void, selectionState: TGMediaSelectionContext?, editingState: TGMediaEditingContext) { self.openResult = openResult self.setSearchQuery = setSearchQuery self.deleteRecentQuery = deleteRecentQuery self.toggleSelection = toggleSelection self.sendSelected = sendSelected + self.schedule = schedule self.avatarCompleted = avatarCompleted self.selectionState = selectionState self.editingState = editingState @@ -162,6 +164,8 @@ public final class WebSearchController: ViewController { } } + public var presentSchedulePicker: (Bool, @escaping (Int32) -> Void) -> Void = { _, _ in } + public var dismissed: () -> Void = { } public var searchingUpdated: (Bool) -> Void = { _ in } @@ -283,8 +287,8 @@ public final class WebSearchController: ViewController { let item = LegacyWebSearchItem(result: result) strongSelf.controllerInteraction?.selectionState?.setItem(item, selected: value) } - }, sendSelected: { results, current in - if let selectionState = selectionState { + }, sendSelected: { [weak self] current, silently, scheduleTime in + if let selectionState = selectionState, let results = self?.controllerNode.currentExternalResults { if let current = current { let currentItem = LegacyWebSearchItem(result: current) selectionState.setItem(currentItem, selected: true) @@ -293,6 +297,12 @@ public final class WebSearchController: ViewController { sendSelected(results, selectionState, editingState, false) } } + }, schedule: { [weak self] in + if let strongSelf = self { + strongSelf.presentSchedulePicker(false, { [weak self] time in + self?.controllerInteraction?.sendSelected(nil, false, time) + }) + } }, avatarCompleted: { result in if case let .avatar(_, avatarCompleted) = mode { avatarCompleted(result) @@ -592,10 +602,10 @@ public class WebSearchPickerContext: AttachmentMediaPickerContext { } public func send(silently: Bool, mode: AttachmentMediaPickerSendMode) { -// self.interaction?.sendSelected(nil, silently, nil, true) + self.interaction?.sendSelected(nil, silently, nil) } public func schedule() { -// self.interaction?.schedule() + self.interaction?.schedule() } } diff --git a/submodules/WebSearchUI/Sources/WebSearchControllerNode.swift b/submodules/WebSearchUI/Sources/WebSearchControllerNode.swift index 3645eacf80..503b287671 100644 --- a/submodules/WebSearchUI/Sources/WebSearchControllerNode.swift +++ b/submodules/WebSearchUI/Sources/WebSearchControllerNode.swift @@ -162,7 +162,7 @@ class WebSearchControllerNode: ASDisplayNode { private var enqueuedTransitions: [(WebSearchTransition, Bool)] = [] private var dequeuedInitialTransitionOnLayout = false - private var currentExternalResults: ChatContextResultCollection? + private(set) var currentExternalResults: ChatContextResultCollection? private var currentProcessedResults: ChatContextResultCollection? private var currentEntries: [WebSearchEntry]? private var hasMore = false @@ -718,9 +718,8 @@ class WebSearchControllerNode: ASDisplayNode { } @objc private func sendPressed() { - if let results = self.currentExternalResults { - self.controllerInteraction.sendSelected(results, nil) - } + self.controllerInteraction.sendSelected(nil, false, nil) + self.cancel?() } @@ -741,8 +740,8 @@ class WebSearchControllerNode: ASDisplayNode { }, transitionView: { [weak self] result in return self?.transitionNode(for: result)?.transitionView() }, completed: { [weak self] result in - if let strongSelf = self, let results = strongSelf.currentExternalResults { - strongSelf.controllerInteraction.sendSelected(results, result) + if let strongSelf = self { + strongSelf.controllerInteraction.sendSelected(result, false, nil) strongSelf.cancel?() } }, presentStickers: self.presentStickers, getCaptionPanelView: self.getCaptionPanelView, present: present) @@ -761,8 +760,8 @@ class WebSearchControllerNode: ASDisplayNode { let controller = WebSearchGalleryController(context: self.context, peer: self.peer, selectionState: self.controllerInteraction.selectionState, editingState: self.controllerInteraction.editingState, entries: entries, centralIndex: centralIndex, replaceRootController: { (controller, _) in }, baseNavigationController: nil, sendCurrent: { [weak self] result in - if let strongSelf = self, let results = strongSelf.currentExternalResults { - strongSelf.controllerInteraction.sendSelected(results, result) + if let strongSelf = self { + strongSelf.controllerInteraction.sendSelected(result, false, nil) strongSelf.cancel?() } })