Merge pull request #3786 from matrix-org/t3chguy/serialize_file_uploads

Serialize file uploads into room to match confirmation dialog order
pull/21833/head
Michael Telatynski 2019-12-27 16:58:42 +00:00 committed by GitHub
commit c79bd791d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 3 deletions

View File

@ -422,6 +422,9 @@ export default class ContentMessages {
const UploadConfirmDialog = sdk.getComponent("dialogs.UploadConfirmDialog"); const UploadConfirmDialog = sdk.getComponent("dialogs.UploadConfirmDialog");
let uploadAll = false; let uploadAll = false;
// Promise to complete before sending next file into room, used for synchronisation of file-sending
// to match the order the files were specified in
let promBefore = Promise.resolve();
for (let i = 0; i < okFiles.length; ++i) { for (let i = 0; i < okFiles.length; ++i) {
const file = okFiles[i]; const file = okFiles[i];
if (!uploadAll) { if (!uploadAll) {
@ -440,11 +443,11 @@ export default class ContentMessages {
}); });
if (!shouldContinue) break; if (!shouldContinue) break;
} }
this._sendContentToRoom(file, roomId, matrixClient); promBefore = this._sendContentToRoom(file, roomId, matrixClient, promBefore);
} }
} }
_sendContentToRoom(file, roomId, matrixClient) { _sendContentToRoom(file, roomId, matrixClient, promBefore) {
const content = { const content = {
body: file.name || 'Attachment', body: file.name || 'Attachment',
info: { info: {
@ -517,7 +520,10 @@ export default class ContentMessages {
content.file = result.file; content.file = result.file;
content.url = result.url; content.url = result.url;
}); });
}).then(function(url) { }).then((url) => {
// Await previous message being sent into the room
return promBefore;
}).then(function() {
return matrixClient.sendMessage(roomId, content); return matrixClient.sendMessage(roomId, content);
}, function(err) { }, function(err) {
error = err; error = err;