Fixed web search gallery selection

This commit is contained in:
Ilya Laktyushin 2018-12-20 03:30:03 +04:00
parent 85effd85fa
commit eeb495d79b

View File

@ -80,6 +80,7 @@ class WebSearchGalleryController: ViewController {
private let centralItemFooterContentNode = Promise<GalleryFooterContentNode?>()
private let centralItemAttributesDisposable = DisposableSet();
private let checkedDisposable = MetaDisposable()
private var checkNode: GalleryNavigationCheckNode?
private let _hiddenMedia = Promise<WebSearchGalleryEntry?>(nil)
@ -160,6 +161,7 @@ class WebSearchGalleryController: ViewController {
deinit {
self.disposable.dispose()
self.checkedDisposable.dispose()
self.centralItemAttributesDisposable.dispose()
}
@ -266,6 +268,30 @@ class WebSearchGalleryController: ViewController {
}
}
let selectionState = self.controllerInteraction?.selectionState
let selectionUpdated = Signal<Void, NoError> { subscriber in
if let selectionState = selectionState {
let disposable = selectionState.selectionChangedSignal()!.start(next: { _ in
subscriber.putNext(Void())
}, error: { _ in }, completed: {})!
return ActionDisposable {
disposable.dispose()
}
} else {
subscriber.putCompletion()
return EmptyDisposable
}
}
self.checkedDisposable.set((selectionUpdated
|> deliverOnMainQueue).start(next: { [weak self] _ in
if let strongSelf = self, let centralItemNode = strongSelf.galleryNode.pager.centralItemNode() {
let item = strongSelf.entries[centralItemNode.index]
if let checkNode = strongSelf.checkNode, let controllerInteraction = strongSelf.controllerInteraction, let selectionState = controllerInteraction.selectionState {
checkNode.setIsChecked(selectionState.isIdentifierSelected(item.result.id), animated: true)
}
}
}))
let ready = self.galleryNode.pager.ready() |> timeout(2.0, queue: Queue.mainQueue(), alternate: .single(Void())) |> afterNext { [weak self] _ in
self?.didSetReady = true
}