@@ -315,9 +315,9 @@ export default {
315
315
if (! message .timestamp ) return
316
316
317
317
let content = message .content
318
- if (message .file ) {
319
- content = ` ${ message .file . name } . ${ message . file . extension ||
320
- message . file .type } `
318
+ if (message .files ? . length ) {
319
+ const file = message .files [ 0 ]
320
+ content = ` ${ file . name } . ${ file . extension || file .type } `
321
321
}
322
322
323
323
return {
@@ -458,25 +458,15 @@ export default {
458
458
return formattedMessage
459
459
},
460
460
461
- async sendMessage ({ content, roomId, file , replyMessage }) {
461
+ async sendMessage ({ content, roomId, files , replyMessage }) {
462
462
const message = {
463
463
sender_id: this .currentUserId ,
464
464
content,
465
465
timestamp: new Date ()
466
466
}
467
467
468
- if (file) {
469
- message .file = {
470
- name: file .name ,
471
- size: file .size ,
472
- type: file .type ,
473
- extension: file .extension || file .type ,
474
- url: file .localUrl
475
- }
476
- if (file .audio ) {
477
- message .file .audio = true
478
- message .file .duration = file .duration
479
- }
468
+ if (files) {
469
+ message .files = this .formattedFiles (files)
480
470
}
481
471
482
472
if (replyMessage) {
@@ -486,20 +476,118 @@ export default {
486
476
sender_id: replyMessage .senderId
487
477
}
488
478
489
- if (replyMessage .file ) {
490
- message .replyMessage .file = replyMessage .file
479
+ if (replyMessage .files ) {
480
+ message .replyMessage .files = replyMessage .files
491
481
}
492
482
}
493
483
494
484
const { id } = await messagesRef (roomId).add (message)
495
485
496
- if (file) this .uploadFile ({ file, messageId: id, roomId })
486
+ if (files) {
487
+ files .forEach (file => {
488
+ this .uploadFile ({ file, messageId: id, roomId })
489
+ })
490
+ }
497
491
498
492
roomsRef .doc (roomId).update ({ lastUpdated: new Date () })
499
493
},
500
494
501
- openFile ({ message }) {
502
- window .open (message .file .url , ' _blank' )
495
+ async editMessage ({ messageId, newContent, roomId, files }) {
496
+ const newMessage = { edited: new Date () }
497
+ newMessage .content = newContent
498
+
499
+ if (files) {
500
+ newMessage .files = this .formattedFiles (files)
501
+ } else {
502
+ newMessage .files = deleteDbField
503
+ }
504
+
505
+ await messagesRef (roomId)
506
+ .doc (messageId)
507
+ .update (newMessage)
508
+
509
+ if (files) {
510
+ files .forEach (file => {
511
+ if (file? .blob ) this .uploadFile ({ file, messageId, roomId })
512
+ })
513
+ }
514
+ },
515
+
516
+ async deleteMessage ({ message, roomId }) {
517
+ await messagesRef (roomId)
518
+ .doc (message ._id )
519
+ .update ({ deleted: new Date () })
520
+
521
+ const { files } = message
522
+
523
+ if (files) {
524
+ files .forEach (file => {
525
+ const deleteFileRef = filesRef
526
+ .child (this .currentUserId )
527
+ .child (message ._id )
528
+ .child (` ${ file .name } .${ file .extension || file .type } ` )
529
+
530
+ deleteFileRef .delete ()
531
+ })
532
+ }
533
+ },
534
+
535
+ async uploadFile ({ file, messageId, roomId }) {
536
+ let type = file .extension || file .type
537
+ if (type === ' svg' || type === ' pdf' ) {
538
+ type = file .type
539
+ }
540
+
541
+ const uploadFileRef = filesRef
542
+ .child (this .currentUserId )
543
+ .child (messageId)
544
+ .child (` ${ file .name } .${ type} ` )
545
+
546
+ await uploadFileRef .put (file .blob , { contentType: type })
547
+ const url = await uploadFileRef .getDownloadURL ()
548
+
549
+ const messageDoc = await messagesRef (roomId)
550
+ .doc (messageId)
551
+ .get ()
552
+
553
+ const files = messageDoc .data ().files
554
+
555
+ files .forEach (f => {
556
+ if (f .url === file .localUrl ) {
557
+ f .url = url
558
+ }
559
+ })
560
+
561
+ await messagesRef (roomId)
562
+ .doc (messageId)
563
+ .update ({ files })
564
+ },
565
+
566
+ formattedFiles (files ) {
567
+ const formattedFiles = []
568
+
569
+ files .forEach (file => {
570
+ const messageFile = {
571
+ name: file .name ,
572
+ size: file .size ,
573
+ type: file .type ,
574
+ extension: file .extension || file .type ,
575
+ url: file .localUrl
576
+ }
577
+
578
+ if (file .audio ) {
579
+ messageFile .audio = true
580
+ messageFile .duration = file .duration
581
+ }
582
+
583
+ formattedFiles .push (messageFile)
584
+ })
585
+
586
+ return formattedFiles
587
+ },
588
+
589
+ openFile ({ file }) {
590
+ window .open (file .file .url , ' _blank' )
503
591
},
504
592
505
593
async openUserTag ({ user }) {
@@ -554,71 +642,6 @@ export default {
554
642
})
555
643
},
556
644
557
- async editMessage ({ messageId, newContent, roomId, file }) {
558
- const newMessage = { edited: new Date () }
559
- newMessage .content = newContent
560
-
561
- if (file) {
562
- newMessage .file = {
563
- name: file .name ,
564
- size: file .size ,
565
- type: file .type ,
566
- extension: file .extension || file .type ,
567
- url: file .url || file .localUrl
568
- }
569
- if (file .audio ) {
570
- newMessage .file .audio = true
571
- newMessage .file .duration = file .duration
572
- }
573
- } else {
574
- newMessage .file = deleteDbField
575
- }
576
-
577
- await messagesRef (roomId)
578
- .doc (messageId)
579
- .update (newMessage)
580
-
581
- if (file? .blob ) this .uploadFile ({ file, messageId, roomId })
582
- },
583
-
584
- async deleteMessage ({ message, roomId }) {
585
- await messagesRef (roomId)
586
- .doc (message ._id )
587
- .update ({ deleted: new Date () })
588
-
589
- const { file } = message
590
-
591
- if (file) {
592
- const deleteFileRef = filesRef
593
- .child (this .currentUserId )
594
- .child (message ._id )
595
- .child (` ${ file .name } .${ file .extension || file .type } ` )
596
-
597
- await deleteFileRef .delete ()
598
- }
599
- },
600
-
601
- async uploadFile ({ file, messageId, roomId }) {
602
- let type = file .extension || file .type
603
- if (type === ' svg' || type === ' pdf' ) {
604
- type = file .type
605
- }
606
-
607
- const uploadFileRef = filesRef
608
- .child (this .currentUserId )
609
- .child (messageId)
610
- .child (` ${ file .name } .${ type} ` )
611
-
612
- await uploadFileRef .put (file .blob , { contentType: type })
613
- const url = await uploadFileRef .getDownloadURL ()
614
-
615
- await messagesRef (roomId)
616
- .doc (messageId)
617
- .update ({
618
- ' file.url' : url
619
- })
620
- },
621
-
622
645
menuActionHandler ({ action, roomId }) {
623
646
switch (action .name ) {
624
647
case ' inviteUser' :
0 commit comments