Skip to content

Commit 883e387

Browse files
committed
(demo) add upload file progress
1 parent 71aec8b commit 883e387

File tree

1 file changed

+34
-13
lines changed

1 file changed

+34
-13
lines changed

demo/src/ChatContainer.vue

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -562,24 +562,45 @@ export default {
562562
.child(messageId)
563563
.child(`${file.name}.${type}`)
564564
565-
await uploadFileRef.put(file.blob, { contentType: type })
566-
const url = await uploadFileRef.getDownloadURL()
565+
const uploadTask = uploadFileRef.put(file.blob, {
566+
contentType: type
567+
})
567568
568-
const messageDoc = await messagesRef(roomId)
569-
.doc(messageId)
570-
.get()
569+
uploadTask.on(
570+
'state_changed',
571+
snap => {
572+
const progress = Math.round(
573+
(snap.bytesTransferred / snap.totalBytes) * 100
574+
)
575+
this.updateFileProgress(messageId, progress)
576+
},
577+
_error => {},
578+
async () => {
579+
const url = await uploadTask.snapshot.ref.getDownloadURL()
571580
572-
const files = messageDoc.data().files
581+
const messageDoc = await messagesRef(roomId)
582+
.doc(messageId)
583+
.get()
573584
574-
files.forEach(f => {
575-
if (f.url === file.localUrl) {
576-
f.url = url
585+
const files = messageDoc.data().files
586+
587+
files.forEach(f => {
588+
if (f.url === file.localUrl) {
589+
f.url = url
590+
}
591+
})
592+
593+
await messagesRef(roomId)
594+
.doc(messageId)
595+
.update({ files })
577596
}
578-
})
597+
)
598+
},
579599
580-
await messagesRef(roomId)
581-
.doc(messageId)
582-
.update({ files })
600+
updateFileProgress(messageId, progress) {
601+
const message = this.messages.find(message => message._id === messageId)
602+
message.files[0].progress = progress
603+
this.messages = [...this.messages]
583604
},
584605
585606
formattedFiles(files) {

0 commit comments

Comments
 (0)