diff options
Diffstat (limited to 'src/state/models/feeds/algo/algo-item.ts')
-rw-r--r-- | src/state/models/feeds/algo/algo-item.ts | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/src/state/models/feeds/algo/algo-item.ts b/src/state/models/feeds/algo/algo-item.ts deleted file mode 100644 index bd4ea4fd6..000000000 --- a/src/state/models/feeds/algo/algo-item.ts +++ /dev/null @@ -1,142 +0,0 @@ -import {AppBskyFeedDefs, AtUri} from '@atproto/api' -import {makeAutoObservable} from 'mobx' -import {RootStoreModel} from 'state/models/root-store' - -export class AlgoItemModel { - // data - data: AppBskyFeedDefs.GeneratorView - - constructor( - public rootStore: RootStoreModel, - view: AppBskyFeedDefs.GeneratorView, - ) { - this.data = view - makeAutoObservable( - this, - { - rootStore: false, - }, - {autoBind: true}, - ) - } - - // local actions - // = - set toggleSaved(value: boolean) { - console.log('toggleSaved', this.data.viewer) - if (this.data.viewer) { - this.data.viewer.saved = value - } - } - - get getUri() { - return this.data.uri - } - - get isSaved() { - return this.data.viewer?.saved - } - - get isLiked() { - return this.data.viewer?.like - } - - private toggleLiked(s?: string) { - if (this.data.viewer) { - if (this.data.viewer.like) { - this.data.viewer.like = undefined - } else { - this.data.viewer.like = s - } - } - } - - private incrementLike() { - if (this.data.likeCount) { - this.data.likeCount += 1 - } else { - this.data.likeCount = 1 - } - } - - private decrementLike() { - if (this.data.likeCount) { - this.data.likeCount -= 1 - } else { - this.data.likeCount = 0 - } - } - - private rewriteData(data: AppBskyFeedDefs.GeneratorView) { - this.data = data - } - - // public apis - // = - async like() { - try { - const res = await this.rootStore.agent.app.bsky.feed.like.create( - { - repo: this.rootStore.me.did, - }, - { - subject: { - uri: this.data.uri, - cid: this.data.cid, - }, - createdAt: new Date().toISOString(), - }, - ) - this.toggleLiked(res.uri) - this.incrementLike() - } catch (e: any) { - this.rootStore.log.error('Failed to like feed', e) - } - } - - async unlike() { - try { - await this.rootStore.agent.app.bsky.feed.like.delete({ - repo: this.rootStore.me.did, - rkey: new AtUri(this.data.viewer?.like!).rkey, - }) - this.toggleLiked() - this.decrementLike() - } catch (e: any) { - this.rootStore.log.error('Failed to unlike feed', e) - } - } - - static async getView(store: RootStoreModel, uri: string) { - const res = await store.agent.app.bsky.feed.getFeedGenerator({ - feed: uri, - }) - const view = res.data.view - return view - } - - async checkIsValid() { - const res = await this.rootStore.agent.app.bsky.feed.getFeedGenerator({ - feed: this.data.uri, - }) - return res.data.isValid - } - - async checkIsOnline() { - const res = await this.rootStore.agent.app.bsky.feed.getFeedGenerator({ - feed: this.data.uri, - }) - return res.data.isOnline - } - - async reload() { - const res = await this.rootStore.agent.app.bsky.feed.getFeedGenerator({ - feed: this.data.uri, - }) - this.rewriteData(res.data.view) - } - - serialize() { - return JSON.stringify(this.data) - } -} |