|
@@ -7,7 +7,7 @@ class GalleryViewController: UIViewController {
|
|
private let dcContext: DcContext
|
|
private let dcContext: DcContext
|
|
// MARK: - data
|
|
// MARK: - data
|
|
private let chatId: Int
|
|
private let chatId: Int
|
|
- private var mediaMessageIds: [Int]
|
|
|
|
|
|
+ private var mediaMessageIds: [Int] = []
|
|
private var galleryItemCache: [Int: GalleryItem] = [:]
|
|
private var galleryItemCache: [Int: GalleryItem] = [:]
|
|
|
|
|
|
// MARK: - subview specs
|
|
// MARK: - subview specs
|
|
@@ -72,10 +72,9 @@ class GalleryViewController: UIViewController {
|
|
return config
|
|
return config
|
|
}()
|
|
}()
|
|
|
|
|
|
- init(context: DcContext, chatId: Int, mediaMessageIds: [Int]) {
|
|
|
|
|
|
+ init(context: DcContext, chatId: Int) {
|
|
self.dcContext = context
|
|
self.dcContext = context
|
|
self.chatId = chatId
|
|
self.chatId = chatId
|
|
- self.mediaMessageIds = mediaMessageIds
|
|
|
|
super.init(nibName: nil, bundle: nil)
|
|
super.init(nibName: nil, bundle: nil)
|
|
}
|
|
}
|
|
|
|
|
|
@@ -88,9 +87,7 @@ class GalleryViewController: UIViewController {
|
|
super.viewDidLoad()
|
|
super.viewDidLoad()
|
|
setupSubviews()
|
|
setupSubviews()
|
|
title = String.localized("images_and_videos")
|
|
title = String.localized("images_and_videos")
|
|
- if mediaMessageIds.isEmpty {
|
|
|
|
- emptyStateView.isHidden = false
|
|
|
|
- }
|
|
|
|
|
|
+ loadMediaAsync()
|
|
}
|
|
}
|
|
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
@@ -132,6 +129,21 @@ class GalleryViewController: UIViewController {
|
|
UIMenuController.shared.update()
|
|
UIMenuController.shared.update()
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private func loadMediaAsync() {
|
|
|
|
+ DispatchQueue.global(qos: .userInteractive).async { [weak self] in
|
|
|
|
+ guard let self = self else { return }
|
|
|
|
+ let ids: [Int]
|
|
|
|
+ ids = self.dcContext.getChatMedia(chatId: self.chatId, messageType: DC_MSG_IMAGE, messageType2: DC_MSG_GIF, messageType3: DC_MSG_VIDEO).reversed()
|
|
|
|
+ DispatchQueue.main.async { [weak self] in
|
|
|
|
+ guard let self = self else { return }
|
|
|
|
+ self.galleryItemCache = [:]
|
|
|
|
+ self.mediaMessageIds = ids
|
|
|
|
+ self.emptyStateView.isHidden = !ids.isEmpty
|
|
|
|
+ self.grid.reloadData()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
// MARK: - updates
|
|
// MARK: - updates
|
|
private func updateFloatingTimeLabel() {
|
|
private func updateFloatingTimeLabel() {
|
|
if let indexPath = grid.indexPathsForVisibleItems.min() {
|
|
if let indexPath = grid.indexPathsForVisibleItems.min() {
|