37 lines
936 B
JavaScript
37 lines
936 B
JavaScript
export default {
|
|
|
|
props: ['messageID', 'parent'],
|
|
|
|
methods: {
|
|
likeObjects(objects, messageID=this.messageID) {
|
|
return objects.filter(o=>
|
|
'like' in o &&
|
|
'timestamp' in o &&
|
|
o.like == messageID &&
|
|
typeof o.timestamp == 'number')
|
|
|
|
},
|
|
|
|
toggleLike(objects) {
|
|
const myLikes = this.likeObjects(objects).mine
|
|
if (myLikes.length) {
|
|
myLikes.removeMine()
|
|
} else {
|
|
this.$graffitiUpdate({
|
|
like: this.messageID,
|
|
timestamp: Date.now(),
|
|
_tags: [this.messageID, this.parent]
|
|
})
|
|
}
|
|
}
|
|
},
|
|
|
|
template: `
|
|
<graffiti-objects :tags="[messageID]" v-slot="{objects}">
|
|
<button @click="toggleLike(objects)" :class="likeObjects(objects).mine.length?'button-primary':''">
|
|
👍 {{ likeObjects(objects).length }}
|
|
</button>
|
|
</graffiti-objects>`
|
|
}
|
|
|