diff --git a/Mlem/Models/Trackers/Generics/StandardTracker.swift b/Mlem/Models/Trackers/Generics/StandardTracker.swift index 2cf0d5d81..9afef57e1 100644 --- a/Mlem/Models/Trackers/Generics/StandardTracker.swift +++ b/Mlem/Models/Trackers/Generics/StandardTracker.swift @@ -203,6 +203,8 @@ class StandardTracker: CoreTracker { await setLoading(.loading) + var newState: LoadingState = .idle + var newItems: [Item] = .init() while newItems.count < internetSpeed.pageSize { let fetched = try await fetchPage(page: page + 1) @@ -211,7 +213,7 @@ class StandardTracker: CoreTracker { if !fetched.hasContent { print("[\(Item.self) tracker] fetch returned no items, setting loading state to done") - await setLoading(.done) + newState = .done break } @@ -227,9 +229,7 @@ class StandardTracker: CoreTracker { await addItems(allowedItems) } - if loadingState != .done { - await setLoading(.idle) - } + await setLoading(newState) } private func loadCursorHelper(_ cursor: String) async throws { @@ -247,13 +247,14 @@ class StandardTracker: CoreTracker { 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 } @@ -264,11 +265,7 @@ class StandardTracker: CoreTracker { } let allowedItems = storeIdsAndDedupe(newItems: newItems) - await addItems(allowedItems) - - if loadingState != .done { - await setLoading(.idle) - } + await setLoading(newState) } } diff --git a/Mlem/Views/Tabs/Feeds/Components/UserContentFeedView.swift b/Mlem/Views/Tabs/Feeds/Components/UserContentFeedView.swift index af0de73ac..eae95f5a5 100644 --- a/Mlem/Views/Tabs/Feeds/Components/UserContentFeedView.swift +++ b/Mlem/Views/Tabs/Feeds/Components/UserContentFeedView.swift @@ -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)) } }