do not thread author media filtered feed (#1253)

zio/stable
Eric Bailey 2023-08-22 12:46:49 -05:00 committed by GitHub
parent 88357d5c82
commit 09a445d804
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 6 deletions

View File

@ -11,9 +11,18 @@ import {cleanError} from 'lib/strings/errors'
import {FeedTuner} from 'lib/api/feed-manip'
import {PostsFeedSliceModel} from './posts-slice'
import {track} from 'lib/analytics/analytics'
import {FeedViewPostsSlice} from 'lib/api/feed-manip'
const PAGE_SIZE = 30
type Options = {
/**
* Formats the feed in a flat array with no threading of replies, just
* top-level posts.
*/
isSimpleFeed?: boolean
}
type QueryParams =
| GetTimeline.QueryParams
| GetAuthorFeed.QueryParams
@ -35,6 +44,7 @@ export class PostsFeedModel {
pollCursor: string | undefined
tuner = new FeedTuner()
pageSize = PAGE_SIZE
options: Options = {}
// used to linearize async modifications to state
lock = new AwaitLock()
@ -49,6 +59,7 @@ export class PostsFeedModel {
public rootStore: RootStoreModel,
public feedType: 'home' | 'author' | 'custom',
params: QueryParams,
options?: Options,
) {
makeAutoObservable(
this,
@ -60,6 +71,7 @@ export class PostsFeedModel {
{autoBind: true},
)
this.params = params
this.options = options || {}
}
get hasContent() {
@ -354,7 +366,9 @@ export class PostsFeedModel {
this.rootStore.posts.fromFeedItem(item)
}
const slices = this.tuner.tune(res.data.feed, this.feedTuners)
const slices = this.options.isSimpleFeed
? res.data.feed.map(item => new FeedViewPostsSlice([item]))
: this.tuner.tune(res.data.feed, this.feedTuners)
const toAppend: PostsFeedSliceModel[] = []
for (const slice of slices) {

View File

@ -176,11 +176,18 @@ export class ProfileUiModel {
filter = 'posts_with_media'
}
this.feed = new PostsFeedModel(this.rootStore, 'author', {
actor: this.params.user,
limit: 10,
filter,
})
this.feed = new PostsFeedModel(
this.rootStore,
'author',
{
actor: this.params.user,
limit: 10,
filter,
},
{
isSimpleFeed: ['posts_with_media'].includes(filter),
},
)
if (this.currentView instanceof PostsFeedModel) {
this.feed.setup()