diff --git a/src/state/models/suggested-actors-view.ts b/src/state/models/suggested-actors-view.ts
index 0c9e0c3e19..ebc9e8bc20 100644
--- a/src/state/models/suggested-actors-view.ts
+++ b/src/state/models/suggested-actors-view.ts
@@ -1,4 +1,4 @@
-import {makeAutoObservable} from 'mobx'
+import {makeAutoObservable, runInAction} from 'mobx'
import {AppBskyActorGetSuggestions as GetSuggestions} from '@atproto/api'
import {RootStoreModel} from './root-store'
@@ -89,33 +89,32 @@ export class SuggestedActorsViewModel {
this.suggestions = []
}
let res
- let totalAdded = 0
+ let items: SuggestedActor[] = []
do {
res = await this.rootStore.api.app.bsky.actor.getSuggestions({
limit: PAGE_SIZE,
cursor: this.loadMoreCursor,
})
- totalAdded += await this._appendAll(res)
- } while (totalAdded < PAGE_SIZE && this.hasMore)
+ this.loadMoreCursor = res.data.cursor
+ this.hasMore = !!this.loadMoreCursor
+ items = items.concat(
+ res.data.actors.filter(actor => {
+ if (actor.did === this.rootStore.me.did) {
+ return false // skip self
+ }
+ if (actor.myState?.follow) {
+ return false // skip already-followed users
+ }
+ return true
+ }),
+ )
+ } while (items.length < PAGE_SIZE && this.hasMore)
+ runInAction(() => {
+ this.suggestions = this.suggestions.concat(items)
+ })
this._xIdle()
} catch (e: any) {
this._xIdle(e)
}
}
-
- private async _appendAll(res: GetSuggestions.Response) {
- this.loadMoreCursor = res.data.cursor
- this.hasMore = !!this.loadMoreCursor
- const newSuggestions = res.data.actors.filter(actor => {
- if (actor.did === this.rootStore.me.did) {
- return false // skip self
- }
- if (actor.myState?.follow) {
- return false // skip already-followed users
- }
- return true
- })
- this.suggestions = this.suggestions.concat(newSuggestions)
- return newSuggestions.length
- }
}
diff --git a/src/view/com/discover/SuggestedFollows.tsx b/src/view/com/discover/SuggestedFollows.tsx
index bfc82b3691..903c6d7934 100644
--- a/src/view/com/discover/SuggestedFollows.tsx
+++ b/src/view/com/discover/SuggestedFollows.tsx
@@ -94,6 +94,7 @@ export const SuggestedFollows = observer(
if (asLinks) {
return (
)}
contentContainerStyle={s.contentContainer}
- style={s.flex1}
/>
)}
@@ -221,7 +222,7 @@ const User = ({
const styles = StyleSheet.create({
container: {
- flex: 1,
+ height: '100%',
},
suggestionsContainer: {
diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx
index 7fd8138096..9eac521fed 100644
--- a/src/view/screens/Profile.tsx
+++ b/src/view/screens/Profile.tsx
@@ -127,7 +127,7 @@ export const Profile = observer(({navIdx, visible, params}: ScreenParams) => {
}
if (!uiState.feed.hasMore) {
items = items.concat([END_ITEM])
- } else {
+ } else if (uiState.feed.isLoading) {
Footer = LoadingMoreFooter
}
renderItem = (item: any) => {