about summary refs log tree commit diff
path: root/src/state/models/content/post.ts
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2023-04-27 12:38:23 -0500
committerGitHub <noreply@github.com>2023-04-27 12:38:23 -0500
commit1d50ddb378d5c6954d4cf8a6145b4486b9497107 (patch)
tree85a55e9aef6692c304cc31d7c3bb239c186f7951 /src/state/models/content/post.ts
parent51be8474db5e8074b1af233609b5eb455af31692 (diff)
downloadvoidsky-1d50ddb378d5c6954d4cf8a6145b4486b9497107.tar.zst
Refactor moderation to apply to accounts, profiles, and posts correctly (#548)
* Add ScreenHider component

* Add blur attribute to UserAvatar and UserBanner

* Remove dead suggested posts component and model

* Bump @atproto/api@0.2.10

* Rework moderation tooling to give a more precise DSL

* Add label mocks

* Apply finer grained moderation controls

* Refactor ProfileCard to just take the profile object

* Apply moderation to user listings and banner

* Apply moderation to notifications

* Fix lint

* Tune avatar & banner blur settings per platform

* 1.24
Diffstat (limited to 'src/state/models/content/post.ts')
-rw-r--r--src/state/models/content/post.ts122
1 files changed, 0 insertions, 122 deletions
diff --git a/src/state/models/content/post.ts b/src/state/models/content/post.ts
deleted file mode 100644
index 7ba633366..000000000
--- a/src/state/models/content/post.ts
+++ /dev/null
@@ -1,122 +0,0 @@
-import {makeAutoObservable} from 'mobx'
-import {AppBskyFeedPost as Post} from '@atproto/api'
-import {AtUri} from '@atproto/api'
-import {RootStoreModel} from '../root-store'
-import {cleanError} from 'lib/strings/errors'
-
-type RemoveIndex<T> = {
-  [P in keyof T as string extends P
-    ? never
-    : number extends P
-    ? never
-    : P]: T[P]
-}
-export class PostModel implements RemoveIndex<Post.Record> {
-  // state
-  isLoading = false
-  hasLoaded = false
-  error = ''
-  uri: string = ''
-
-  // data
-  text: string = ''
-  entities?: Post.Entity[]
-  reply?: Post.ReplyRef
-  createdAt: string = ''
-
-  constructor(public rootStore: RootStoreModel, uri: string) {
-    makeAutoObservable(
-      this,
-      {
-        rootStore: false,
-        uri: false,
-      },
-      {autoBind: true},
-    )
-    this.uri = uri
-  }
-
-  get hasContent() {
-    return this.createdAt !== ''
-  }
-
-  get hasError() {
-    return this.error !== ''
-  }
-
-  get isEmpty() {
-    return this.hasLoaded && !this.hasContent
-  }
-
-  get rootUri(): string {
-    if (this.reply?.root.uri) {
-      return this.reply.root.uri
-    }
-    return this.uri
-  }
-
-  get isThreadMuted() {
-    return this.rootStore.mutedThreads.uris.has(this.rootUri)
-  }
-
-  // public api
-  // =
-
-  async setup() {
-    await this._load()
-  }
-
-  async toggleThreadMute() {
-    if (this.isThreadMuted) {
-      this.rootStore.mutedThreads.uris.delete(this.rootUri)
-    } else {
-      this.rootStore.mutedThreads.uris.add(this.rootUri)
-    }
-  }
-
-  // state transitions
-  // =
-
-  _xLoading() {
-    this.isLoading = true
-    this.error = ''
-  }
-
-  _xIdle(err?: any) {
-    this.isLoading = false
-    this.hasLoaded = true
-    this.error = cleanError(err)
-    if (err) {
-      this.rootStore.log.error('Failed to fetch post', err)
-    }
-  }
-
-  // loader functions
-  // =
-
-  async _load() {
-    this._xLoading()
-    try {
-      const urip = new AtUri(this.uri)
-      const res = await this.rootStore.agent.getPost({
-        repo: urip.host,
-        rkey: urip.rkey,
-      })
-      // TODO
-      // if (!res.valid) {
-      //   throw new Error(res.error)
-      // }
-      this._replaceAll(res.value)
-      this._xIdle()
-    } catch (e: any) {
-      this._xIdle(e)
-    }
-  }
-
-  _replaceAll(res: Post.Record) {
-    this.text = res.text
-    this.entities = res.entities
-    this.reply = res.reply
-    this.createdAt = res.createdAt
-  }
-}