Attachment menu improvements

This commit is contained in:
Ilya Laktyushin 2022-03-01 19:32:05 +04:00
parent 67ab9a84fb
commit 43cb778ef5
2 changed files with 23 additions and 14 deletions

View File

@ -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()
}
}

View File

@ -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?()
}
})