do not thread author media filtered feed (#1253)
parent
88357d5c82
commit
09a445d804
|
@ -11,9 +11,18 @@ import {cleanError} from 'lib/strings/errors'
|
||||||
import {FeedTuner} from 'lib/api/feed-manip'
|
import {FeedTuner} from 'lib/api/feed-manip'
|
||||||
import {PostsFeedSliceModel} from './posts-slice'
|
import {PostsFeedSliceModel} from './posts-slice'
|
||||||
import {track} from 'lib/analytics/analytics'
|
import {track} from 'lib/analytics/analytics'
|
||||||
|
import {FeedViewPostsSlice} from 'lib/api/feed-manip'
|
||||||
|
|
||||||
const PAGE_SIZE = 30
|
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 =
|
type QueryParams =
|
||||||
| GetTimeline.QueryParams
|
| GetTimeline.QueryParams
|
||||||
| GetAuthorFeed.QueryParams
|
| GetAuthorFeed.QueryParams
|
||||||
|
@ -35,6 +44,7 @@ export class PostsFeedModel {
|
||||||
pollCursor: string | undefined
|
pollCursor: string | undefined
|
||||||
tuner = new FeedTuner()
|
tuner = new FeedTuner()
|
||||||
pageSize = PAGE_SIZE
|
pageSize = PAGE_SIZE
|
||||||
|
options: Options = {}
|
||||||
|
|
||||||
// used to linearize async modifications to state
|
// used to linearize async modifications to state
|
||||||
lock = new AwaitLock()
|
lock = new AwaitLock()
|
||||||
|
@ -49,6 +59,7 @@ export class PostsFeedModel {
|
||||||
public rootStore: RootStoreModel,
|
public rootStore: RootStoreModel,
|
||||||
public feedType: 'home' | 'author' | 'custom',
|
public feedType: 'home' | 'author' | 'custom',
|
||||||
params: QueryParams,
|
params: QueryParams,
|
||||||
|
options?: Options,
|
||||||
) {
|
) {
|
||||||
makeAutoObservable(
|
makeAutoObservable(
|
||||||
this,
|
this,
|
||||||
|
@ -60,6 +71,7 @@ export class PostsFeedModel {
|
||||||
{autoBind: true},
|
{autoBind: true},
|
||||||
)
|
)
|
||||||
this.params = params
|
this.params = params
|
||||||
|
this.options = options || {}
|
||||||
}
|
}
|
||||||
|
|
||||||
get hasContent() {
|
get hasContent() {
|
||||||
|
@ -354,7 +366,9 @@ export class PostsFeedModel {
|
||||||
this.rootStore.posts.fromFeedItem(item)
|
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[] = []
|
const toAppend: PostsFeedSliceModel[] = []
|
||||||
for (const slice of slices) {
|
for (const slice of slices) {
|
||||||
|
|
|
@ -176,11 +176,18 @@ export class ProfileUiModel {
|
||||||
filter = 'posts_with_media'
|
filter = 'posts_with_media'
|
||||||
}
|
}
|
||||||
|
|
||||||
this.feed = new PostsFeedModel(this.rootStore, 'author', {
|
this.feed = new PostsFeedModel(
|
||||||
|
this.rootStore,
|
||||||
|
'author',
|
||||||
|
{
|
||||||
actor: this.params.user,
|
actor: this.params.user,
|
||||||
limit: 10,
|
limit: 10,
|
||||||
filter,
|
filter,
|
||||||
})
|
},
|
||||||
|
{
|
||||||
|
isSimpleFeed: ['posts_with_media'].includes(filter),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
if (this.currentView instanceof PostsFeedModel) {
|
if (this.currentView instanceof PostsFeedModel) {
|
||||||
this.feed.setup()
|
this.feed.setup()
|
||||||
|
|
Loading…
Reference in New Issue