@@ -299,12 +299,12 @@ export default {
299
299
},
300
300
301
301
listenLastMessage (room ) {
302
- const listener = firestoreService .firestoreListener (
303
- firestoreService . lastMessageQuery ( room .roomId ) ,
302
+ const listener = firestoreService .listenLastMessage (
303
+ room .roomId ,
304
304
messages => {
305
- // this.incrementDbCounter('Listen Last Room Message', messages.size )
305
+ // this.incrementDbCounter('Listen Last Room Message', messages.length )
306
306
messages .forEach (message => {
307
- const lastMessage = this .formatLastMessage (message . data () , room)
307
+ const lastMessage = this .formatLastMessage (message, room)
308
308
const roomIndex = this .rooms .findIndex (
309
309
r => room .roomId === r .roomId
310
310
)
@@ -374,11 +374,11 @@ export default {
374
374
375
375
firestoreService
376
376
.getMessages (room .roomId , this .messagesPerPage , this .lastLoadedMessage )
377
- .then (messages => {
378
- // this.incrementDbCounter('Fetch Room Messages', messages.size )
377
+ .then (({ messages, docs }) => {
378
+ // this.incrementDbCounter('Fetch Room Messages', messages.length )
379
379
if (this .selectedRoom !== room .roomId ) return
380
380
381
- if (messages .empty || messages . docs .length < this .messagesPerPage ) {
381
+ if (messages .length === 0 || messages .length < this .messagesPerPage ) {
382
382
setTimeout (() => (this .messagesLoaded = true ), 0 )
383
383
}
384
384
@@ -392,43 +392,42 @@ export default {
392
392
if (this .lastLoadedMessage ) {
393
393
this .previousLastLoadedMessage = this .lastLoadedMessage
394
394
}
395
- this .lastLoadedMessage = messages .docs [messages .docs .length - 1 ]
396
-
397
- const listener = firestoreService .firestoreListener (
398
- firestoreService .paginatedMessagesQuery (
399
- room .roomId ,
400
- this .lastLoadedMessage ,
401
- this .previousLastLoadedMessage
402
- ),
403
- snapshots => {
404
- // this.incrementDbCounter('Listen Room Messages', snapshots.size)
405
- this .listenMessages (snapshots, room)
406
- }
407
- )
408
- this .listeners .push (listener)
395
+ this .lastLoadedMessage = docs[docs .length - 1 ]
396
+
397
+ this .listenMessages (room)
409
398
})
410
399
},
411
400
412
- listenMessages (messages , room ) {
413
- messages .forEach (message => {
414
- const formattedMessage = this .formatMessage (room, message)
415
- const messageIndex = this .messages .findIndex (m => m ._id === message .id )
401
+ listenMessages (room ) {
402
+ const listener = firestoreService .listenMessages (
403
+ room .roomId ,
404
+ this .lastLoadedMessage ,
405
+ this .previousLastLoadedMessage ,
406
+ messages => {
407
+ messages .forEach (message => {
408
+ const formattedMessage = this .formatMessage (room, message)
409
+ const messageIndex = this .messages .findIndex (
410
+ m => m ._id === message .id
411
+ )
416
412
417
- if (messageIndex === - 1 ) {
418
- this .messages = this .messages .concat ([formattedMessage])
419
- } else {
420
- this .messages [messageIndex] = formattedMessage
421
- this .messages = [... this .messages ]
422
- }
413
+ if (messageIndex === - 1 ) {
414
+ this .messages = this .messages .concat ([formattedMessage])
415
+ } else {
416
+ this .messages [messageIndex] = formattedMessage
417
+ this .messages = [... this .messages ]
418
+ }
423
419
424
- this .markMessagesSeen (room, message)
425
- })
420
+ this .markMessagesSeen (room, message)
421
+ })
422
+ }
423
+ )
424
+ this .listeners .push (listener)
426
425
},
427
426
428
427
markMessagesSeen (room , message ) {
429
428
if (
430
- message .data (). sender_id !== this .currentUserId &&
431
- (! message .data (). seen || ! message . data () .seen [this .currentUserId ])
429
+ message .sender_id !== this .currentUserId &&
430
+ (! message .seen || ! message .seen [this .currentUserId ])
432
431
) {
433
432
firestoreService .updateMessage (room .roomId , message .id , {
434
433
[` seen.${ this .currentUserId } ` ]: new Date ()
@@ -437,29 +436,26 @@ export default {
437
436
},
438
437
439
438
formatMessage (room , message ) {
440
- const { timestamp } = message .data ()
441
-
442
439
const formattedMessage = {
443
- ... message . data () ,
440
+ ... message,
444
441
... {
445
- senderId: message .data (). sender_id ,
442
+ senderId: message .sender_id ,
446
443
_id: message .id ,
447
- seconds: timestamp .seconds ,
448
- timestamp: parseTimestamp (timestamp, ' HH:mm' ),
449
- date: parseTimestamp (timestamp, ' DD MMMM YYYY' ),
450
- username: room .users .find (
451
- user => message .data ().sender_id === user ._id
452
- )? .username ,
444
+ seconds: message .timestamp .seconds ,
445
+ timestamp: parseTimestamp (message .timestamp , ' HH:mm' ),
446
+ date: parseTimestamp (message .timestamp , ' DD MMMM YYYY' ),
447
+ username: room .users .find (user => message .sender_id === user ._id )
448
+ ? .username ,
453
449
// avatar: senderUser ? senderUser.avatar : null,
454
450
distributed: true
455
451
}
456
452
}
457
453
458
- if (message .data (). replyMessage ) {
454
+ if (message .replyMessage ) {
459
455
formattedMessage .replyMessage = {
460
- ... message .data (). replyMessage ,
456
+ ... message .replyMessage ,
461
457
... {
462
- senderId: message .data (). replyMessage .sender_id
458
+ senderId: message .replyMessage .sender_id
463
459
}
464
460
}
465
461
}
@@ -732,13 +728,13 @@ export default {
732
728
},
733
729
734
730
async listenRooms (query ) {
735
- const listener = firestoreService .firestoreListener (query, rooms => {
731
+ const listener = firestoreService .listenRooms (query, rooms => {
736
732
// this.incrementDbCounter('Listen Rooms Typing Users', rooms.size)
737
733
rooms .forEach (room => {
738
734
const foundRoom = this .rooms .find (r => r .roomId === room .id )
739
735
if (foundRoom) {
740
- foundRoom .typingUsers = room .data (). typingUsers
741
- foundRoom .index = room .data (). lastUpdated .seconds
736
+ foundRoom .typingUsers = room .typingUsers
737
+ foundRoom .index = room .lastUpdated .seconds
742
738
}
743
739
})
744
740
})
@@ -844,11 +840,11 @@ export default {
844
840
return alert (' Nope, for demo purposes you cannot delete this room' )
845
841
}
846
842
847
- firestoreService .getMessages (roomId).then (messages => {
843
+ firestoreService .getMessages (roomId).then (({ messages }) => {
848
844
messages .forEach (message => {
849
845
firestoreService .deleteMessage (roomId, message .id )
850
- if (message .data (). files ) {
851
- message .data (). files .forEach (file => {
846
+ if (message .files ) {
847
+ message .files .forEach (file => {
852
848
storageService .deleteFile (this .currentUserId , message .id , file)
853
849
})
854
850
}
0 commit comments