mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Attachment menu improvements
This commit is contained in:
parent
67ab9a84fb
commit
43cb778ef5
@ -79,18 +79,20 @@ final class WebSearchControllerInteraction {
|
|||||||
let setSearchQuery: (String) -> Void
|
let setSearchQuery: (String) -> Void
|
||||||
let deleteRecentQuery: (String) -> Void
|
let deleteRecentQuery: (String) -> Void
|
||||||
let toggleSelection: (ChatContextResult, Bool) -> 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 avatarCompleted: (UIImage) -> Void
|
||||||
let selectionState: TGMediaSelectionContext?
|
let selectionState: TGMediaSelectionContext?
|
||||||
let editingState: TGMediaEditingContext
|
let editingState: TGMediaEditingContext
|
||||||
var hiddenMediaId: String?
|
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.openResult = openResult
|
||||||
self.setSearchQuery = setSearchQuery
|
self.setSearchQuery = setSearchQuery
|
||||||
self.deleteRecentQuery = deleteRecentQuery
|
self.deleteRecentQuery = deleteRecentQuery
|
||||||
self.toggleSelection = toggleSelection
|
self.toggleSelection = toggleSelection
|
||||||
self.sendSelected = sendSelected
|
self.sendSelected = sendSelected
|
||||||
|
self.schedule = schedule
|
||||||
self.avatarCompleted = avatarCompleted
|
self.avatarCompleted = avatarCompleted
|
||||||
self.selectionState = selectionState
|
self.selectionState = selectionState
|
||||||
self.editingState = editingState
|
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 dismissed: () -> Void = { }
|
||||||
|
|
||||||
public var searchingUpdated: (Bool) -> Void = { _ in }
|
public var searchingUpdated: (Bool) -> Void = { _ in }
|
||||||
@ -283,8 +287,8 @@ public final class WebSearchController: ViewController {
|
|||||||
let item = LegacyWebSearchItem(result: result)
|
let item = LegacyWebSearchItem(result: result)
|
||||||
strongSelf.controllerInteraction?.selectionState?.setItem(item, selected: value)
|
strongSelf.controllerInteraction?.selectionState?.setItem(item, selected: value)
|
||||||
}
|
}
|
||||||
}, sendSelected: { results, current in
|
}, sendSelected: { [weak self] current, silently, scheduleTime in
|
||||||
if let selectionState = selectionState {
|
if let selectionState = selectionState, let results = self?.controllerNode.currentExternalResults {
|
||||||
if let current = current {
|
if let current = current {
|
||||||
let currentItem = LegacyWebSearchItem(result: current)
|
let currentItem = LegacyWebSearchItem(result: current)
|
||||||
selectionState.setItem(currentItem, selected: true)
|
selectionState.setItem(currentItem, selected: true)
|
||||||
@ -293,6 +297,12 @@ public final class WebSearchController: ViewController {
|
|||||||
sendSelected(results, selectionState, editingState, false)
|
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
|
}, avatarCompleted: { result in
|
||||||
if case let .avatar(_, avatarCompleted) = mode {
|
if case let .avatar(_, avatarCompleted) = mode {
|
||||||
avatarCompleted(result)
|
avatarCompleted(result)
|
||||||
@ -592,10 +602,10 @@ public class WebSearchPickerContext: AttachmentMediaPickerContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public func send(silently: Bool, mode: AttachmentMediaPickerSendMode) {
|
public func send(silently: Bool, mode: AttachmentMediaPickerSendMode) {
|
||||||
// self.interaction?.sendSelected(nil, silently, nil, true)
|
self.interaction?.sendSelected(nil, silently, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func schedule() {
|
public func schedule() {
|
||||||
// self.interaction?.schedule()
|
self.interaction?.schedule()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -162,7 +162,7 @@ class WebSearchControllerNode: ASDisplayNode {
|
|||||||
private var enqueuedTransitions: [(WebSearchTransition, Bool)] = []
|
private var enqueuedTransitions: [(WebSearchTransition, Bool)] = []
|
||||||
private var dequeuedInitialTransitionOnLayout = false
|
private var dequeuedInitialTransitionOnLayout = false
|
||||||
|
|
||||||
private var currentExternalResults: ChatContextResultCollection?
|
private(set) var currentExternalResults: ChatContextResultCollection?
|
||||||
private var currentProcessedResults: ChatContextResultCollection?
|
private var currentProcessedResults: ChatContextResultCollection?
|
||||||
private var currentEntries: [WebSearchEntry]?
|
private var currentEntries: [WebSearchEntry]?
|
||||||
private var hasMore = false
|
private var hasMore = false
|
||||||
@ -718,9 +718,8 @@ class WebSearchControllerNode: ASDisplayNode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@objc private func sendPressed() {
|
@objc private func sendPressed() {
|
||||||
if let results = self.currentExternalResults {
|
self.controllerInteraction.sendSelected(nil, false, nil)
|
||||||
self.controllerInteraction.sendSelected(results, nil)
|
|
||||||
}
|
|
||||||
self.cancel?()
|
self.cancel?()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -741,8 +740,8 @@ class WebSearchControllerNode: ASDisplayNode {
|
|||||||
}, transitionView: { [weak self] result in
|
}, transitionView: { [weak self] result in
|
||||||
return self?.transitionNode(for: result)?.transitionView()
|
return self?.transitionNode(for: result)?.transitionView()
|
||||||
}, completed: { [weak self] result in
|
}, completed: { [weak self] result in
|
||||||
if let strongSelf = self, let results = strongSelf.currentExternalResults {
|
if let strongSelf = self {
|
||||||
strongSelf.controllerInteraction.sendSelected(results, result)
|
strongSelf.controllerInteraction.sendSelected(result, false, nil)
|
||||||
strongSelf.cancel?()
|
strongSelf.cancel?()
|
||||||
}
|
}
|
||||||
}, presentStickers: self.presentStickers, getCaptionPanelView: self.getCaptionPanelView, present: present)
|
}, 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
|
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
|
}, baseNavigationController: nil, sendCurrent: { [weak self] result in
|
||||||
if let strongSelf = self, let results = strongSelf.currentExternalResults {
|
if let strongSelf = self {
|
||||||
strongSelf.controllerInteraction.sendSelected(results, result)
|
strongSelf.controllerInteraction.sendSelected(result, false, nil)
|
||||||
strongSelf.cancel?()
|
strongSelf.cancel?()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user