about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/state/models/feeds/posts.ts16
-rw-r--r--src/state/models/ui/profile.ts17
2 files changed, 27 insertions, 6 deletions
diff --git a/src/state/models/feeds/posts.ts b/src/state/models/feeds/posts.ts
index 6facc27ad..93add8102 100644
--- a/src/state/models/feeds/posts.ts
+++ b/src/state/models/feeds/posts.ts
@@ -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) {
diff --git a/src/state/models/ui/profile.ts b/src/state/models/ui/profile.ts
index 9dae09ec5..e026a27fc 100644
--- a/src/state/models/ui/profile.ts
+++ b/src/state/models/ui/profile.ts
@@ -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()