55 <button type =" submit" :disabled =" disableForm || !addRoomUsername" >
66 Create Room
77 </button >
8- <button class =" button-cancel" @click =" addNewRoom = false" >
9- Cancel
10- </button >
8+ <button class =" button-cancel" @click =" addNewRoom = false" >Cancel</button >
119 </form >
1210
1311 <form v-if =" inviteRoomId" @submit.prevent =" addRoomUser" >
1412 <input v-model =" invitedUsername" type =" text" placeholder =" Add username" />
1513 <button type =" submit" :disabled =" disableForm || !invitedUsername" >
1614 Add User
1715 </button >
18- <button class =" button-cancel" @click =" inviteRoomId = null" >
19- Cancel
20- </button >
16+ <button class =" button-cancel" @click =" inviteRoomId = null" >Cancel</button >
2117 </form >
2218
2319 <form v-if =" removeRoomId" @submit.prevent =" deleteRoomUser" >
2420 <select v-model =" removeUserId" >
25- <option default value =" " >
26- Select User
27- </option >
21+ <option default value =" " >Select User</option >
2822 <option v-for =" user in removeUsers" :key =" user._id" :value =" user._id" >
2923 {{ user.username }}
3024 </option >
3125 </select >
3226 <button type =" submit" :disabled =" disableForm || !removeUserId" >
3327 Remove User
3428 </button >
35- <button class =" button-cancel" @click =" removeRoomId = null" >
36- Cancel
37- </button >
29+ <button class =" button-cancel" @click =" removeRoomId = null" >Cancel</button >
3830 </form >
3931
40- <chat-window
32+ <vue-advanced-chat
33+ ref =" chatWindow"
4134 :height =" screenHeight"
4235 :theme =" theme"
43- :styles =" styles"
36+ :styles =" JSON.stringify( styles) "
4437 :current-user-id =" currentUserId"
4538 :room-id =" roomId"
46- :rooms =" loadedRooms"
39+ :rooms =" JSON.stringify( loadedRooms) "
4740 :loading-rooms =" loadingRooms"
48- :messages =" messages"
49- :messages-loaded =" messagesLoaded"
5041 :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"
5444 :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)"
5649 @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)"
7065 >
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 >
7774 </div >
7875</template >
7976
@@ -82,18 +79,14 @@ import * as firestoreService from '@/database/firestore'
8279import * as firebaseService from ' @/database/firebase'
8380import * as storageService from ' @/database/storage'
8481import { parseTimestamp , formatTimestamp } from ' @/utils/dates'
82+ import logoAvatar from ' @/assets/logo.png'
8583
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 ()
9188
9289export default {
93- components: {
94- ChatWindow
95- },
96-
9790 props: {
9891 currentUserId: { type: String , required: true },
9992 theme: { type: String , required: true },
@@ -143,6 +136,7 @@ export default {
143136 { name: ' deleteRoom' , title: ' Delete Room' }
144137 ],
145138 messageSelectionActions: [{ name: ' deleteMessages' , title: ' Delete' }],
139+ // eslint-disable-next-line vue/no-unused-properties
146140 styles: { container: { borderRadius: ' 4px' } },
147141 templatesText: [
148142 {
@@ -172,11 +166,21 @@ export default {
172166 },
173167
174168 mounted () {
169+ this .addCss ()
170+
175171 this .fetchRooms ()
176172 firebaseService .updateUserOnlineStatus (this .currentUserId )
177173 },
178174
179175 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+ },
180184 resetRooms () {
181185 this .loadingRooms = true
182186 this .loadingLastMessageByRoom = 0
@@ -268,7 +272,7 @@ export default {
268272 const roomAvatar =
269273 roomContacts .length === 1 && roomContacts[0 ].avatar
270274 ? roomContacts[0 ].avatar
271- : require ( ' @/assets/logo.png ' )
275+ : logoAvatar
272276
273277 formattedRooms .push ({
274278 ... room,
@@ -342,6 +346,7 @@ export default {
342346 return {
343347 ... message,
344348 ... {
349+ _id: message .id ,
345350 content,
346351 senderId: message .sender_id ,
347352 timestamp: formatTimestamp (
@@ -354,7 +359,11 @@ export default {
354359 new:
355360 message .sender_id !== this .currentUserId &&
356361 (! 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+ }
358367 }
359368 }
360369 },
@@ -364,7 +373,6 @@ export default {
364373
365374 if (options .reset ) {
366375 this .resetMessages ()
367- this .roomId = room .roomId
368376 }
369377
370378 if (this .previousLastLoadedMessage && ! this .lastLoadedMessage ) {
@@ -381,7 +389,9 @@ export default {
381389 if (this .selectedRoom !== room .roomId ) return
382390
383391 if (data .length === 0 || data .length < this .messagesPerPage ) {
384- setTimeout (() => (this .messagesLoaded = true ), 0 )
392+ setTimeout (() => {
393+ this .messagesLoaded = true
394+ }, 0 )
385395 }
386396
387397 if (options .reset ) this .messages = []
0 commit comments