Switch to using setVote()

zio/stable
Paul Frazee 2022-11-15 13:19:21 -06:00
parent 60c72087ff
commit 9a6df95ade
3 changed files with 60 additions and 104 deletions

View File

@ -51,48 +51,6 @@ export async function post(
)
}
export async function upvote(store: RootStoreModel, uri: string, cid: string) {
return await store.api.app.bsky.feed.vote.create(
{did: store.me.did || ''},
{
subject: {uri, cid},
direction: 'up',
createdAt: new Date().toISOString(),
},
)
}
export async function unupvote(store: RootStoreModel, upvoteUri: string) {
const urip = new AtUri(upvoteUri)
return await store.api.app.bsky.feed.vote.delete({
did: urip.hostname,
rkey: urip.rkey,
})
}
export async function downvote(
store: RootStoreModel,
uri: string,
cid: string,
) {
return await store.api.app.bsky.feed.vote.create(
{did: store.me.did || ''},
{
subject: {uri, cid},
direction: 'down',
createdAt: new Date().toISOString(),
},
)
}
export async function undownvote(store: RootStoreModel, downvoteUri: string) {
const urip = new AtUri(downvoteUri)
return await store.api.app.bsky.feed.vote.delete({
did: urip.hostname,
rkey: urip.rkey,
})
}
export async function repost(store: RootStoreModel, uri: string, cid: string) {
return await store.api.app.bsky.feed.repost.create(
{did: store.me.did || ''},

View File

@ -72,45 +72,44 @@ export class FeedItemModel implements GetTimeline.FeedItem {
}
}
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(() => {
this.upvoteCount++
this.myState.upvote = res.uri
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++
} 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(() => {
this.downvoteCount++
this.myState.downvote = res.uri
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++
} else {
this.downvoteCount--
}
this.myState.upvote = res.data.upvote
this.myState.downvote = res.data.downvote
})
}
async toggleRepost() {

View File

@ -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(() => {
this.upvoteCount++
this.myState.upvote = res.uri
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++
} 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(() => {
this.downvoteCount++
this.myState.downvote = res.uri
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++
} else {
this.downvoteCount--
}
this.myState.upvote = res.data.upvote
this.myState.downvote = res.data.downvote
})
}
async toggleRepost() {