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) => {