about summary refs log tree commit diff
path: root/src/state/models/post-thread-view.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/state/models/post-thread-view.ts')
-rw-r--r--src/state/models/post-thread-view.ts61
1 files changed, 30 insertions, 31 deletions
diff --git a/src/state/models/post-thread-view.ts b/src/state/models/post-thread-view.ts
index 385aa2e8e..3d9f56ae3 100644
--- a/src/state/models/post-thread-view.ts
+++ b/src/state/models/post-thread-view.ts
@@ -112,45 +112,44 @@ export class PostThreadViewPostModel implements GetPostThread.Post {
     }
   }
 
-  async _clearVotes() {
-    if (this.myState.upvote) {
-      await apilib.unupvote(this.rootStore, this.myState.upvote)
-      runInAction(() => {
-        this.upvoteCount--
-        this.myState.upvote = undefined
-      })
-    }
-    if (this.myState.downvote) {
-      await apilib.undownvote(this.rootStore, this.myState.downvote)
-      runInAction(() => {
-        this.downvoteCount--
-        this.myState.downvote = undefined
-      })
-    }
-  }
-
   async toggleUpvote() {
     const wasntUpvoted = !this.myState.upvote
-    await this._clearVotes()
-    if (wasntUpvoted) {
-      const res = await apilib.upvote(this.rootStore, this.uri, this.cid)
-      runInAction(() => {
+    const res = await this.rootStore.api.app.bsky.feed.setVote({
+      subject: {
+        uri: this.uri,
+        cid: this.cid,
+      },
+      direction: wasntUpvoted ? 'up' : 'none',
+    })
+    runInAction(() => {
+      if (wasntUpvoted) {
         this.upvoteCount++
-        this.myState.upvote = res.uri
-      })
-    }
+      } else {
+        this.upvoteCount--
+      }
+      this.myState.upvote = res.data.upvote
+      this.myState.downvote = res.data.downvote
+    })
   }
 
   async toggleDownvote() {
     const wasntDownvoted = !this.myState.downvote
-    await this._clearVotes()
-    if (wasntDownvoted) {
-      const res = await apilib.downvote(this.rootStore, this.uri, this.cid)
-      runInAction(() => {
+    const res = await this.rootStore.api.app.bsky.feed.setVote({
+      subject: {
+        uri: this.uri,
+        cid: this.cid,
+      },
+      direction: wasntDownvoted ? 'down' : 'none',
+    })
+    runInAction(() => {
+      if (wasntDownvoted) {
         this.downvoteCount++
-        this.myState.downvote = res.uri
-      })
-    }
+      } else {
+        this.downvoteCount--
+      }
+      this.myState.upvote = res.data.upvote
+      this.myState.downvote = res.data.downvote
+    })
   }
 
   async toggleRepost() {