5
5
<button type =" submit" :disabled =" disableForm || !addRoomUsername" >
6
6
Create Room
7
7
</button >
8
- <button class =" button-cancel" @click =" addNewRoom = false" >
9
- Cancel
10
- </button >
8
+ <button class =" button-cancel" @click =" addNewRoom = false" >Cancel</button >
11
9
</form >
12
10
13
11
<form v-if =" inviteRoomId" @submit.prevent =" addRoomUser" >
14
12
<input v-model =" invitedUsername" type =" text" placeholder =" Add username" />
15
13
<button type =" submit" :disabled =" disableForm || !invitedUsername" >
16
14
Add User
17
15
</button >
18
- <button class =" button-cancel" @click =" inviteRoomId = null" >
19
- Cancel
20
- </button >
16
+ <button class =" button-cancel" @click =" inviteRoomId = null" >Cancel</button >
21
17
</form >
22
18
23
19
<form v-if =" removeRoomId" @submit.prevent =" deleteRoomUser" >
24
20
<select v-model =" removeUserId" >
25
- <option default value =" " >
26
- Select User
27
- </option >
21
+ <option default value =" " >Select User</option >
28
22
<option v-for =" user in removeUsers" :key =" user._id" :value =" user._id" >
29
23
{{ user.username }}
30
24
</option >
31
25
</select >
32
26
<button type =" submit" :disabled =" disableForm || !removeUserId" >
33
27
Remove User
34
28
</button >
35
- <button class =" button-cancel" @click =" removeRoomId = null" >
36
- Cancel
37
- </button >
29
+ <button class =" button-cancel" @click =" removeRoomId = null" >Cancel</button >
38
30
</form >
39
31
40
- <chat-window
32
+ <vue-advanced-chat
33
+ ref =" chatWindow"
41
34
:height =" screenHeight"
42
35
:theme =" theme"
43
- :styles =" styles"
36
+ :styles =" JSON.stringify( styles) "
44
37
:current-user-id =" currentUserId"
45
38
:room-id =" roomId"
46
- :rooms =" loadedRooms"
39
+ :rooms =" JSON.stringify( loadedRooms) "
47
40
:loading-rooms =" loadingRooms"
48
- :messages =" messages"
49
- :messages-loaded =" messagesLoaded"
50
41
:rooms-loaded =" roomsLoaded"
51
- :room-actions =" roomActions"
52
- :menu-actions =" menuActions"
53
- :message-selection-actions =" messageSelectionActions"
42
+ :messages =" JSON.stringify(messages)"
43
+ :messages-loaded =" messagesLoaded"
54
44
:room-message =" roomMessage"
55
- :templates-text =" templatesText"
45
+ :room-actions =" JSON.stringify(roomActions)"
46
+ :menu-actions =" JSON.stringify(menuActions)"
47
+ :message-selection-actions =" JSON.stringify(messageSelectionActions)"
48
+ :templates-text =" JSON.stringify(templatesText)"
56
49
@fetch-more-rooms =" fetchMoreRooms"
57
- @fetch-messages =" fetchMessages"
58
- @send-message =" sendMessage"
59
- @edit-message =" editMessage"
60
- @delete-message =" deleteMessage"
61
- @open-file =" openFile"
62
- @open-user-tag =" openUserTag"
63
- @add-room =" addRoom"
64
- @room-action-handler =" menuActionHandler"
65
- @menu-action-handler =" menuActionHandler"
66
- @message-selection-action-handler =" messageSelectionActionHandler"
67
- @send-message-reaction =" sendMessageReaction"
68
- @typing-message =" typingMessage"
69
- @toggle-rooms-list =" $emit('show-demo-options', $event.opened)"
50
+ @fetch-messages =" fetchMessages($event.detail[0])"
51
+ @send-message =" sendMessage($event.detail[0])"
52
+ @edit-message =" editMessage($event.detail[0])"
53
+ @delete-message =" deleteMessage($event.detail[0])"
54
+ @open-file =" openFile($event.detail[0])"
55
+ @open-user-tag =" openUserTag($event.detail[0])"
56
+ @add-room =" addRoom($event.detail[0])"
57
+ @room-action-handler =" menuActionHandler($event.detail[0])"
58
+ @menu-action-handler =" menuActionHandler($event.detail[0])"
59
+ @message-selection-action-handler ="
60
+ messageSelectionActionHandler($event.detail[0])
61
+ "
62
+ @send-message-reaction =" sendMessageReaction($event.detail[0])"
63
+ @typing-message =" typingMessage($event.detail[0])"
64
+ @toggle-rooms-list =" $emit('show-demo-options', $event.detail[0].opened)"
70
65
>
71
- <!-- <template #emoji-picker="{ emojiOpened, addEmoji }">
72
- <button @click="addEmoji({ unicode: '😁' })">
73
- {{ emojiOpened }}
74
- </button>
75
- </template> -->
76
- </chat-window >
66
+ <!-- <div
67
+ v-for="message in messages"
68
+ :slot="'message_' + message._id"
69
+ :key="message._id"
70
+ >
71
+ New message container
72
+ </div> -->
73
+ </vue-advanced-chat >
77
74
</div >
78
75
</template >
79
76
@@ -82,18 +79,14 @@ import * as firestoreService from '@/database/firestore'
82
79
import * as firebaseService from ' @/database/firebase'
83
80
import * as storageService from ' @/database/storage'
84
81
import { parseTimestamp , formatTimestamp } from ' @/utils/dates'
82
+ import logoAvatar from ' @/assets/logo.png'
85
83
86
- import ChatWindow from ' ./../../src/lib/ChatWindow'
87
- // import ChatWindow, { Rooms } from 'vue-advanced-chat'
88
- // import ChatWindow from 'vue-advanced-chat'
89
- // import 'vue-advanced-chat/dist/vue-advanced-chat.css'
90
- // import ChatWindow from './../../dist/vue-advanced-chat.umd.min.js'
84
+ import { register } from ' vue-advanced-chat'
85
+ // import { register } from './../../dist/vue-advanced-chat.es.js'
86
+ // import { register } from './../../src/lib/index.js'
87
+ register ()
91
88
92
89
export default {
93
- components: {
94
- ChatWindow
95
- },
96
-
97
90
props: {
98
91
currentUserId: { type: String , required: true },
99
92
theme: { type: String , required: true },
@@ -143,6 +136,7 @@ export default {
143
136
{ name: ' deleteRoom' , title: ' Delete Room' }
144
137
],
145
138
messageSelectionActions: [{ name: ' deleteMessages' , title: ' Delete' }],
139
+ // eslint-disable-next-line vue/no-unused-properties
146
140
styles: { container: { borderRadius: ' 4px' } },
147
141
templatesText: [
148
142
{
@@ -172,11 +166,21 @@ export default {
172
166
},
173
167
174
168
mounted () {
169
+ this .addCss ()
170
+
175
171
this .fetchRooms ()
176
172
firebaseService .updateUserOnlineStatus (this .currentUserId )
177
173
},
178
174
179
175
methods: {
176
+ async addCss () {
177
+ if (import .meta.env.MODE === ' development' ) {
178
+ const styles = await import ('./../../src /styles /index .scss ')
179
+ const style = document .createElement ('style ')
180
+ style .innerHTML = styles .default
181
+ this .$refs .chatWindow .shadowRoot .appendChild (style )
182
+ }
183
+ },
180
184
resetRooms () {
181
185
this .loadingRooms = true
182
186
this .loadingLastMessageByRoom = 0
@@ -268,7 +272,7 @@ export default {
268
272
const roomAvatar =
269
273
roomContacts .length === 1 && roomContacts[0 ].avatar
270
274
? roomContacts[0 ].avatar
271
- : require ( ' @/assets/logo.png ' )
275
+ : logoAvatar
272
276
273
277
formattedRooms .push ({
274
278
... room,
@@ -342,6 +346,7 @@ export default {
342
346
return {
343
347
... message,
344
348
... {
349
+ _id: message .id ,
345
350
content,
346
351
senderId: message .sender_id ,
347
352
timestamp: formatTimestamp (
@@ -354,7 +359,11 @@ export default {
354
359
new:
355
360
message .sender_id !== this .currentUserId &&
356
361
(! message .seen || ! message .seen [this .currentUserId ]),
357
- lastMessage: { ... message .lastMessage , senderId: message .sender_id }
362
+ lastMessage: {
363
+ ... message .lastMessage ,
364
+ _id: message .id ,
365
+ senderId: message .sender_id
366
+ }
358
367
}
359
368
}
360
369
},
@@ -364,7 +373,6 @@ export default {
364
373
365
374
if (options .reset ) {
366
375
this .resetMessages ()
367
- this .roomId = room .roomId
368
376
}
369
377
370
378
if (this .previousLastLoadedMessage && ! this .lastLoadedMessage ) {
@@ -381,7 +389,9 @@ export default {
381
389
if (this .selectedRoom !== room .roomId ) return
382
390
383
391
if (data .length === 0 || data .length < this .messagesPerPage ) {
384
- setTimeout (() => (this .messagesLoaded = true ), 0 )
392
+ setTimeout (() => {
393
+ this .messagesLoaded = true
394
+ }, 0 )
385
395
}
386
396
387
397
if (options .reset ) this .messages = []
0 commit comments