Timeline: Fix trending refreshing when navigating back

This commit is contained in:
Thomas Ricouard 2023-02-27 18:41:51 +01:00
parent 6dcce79379
commit 4bc2672583
2 changed files with 10 additions and 4 deletions

View file

@ -115,7 +115,7 @@ public struct TimelineView: View {
} }
.refreshable { .refreshable {
HapticManager.shared.fireHaptic(of: .dataRefresh(intensity: 0.3)) HapticManager.shared.fireHaptic(of: .dataRefresh(intensity: 0.3))
await viewModel.fetchNewestStatuses() await viewModel.pullToRefresh()
HapticManager.shared.fireHaptic(of: .dataRefresh(intensity: 0.7)) HapticManager.shared.fireHaptic(of: .dataRefresh(intensity: 0.7))
} }
.onChange(of: watcher.latestEvent?.id) { _ in .onChange(of: watcher.latestEvent?.id) { _ in

View file

@ -156,13 +156,19 @@ extension TimelineViewModel {
// MARK: - StatusesFetcher // MARK: - StatusesFetcher
extension TimelineViewModel: StatusesFetcher { extension TimelineViewModel: StatusesFetcher {
func pullToRefresh() async {
if !timeline.supportNewestPagination {
await reset()
}
await fetchNewestStatuses()
}
func fetchNewestStatuses() async { func fetchNewestStatuses() async {
guard let client else { return } guard let client else { return }
do { do {
if await datasource.isEmpty || !timeline.supportNewestPagination { if await datasource.isEmpty {
await reset()
try await fetchFirstPage(client: client) try await fetchFirstPage(client: client)
} else if let latest = await datasource.get().first { } else if let latest = await datasource.get().first, timeline.supportNewestPagination {
try await fetchNewPagesFrom(latestStatus: latest, client: client) try await fetchNewPagesFrom(latestStatus: latest, client: client)
} }
} catch { } catch {