Skip to content

Commit 1adc8da

Browse files
committed
(demo) add openUserTag
1 parent 9c5d4aa commit 1adc8da

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

demo/src/ChatContainer.vue

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
:theme="theme"
5151
:styles="styles"
5252
:current-user-id="currentUserId"
53+
:roomId="roomId"
5354
:rooms="loadedRooms"
5455
:loading-rooms="loadingRooms"
5556
:messages="messages"
@@ -63,6 +64,7 @@
6364
@edit-message="editMessage"
6465
@delete-message="deleteMessage"
6566
@open-file="openFile"
67+
@open-user-tag="openUserTag"
6668
@add-room="addRoom"
6769
@menu-action-handler="menuActionHandler"
6870
@message-action-handler="messageActionHandler"
@@ -98,6 +100,7 @@ export default {
98100
return {
99101
roomsPerPage: 15,
100102
rooms: [],
103+
roomId: '',
101104
startRooms: null,
102105
endRooms: null,
103106
roomsLoaded: false,
@@ -312,6 +315,7 @@ export default {
312315
content,
313316
timestamp,
314317
date: message.timestamp.seconds,
318+
distributed: true,
315319
seen: message.sender_id === this.currentUserId ? message.seen : null,
316320
new:
317321
message.sender_id !== this.currentUserId &&
@@ -458,6 +462,61 @@ export default {
458462
window.open(message.file.url, '_blank')
459463
},
460464
465+
async openUserTag({ user }) {
466+
let roomId
467+
468+
this.rooms.forEach(room => {
469+
if (room.users.length === 2) {
470+
const userId1 = room.users[0]._id
471+
const userId2 = room.users[1]._id
472+
if (
473+
(userId1 === user._id || userId1 === this.currentUserId) &&
474+
(userId2 === user._id || userId2 === this.currentUserId)
475+
) {
476+
roomId = room.roomId
477+
}
478+
}
479+
})
480+
481+
if (roomId) {
482+
this.roomId = roomId
483+
return setTimeout(() => (this.roomId = ''), 0)
484+
}
485+
486+
const query1 = await roomsRef
487+
.where('users', '==', [this.currentUserId, user._id])
488+
.get()
489+
490+
if (!query1.empty) {
491+
return this.loadRoom(query1)
492+
}
493+
494+
let query2 = await roomsRef
495+
.where('users', '==', [user._id, this.currentUserId])
496+
.get()
497+
498+
if (!query2.empty) {
499+
return this.loadRoom(query2)
500+
}
501+
502+
const room = await roomsRef.add({
503+
users: [user._id, this.currentUserId],
504+
lastUpdated: new Date()
505+
})
506+
507+
this.roomId = room.id
508+
this.fetchRooms()
509+
},
510+
511+
async loadRoom(query) {
512+
query.forEach(async room => {
513+
if (this.loadingRooms) return
514+
await roomsRef.doc(room.id).update({ lastUpdated: new Date() })
515+
this.roomId = room.id
516+
this.fetchRooms()
517+
})
518+
},
519+
461520
async editMessage({ messageId, newContent, roomId, file }) {
462521
const newMessage = { edited: new Date() }
463522
newMessage.content = newContent

0 commit comments

Comments
 (0)