Skip to content

Commit eb6d6f3

Browse files
committed
(feat) add emoji reaction removal
1 parent 51e1b5f commit eb6d6f3

File tree

2 files changed

+14
-18
lines changed

2 files changed

+14
-18
lines changed

demo/src/ChatContainer.vue

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -451,23 +451,15 @@ export default {
451451
// do something
452452
},
453453
454-
async sendMessageReaction({ reaction, messageId, roomId }) {
455-
await this.messagesRef(roomId)
456-
.doc(messageId)
457-
.update({
458-
[`reactions.${reaction.name}`]: firebase.firestore.FieldValue.arrayUnion(
459-
this.currentUserId
460-
)
461-
})
462-
},
454+
async sendMessageReaction({ reaction, messageId, remove, roomId }) {
455+
const dbAction = remove
456+
? firebase.firestore.FieldValue.arrayRemove(this.currentUserId)
457+
: firebase.firestore.FieldValue.arrayUnion(this.currentUserId)
463458
464-
async removeMessageReaction({ reaction, messageId, roomId }) {
465459
await this.messagesRef(roomId)
466460
.doc(messageId)
467461
.update({
468-
[`reactions.${reaction.name}`]: firebase.firestore.FieldValue.arrayRemove(
469-
this.currentUserId
470-
)
462+
[`reactions.${reaction.name}`]: dbAction
471463
})
472464
},
473465

src/ChatWindow/ChatMessage.vue

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -164,10 +164,13 @@
164164
</div>
165165
<button
166166
v-for="(reaction, key) in message.reactions"
167+
v-show="reaction.length"
167168
:key="key"
168169
class="button-reaction"
169-
:class="{ 'reaction-me': reaction[message.sender_id] }"
170-
@click="sendMessageReaction({ name: key })"
170+
:class="{
171+
'reaction-me': reaction.indexOf(currentUserId) !== -1
172+
}"
173+
@click="sendMessageReaction({ name: key }, reaction)"
171174
>
172175
{{ getEmojiByName(key) }}<span>{{ reaction.length }}</span>
173176
</button>
@@ -376,12 +379,13 @@ export default {
376379
getEmojiByName(emojiName) {
377380
return this.emojisList[emojiName]
378381
},
379-
sendMessageReaction(emoji) {
380-
this.closeEmoji()
382+
sendMessageReaction(emoji, reaction) {
381383
this.$emit('sendMessageReaction', {
382384
messageId: this.message._id,
383-
reaction: emoji
385+
reaction: emoji,
386+
remove: reaction && reaction.indexOf(this.currentUserId) !== -1
384387
})
388+
this.closeEmoji()
385389
}
386390
}
387391
}

0 commit comments

Comments
 (0)