Skip to content

Commit

Permalink
Fix "no items" message in Saved Feed appearing momentarily before con…
Browse files Browse the repository at this point in the history
…tent loads (mlemgroup#898)
  • Loading branch information
Sjmarf authored Feb 5, 2024
1 parent 12b5707 commit d621a4a
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 12 deletions.
19 changes: 8 additions & 11 deletions Mlem/Models/Trackers/Generics/StandardTracker.swift
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,8 @@ class StandardTracker<Item: TrackerItem>: CoreTracker<Item> {

await setLoading(.loading)

var newState: LoadingState = .idle

var newItems: [Item] = .init()
while newItems.count < internetSpeed.pageSize {
let fetched = try await fetchPage(page: page + 1)
Expand All @@ -211,7 +213,7 @@ class StandardTracker<Item: TrackerItem>: CoreTracker<Item> {

if !fetched.hasContent {
print("[\(Item.self) tracker] fetch returned no items, setting loading state to done")
await setLoading(.done)
newState = .done
break
}

Expand All @@ -227,9 +229,7 @@ class StandardTracker<Item: TrackerItem>: CoreTracker<Item> {
await addItems(allowedItems)
}

if loadingState != .done {
await setLoading(.idle)
}
await setLoading(newState)
}

private func loadCursorHelper(_ cursor: String) async throws {
Expand All @@ -247,13 +247,14 @@ class StandardTracker<Item: TrackerItem>: CoreTracker<Item> {

await setLoading(.loading)

var newState: LoadingState = .idle

var newItems: [Item] = .init()
while newItems.count < internetSpeed.pageSize {
let fetched = try await fetchCursor(cursor: cursor)

if !fetched.hasContent || fetched.cursor == loadingCursor {
print("[\(Item.self) tracker] fetch returned no items or EOF cursor, setting loading state to done")
await setLoading(.done)
newState = .done
break
}

Expand All @@ -264,11 +265,7 @@ class StandardTracker<Item: TrackerItem>: CoreTracker<Item> {
}

let allowedItems = storeIdsAndDedupe(newItems: newItems)

await addItems(allowedItems)

if loadingState != .done {
await setLoading(.idle)
}
await setLoading(newState)
}
}
3 changes: 2 additions & 1 deletion Mlem/Views/Tabs/Feeds/Components/UserContentFeedView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,8 @@ struct UserContentFeedView: View {
.frame(maxWidth: .infinity)
} else if userContentTracker.loadingState == .done {
// NoPostsView(loadingState: postTracker.loadingState)
Text("no items :(")
Text("No items :(")
.padding(.top, 20)
.transition(.scale(scale: 0.9).combined(with: .opacity))
}
}
Expand Down

0 comments on commit d621a4a

Please sign in to comment.