Adjust functions using Uploader.setData to handle promises
This commit is contained in:
parent
94a352e7f5
commit
746debf586
1 changed files with 39 additions and 27 deletions
|
@ -3764,14 +3764,15 @@ jQuery.PrivateBin = (function($, sjcl, RawDeflate) {
|
|||
* encrypts and sets the data
|
||||
*
|
||||
* @name Uploader.setData
|
||||
* @async
|
||||
* @function
|
||||
* @param {string} index
|
||||
* @param {mixed} element
|
||||
*/
|
||||
me.setData = function(index, element)
|
||||
me.setData = async function(index, element)
|
||||
{
|
||||
checkCryptParameters();
|
||||
data[index] = CryptTool.cipher(symmetricKey, password, element);
|
||||
data[index] = await CryptTool.cipher(symmetricKey, password, element);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -3922,34 +3923,40 @@ jQuery.PrivateBin = (function($, sjcl, RawDeflate) {
|
|||
function encryptAttachments(callback) {
|
||||
var file = AttachmentViewer.getAttachmentData();
|
||||
|
||||
let encryptAttachmentPromise, encryptAttachmentNamePromise;
|
||||
if (typeof file !== 'undefined' && file !== null) {
|
||||
var fileName = AttachmentViewer.getFile().name;
|
||||
|
||||
Uploader.setData('attachment', file);
|
||||
Uploader.setData('attachmentname', fileName);
|
||||
|
||||
// run callback
|
||||
return callback();
|
||||
// run concurrently to encrypt everything
|
||||
encryptAttachmentPromise = Uploader.setData('attachment', file);
|
||||
encryptAttachmentNamePromise = Uploader.setData('attachmentname', fileName);
|
||||
} else if (AttachmentViewer.hasAttachment()) {
|
||||
// fall back to cloned part
|
||||
var attachment = AttachmentViewer.getAttachment();
|
||||
|
||||
Uploader.setData('attachment', attachment[0]);
|
||||
Uploader.setData('attachmentname', attachment[1]);
|
||||
return callback();
|
||||
encryptAttachmentPromise = Uploader.setData('attachment', attachment[0]);
|
||||
encryptAttachmentNamePromise = Uploader.setData('attachmentname', attachment[1]);
|
||||
} else {
|
||||
// if there are no attachments, this is of course still successful
|
||||
return callback();
|
||||
}
|
||||
|
||||
// TODO: change this callback to also use Promises instead,
|
||||
// this here just waits
|
||||
Promise.all([encryptAttachmentPromise, encryptAttachmentNamePromise]).then(() => {
|
||||
// run callback
|
||||
return callback();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* send a reply in a discussion
|
||||
*
|
||||
* @async
|
||||
* @name PasteEncrypter.sendComment
|
||||
* @function
|
||||
*/
|
||||
me.sendComment = function()
|
||||
me.sendComment = async function()
|
||||
{
|
||||
Alert.hideMessages();
|
||||
Alert.setCustomHandler(DiscussionViewer.handleNotification);
|
||||
|
@ -4004,25 +4011,30 @@ jQuery.PrivateBin = (function($, sjcl, RawDeflate) {
|
|||
|
||||
// encrypt data
|
||||
try {
|
||||
Uploader.setData('data', plainText);
|
||||
// start promisesat the same time and wait thereafter
|
||||
let settingData = [];
|
||||
settingData.push(Uploader.setData('data', plainText));
|
||||
|
||||
if (nickname.length > 0) {
|
||||
settingData(Uploader.setData('nickname', nickname));
|
||||
}
|
||||
|
||||
await Promise.all(settingData);
|
||||
} catch (e) {
|
||||
Alert.showError(e);
|
||||
}
|
||||
|
||||
if (nickname.length > 0) {
|
||||
Uploader.setData('nickname', nickname);
|
||||
}
|
||||
|
||||
Uploader.run();
|
||||
};
|
||||
|
||||
/**
|
||||
* sends a new paste to server
|
||||
*
|
||||
* @async
|
||||
* @name PasteEncrypter.sendPaste
|
||||
* @function
|
||||
*/
|
||||
me.sendPaste = function()
|
||||
me.sendPaste = async function()
|
||||
{
|
||||
// hide previous (error) messages
|
||||
Controller.hideStatusMessages();
|
||||
|
@ -4075,20 +4087,20 @@ jQuery.PrivateBin = (function($, sjcl, RawDeflate) {
|
|||
PasteViewer.setText(plainText);
|
||||
PasteViewer.setFormat(format);
|
||||
|
||||
// encrypt cipher data
|
||||
try {
|
||||
Uploader.setData('data', plainText);
|
||||
} catch (e) {
|
||||
Alert.showError(e);
|
||||
}
|
||||
|
||||
// encrypt attachments
|
||||
encryptAttachments(
|
||||
const encryptAttachmentsPromise = encryptAttachments(
|
||||
function () {
|
||||
// send data
|
||||
Uploader.run();
|
||||
// TODO: remove, is not needed anymore as we use Promises
|
||||
}
|
||||
);
|
||||
|
||||
// encrypt plain text
|
||||
const encryptDataPromise = Uploader.setData('data', plainText);
|
||||
|
||||
await Promise.all([encryptAttachmentsPromise, encryptDataPromise]).catch(Alert.showError);
|
||||
|
||||
// send data
|
||||
Uploader.run();
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue