fix: refresh travel albums after OTG return
This commit is contained in:
@@ -31,6 +31,7 @@ final class TravelAlbumDetailViewController: BaseViewController {
|
||||
private let aiRetouchButton = UIButton(type: .system)
|
||||
private let deleteSelectedButton = UIButton(type: .system)
|
||||
private let uploadButton = UIButton(type: .system)
|
||||
private var refreshState = TravelAlbumReturnRefreshState()
|
||||
|
||||
init(
|
||||
albumId: Int,
|
||||
@@ -262,6 +263,18 @@ final class TravelAlbumDetailViewController: BaseViewController {
|
||||
Task { await viewModel.refreshAll(api: api) }
|
||||
}
|
||||
|
||||
override func viewDidAppear(_ animated: Bool) {
|
||||
super.viewDidAppear(animated)
|
||||
guard refreshState.beginRefreshIfNeeded() else { return }
|
||||
Task {
|
||||
await viewModel.refreshAll(api: api)
|
||||
await MainActor.run {
|
||||
self.applyViewModel()
|
||||
self.refreshState.finishRefresh()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@MainActor
|
||||
private func applyViewModel() {
|
||||
if let album = viewModel.album {
|
||||
@@ -306,7 +319,10 @@ final class TravelAlbumDetailViewController: BaseViewController {
|
||||
if !snapshot.itemIdentifiers.isEmpty {
|
||||
snapshot.reconfigureItems(snapshot.itemIdentifiers)
|
||||
}
|
||||
dataSource.apply(snapshot, animatingDifferences: true)
|
||||
dataSource.apply(
|
||||
snapshot,
|
||||
animatingDifferences: !refreshState.suppressesSnapshotAnimations
|
||||
)
|
||||
|
||||
if !viewModel.isRefreshing {
|
||||
refreshControl.endRefreshing()
|
||||
@@ -482,6 +498,7 @@ final class TravelAlbumDetailViewController: BaseViewController {
|
||||
|
||||
@objc private func uploadTapped() {
|
||||
let album = viewModel.album
|
||||
refreshState.markRefreshNeeded()
|
||||
let controller = WiredCameraTransferViewController(
|
||||
viewModel: WiredCameraTransferViewModel(
|
||||
albumId: album?.id ?? viewModel.albumId,
|
||||
|
||||
Reference in New Issue
Block a user