about summary refs log tree commit diff
path: root/src/state/models/feeds/posts-slice.ts
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2023-11-10 15:34:25 -0800
committerGitHub <noreply@github.com>2023-11-10 15:34:25 -0800
commitc8c308e31e63607280648e3e9f1f56a371adcd05 (patch)
tree09cea4c603968a1a0b4cab299af9a417880c8115 /src/state/models/feeds/posts-slice.ts
parent51f04b96200e38d95e486628d3cbc43398c47980 (diff)
downloadvoidsky-c8c308e31e63607280648e3e9f1f56a371adcd05.tar.zst
Refactor feeds to use react-query (#1862)
* Update to react-query v5

* Introduce post-feed react query

* Add feed refresh behaviors

* Only fetch feeds of visible pages

* Implement polling for latest on feeds

* Add moderation filtering to slices

* Handle block errors

* Update feed error messages

* Remove old models

* Replace simple-feed option with disable-tuner option

* Add missing useMemo

* Implement the mergefeed and fixes to polling

* Correctly handle failed load more state

* Improve error and empty state behaviors

* Clearer naming
Diffstat (limited to 'src/state/models/feeds/posts-slice.ts')
-rw-r--r--src/state/models/feeds/posts-slice.ts91
1 files changed, 0 insertions, 91 deletions
diff --git a/src/state/models/feeds/posts-slice.ts b/src/state/models/feeds/posts-slice.ts
deleted file mode 100644
index 2501cef6f..000000000
--- a/src/state/models/feeds/posts-slice.ts
+++ /dev/null
@@ -1,91 +0,0 @@
-import {makeAutoObservable} from 'mobx'
-import {RootStoreModel} from '../root-store'
-import {FeedViewPostsSlice} from 'lib/api/feed-manip'
-import {PostsFeedItemModel} from './post'
-import {FeedSourceInfo} from 'lib/api/feed/types'
-
-export class PostsFeedSliceModel {
-  // ui state
-  _reactKey: string = ''
-
-  // data
-  items: PostsFeedItemModel[] = []
-  source: FeedSourceInfo | undefined
-
-  constructor(public rootStore: RootStoreModel, slice: FeedViewPostsSlice) {
-    this._reactKey = slice._reactKey
-    this.source = slice.source
-    for (let i = 0; i < slice.items.length; i++) {
-      this.items.push(
-        new PostsFeedItemModel(
-          rootStore,
-          `${this._reactKey} - ${i}`,
-          slice.items[i],
-        ),
-      )
-    }
-    makeAutoObservable(this, {rootStore: false})
-  }
-
-  get uri() {
-    if (this.isReply) {
-      return this.items[1].post.uri
-    }
-    return this.items[0].post.uri
-  }
-
-  get isThread() {
-    return (
-      this.items.length > 1 &&
-      this.items.every(
-        item => item.post.author.did === this.items[0].post.author.did,
-      )
-    )
-  }
-
-  get isReply() {
-    return this.items.length > 1 && !this.isThread
-  }
-
-  get rootItem() {
-    if (this.isReply) {
-      return this.items[1]
-    }
-    return this.items[0]
-  }
-
-  get moderation() {
-    // prefer the most stringent item
-    const topItem = this.items.find(item => item.moderation.content.filter)
-    if (topItem) {
-      return topItem.moderation
-    }
-    // otherwise just use the first one
-    return this.items[0].moderation
-  }
-
-  shouldFilter(ignoreFilterForDid: string | undefined): boolean {
-    const mods = this.items
-      .filter(item => item.post.author.did !== ignoreFilterForDid)
-      .map(item => item.moderation)
-    return !!mods.find(mod => mod.content.filter)
-  }
-
-  containsUri(uri: string) {
-    return !!this.items.find(item => item.post.uri === uri)
-  }
-
-  isThreadParentAt(i: number) {
-    if (this.items.length === 1) {
-      return false
-    }
-    return i < this.items.length - 1
-  }
-
-  isThreadChildAt(i: number) {
-    if (this.items.length === 1) {
-      return false
-    }
-    return i > 0
-  }
-}