summaryrefslogtreecommitdiff
path: root/demo/components/comment.js
diff options
context:
space:
mode:
authorAnthony Wang2023-02-05 16:23:21 -0500
committerAnthony Wang2023-02-05 16:23:21 -0500
commit53b54eb076246ffeb6c5c4e8b52a643696195333 (patch)
tree89315a4a19e43d787c86078c18d658c125ade9cb /demo/components/comment.js
parentc11da4dd7e082fd54562c3676dc27f4a0e8e3048 (diff)
Implement recursive commenting and sorting by number of likes
Diffstat (limited to 'demo/components/comment.js')
-rw-r--r--demo/components/comment.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/demo/components/comment.js b/demo/components/comment.js
new file mode 100644
index 0000000..d838ee1
--- /dev/null
+++ b/demo/components/comment.js
@@ -0,0 +1,71 @@
+import LikeButton from './like-button.js'
+
+export default {
+ name: 'Comments',
+
+ components: { LikeButton },
+
+ props: ['messageID'],
+
+ methods: {
+ commentObjects(objects) {
+ console.log(111111111111)
+ console.log(objects.filter(o=>'like' in o))
+ console.log(objects.filter(o=>'comment' in o))
+ return objects.filter(o=>
+ 'comment' in o &&
+ 'timestamp' in o &&
+ o.comment == this.messageID &&
+ typeof o.timestamp == 'number')
+ .sort((a,b)=>
+ objects.filter(o=>
+ 'like' in o &&
+ o.like == a._id).length
+ < objects.filter(o=>
+ 'like' in o &&
+ o.like == b._id).length
+ )
+ },
+
+ sendComment(objects) {
+ this.$graffitiUpdate({
+ comment: this.messageID,
+ timestamp: Date.now(),
+ message: this.message,
+ _tags: [this.messageID]
+ })
+ }
+ },
+
+ template: `
+ <graffiti-objects :tags="[messageID]" v-slot="{objects}">
+ <details>
+ <summary>Comment</summary>
+ <form @submit.prevent="sendComment(objects)">
+ <input v-model="message">
+ <input type="submit" value="Submit"/>
+ </form>
+ </details>
+ <details open>
+ <summary>Collapse thread</summary>
+ <ul v-for="object in commentObjects(objects)">
+ <li>
+ <Name :of="object._by"/>
+ {{ object.message }}
+ <LikeButton :messageID="object._id" :parent="messageID"/>
+ <template v-if="object._by==$graffitiMyID">
+ <button @click="object.message+='!!';object._update()">
+ ‼️
+ </button>
+
+ <button @click="object.message='deleted';object._update()">
+ ❌
+ </button>
+ </template>
+ <Comments :messageID="object._id" />
+ </li>
+ </ul>
+ </details>
+ </graffiti-objects>`
+}
+