Browse Source

Sequential file send

TitanNano-voice_recorder
Igor Zhukov 11 years ago
parent
commit
9048fad53f
  1. 126
      app/js/services.js

126
app/js/services.js

@ -681,6 +681,7 @@ angular.module('myApp.services', [])
var pendingByRandomID = {}; var pendingByRandomID = {};
var pendingByMessageID = {}; var pendingByMessageID = {};
var pendingAfterMsgs = {}; var pendingAfterMsgs = {};
var sendFilePromise = $q.when();
var tempID = -1; var tempID = -1;
@ -1214,70 +1215,81 @@ angular.module('myApp.services', [])
} }
message.send = function () { message.send = function () {
var uploaded = false, var sendFileDeferred = $q.defer();
uploadPromise = MtpApiFileManager.uploadFile(file);
sendFilePromise.then(function () {
uploadPromise.then(function (inputFile) { var uploaded = false,
uploaded = true; uploadPromise = MtpApiFileManager.uploadFile(file);
var inputMedia;
switch (attachType) { uploadPromise.then(function (inputFile) {
case 'photo': uploaded = true;
inputMedia = {_: 'inputMediaUploadedPhoto', file: inputFile}; var inputMedia;
break; switch (attachType) {
case 'photo':
case 'video': inputMedia = {_: 'inputMediaUploadedPhoto', file: inputFile};
inputMedia = {_: 'inputMediaUploadedVideo', file: inputFile, duration: 0, w: 0, h: 0}; break;
break;
case 'video':
case 'audio': inputMedia = {_: 'inputMediaUploadedVideo', file: inputFile, duration: 0, w: 0, h: 0};
inputMedia = {_: 'inputMediaUploadedAudio', file: inputFile, duration: 0}; break;
break;
case 'audio':
case 'document': inputMedia = {_: 'inputMediaUploadedAudio', file: inputFile, duration: 0};
default: break;
inputMedia = {_: 'inputMediaUploadedDocument', file: inputFile, file_name: file.name, mime_type: file.type};
} case 'document':
MtpApiManager.invokeApi('messages.sendMedia', { default:
peer: inputPeer, inputMedia = {_: 'inputMediaUploadedDocument', file: inputFile, file_name: file.name, mime_type: file.type};
media: inputMedia,
random_id: randomID
}).then(function (result) {
if (ApiUpdatesManager.saveSeq(result.seq)) {
ApiUpdatesManager.saveUpdate({
_: 'updateMessageID',
random_id: randomIDS,
id: result.message.id
});
message.date = result.message.date;
message.id = result.message.id;
message.media = result.message.media;
ApiUpdatesManager.saveUpdate({
_: 'updateNewMessage',
message: message,
pts: result.pts
});
} }
MtpApiManager.invokeApi('messages.sendMedia', {
peer: inputPeer,
media: inputMedia,
random_id: randomID
}).then(function (result) {
if (ApiUpdatesManager.saveSeq(result.seq)) {
ApiUpdatesManager.saveUpdate({
_: 'updateMessageID',
random_id: randomIDS,
id: result.message.id
});
message.date = result.message.date;
message.id = result.message.id;
message.media = result.message.media;
ApiUpdatesManager.saveUpdate({
_: 'updateNewMessage',
message: message,
pts: result.pts
});
}
}, function (error) {
toggleError(true);
});
}, function (error) { }, function (error) {
toggleError(true); toggleError(true);
}, function (progress) {
// console.log('upload progress', progress);
media.progress.done = progress.done;
media.progress.percent = Math.max(1, Math.floor(100 * progress.done / progress.total));
$rootScope.$broadcast('history_update', {peerID: peerID});
}); });
}, function (error) {
toggleError(true);
}, function (progress) {
// console.log('upload progress', progress);
media.progress.done = progress.done;
media.progress.percent = Math.max(1, Math.floor(100 * progress.done / progress.total));
$rootScope.$broadcast('history_update', {peerID: peerID});
});
media.progress.cancel = function () { media.progress.cancel = function () {
if (!uploaded) { if (!uploaded) {
uploadPromise.cancel(); sendFileDeferred.resolve();
cancelPendingMessage(randomIDS); uploadPromise.cancel();
cancelPendingMessage(randomIDS);
}
} }
}
uploadPromise['finally'](function () {
sendFileDeferred.resolve();
});
});
sendFilePromise = sendFileDeferred.promise;
}; };
saveMessages([message]); saveMessages([message]);

Loading…
Cancel
Save