mirror of https://github.com/vector-im/riot-web
Un-commit accidentally committed file upload stuff
parent
1df03aa82a
commit
1de5d68e95
|
@ -18,7 +18,6 @@ limitations under the License.
|
||||||
|
|
||||||
var q = require('q');
|
var q = require('q');
|
||||||
var extend = require('./extend');
|
var extend = require('./extend');
|
||||||
var dis = require('./dispatcher');
|
|
||||||
|
|
||||||
function infoForImageFile(imageFile) {
|
function infoForImageFile(imageFile) {
|
||||||
var deferred = q.defer();
|
var deferred = q.defer();
|
||||||
|
@ -49,94 +48,39 @@ function infoForImageFile(imageFile) {
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
class ContentMessages {
|
function sendContentToRoom(file, roomId, matrixClient) {
|
||||||
constructor() {
|
var content = {
|
||||||
this.inprogress = [];
|
body: file.name,
|
||||||
this.nextId = 0;
|
info: {
|
||||||
|
size: file.size,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// if we have a mime type for the file, add it to the message metadata
|
||||||
|
if (file.type) {
|
||||||
|
content.info.mimetype = file.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
sendContentToRoom(file, roomId, matrixClient) {
|
var def = q.defer();
|
||||||
var content = {
|
if (file.type.indexOf('image/') == 0) {
|
||||||
body: file.name,
|
content.msgtype = 'm.image';
|
||||||
info: {
|
infoForImageFile(file).then(function(imageInfo) {
|
||||||
size: file.size,
|
extend(content.info, imageInfo);
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// if we have a mime type for the file, add it to the message metadata
|
|
||||||
if (file.type) {
|
|
||||||
content.info.mimetype = file.type;
|
|
||||||
}
|
|
||||||
|
|
||||||
var def = q.defer();
|
|
||||||
if (file.type.indexOf('image/') == 0) {
|
|
||||||
content.msgtype = 'm.image';
|
|
||||||
infoForImageFile(file).then(function(imageInfo) {
|
|
||||||
extend(content.info, imageInfo);
|
|
||||||
def.resolve();
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
content.msgtype = 'm.file';
|
|
||||||
def.resolve();
|
def.resolve();
|
||||||
}
|
|
||||||
|
|
||||||
var upload = {
|
|
||||||
fileName: file.name,
|
|
||||||
roomId: roomId,
|
|
||||||
total: 0,
|
|
||||||
loaded: 0
|
|
||||||
};
|
|
||||||
this.inprogress.push(upload);
|
|
||||||
dis.dispatch({action: 'upload_started'});
|
|
||||||
|
|
||||||
var self = this;
|
|
||||||
return def.promise.then(function() {
|
|
||||||
upload.promise = matrixClient.uploadContent(file);
|
|
||||||
return upload.promise;
|
|
||||||
}).then(function(url) {
|
|
||||||
content.url = url;
|
|
||||||
return matrixClient.sendMessage(roomId, content);
|
|
||||||
}).progress(function(ev) {
|
|
||||||
if (ev) {
|
|
||||||
upload.total = ev.total;
|
|
||||||
upload.loaded = ev.loaded;
|
|
||||||
dis.dispatch({action: 'upload_progress', upload: upload});
|
|
||||||
}
|
|
||||||
}).then(function() {
|
|
||||||
dis.dispatch({action: 'upload_finished', upload: upload});
|
|
||||||
}, function(err) {
|
|
||||||
dis.dispatch({action: 'upload_failed', upload: upload});
|
|
||||||
}).finally(function() {
|
|
||||||
var inprogressKeys = Object.keys(self.inprogress);
|
|
||||||
for (var i = 0; i < self.inprogress.length; ++i) {
|
|
||||||
var k = inprogressKeys[i];
|
|
||||||
if (self.inprogress[k].promise === upload_promise) {
|
|
||||||
delete self.inprogress[k];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
content.msgtype = 'm.file';
|
||||||
|
def.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
getCurrentUploads() {
|
return def.promise.then(function() {
|
||||||
return this.inprogress;
|
return matrixClient.uploadContent(file);
|
||||||
}
|
}).then(function(url) {
|
||||||
|
content.url = url;
|
||||||
cancelUpload(promise) {
|
return matrixClient.sendMessage(roomId, content);
|
||||||
var inprogressKeys = Object.keys(self.inprogress);
|
});
|
||||||
for (var i = 0; i < self.inprogress.length; ++i) {
|
|
||||||
var k = inprogressKeys[i];
|
|
||||||
if (self.inprogress[k].promise === promise) {
|
|
||||||
self.inprogress[k].canceled = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MatrixClientPeg.get().cancelUpload(promise);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (global.mx_ContentMessage === undefined) {
|
module.exports = {
|
||||||
global.mx_ContentMessage = new ContentMessages();
|
sendContentToRoom: sendContentToRoom
|
||||||
}
|
};
|
||||||
|
|
||||||
module.exports = global.mx_ContentMessage;
|
|
||||||
|
|
Loading…
Reference in New Issue