1
0
mirror of https://github.com/chylex/TweetDuck.git synced 2025-04-17 12:15:47 +02:00

Fix {ajax} token resolve order in template plugin

This commit is contained in:
chylex 2017-06-16 04:22:44 +02:00
parent 2e4cb12817
commit d980e09e0f

View File

@ -153,17 +153,22 @@ enabled(){
return [ contents, data ]; return [ contents, data ];
}; };
var doAjaxRequest = (url, evaluator) => { var doAjaxRequest = (index, url, evaluator) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (!url){
resolve([ index, "{ajax}" ]);
return;
}
$.get(url, function(data){ $.get(url, function(data){
if (evaluator){ if (evaluator){
resolve(eval(evaluator.replace(/\$/g, "'"+data.replace(/(["'\\\n\r\u2028\u2029])/g, "\\$1")+"'"))); resolve([ index, eval(evaluator.replace(/\$/g, "'"+data.replace(/(["'\\\n\r\u2028\u2029])/g, "\\$1")+"'"))]);
} }
else{ else{
resolve(data); resolve([ index, data ]);
} }
}, "text").fail(function(){ }, "text").fail(function(){
resolve(""); resolve([ index, "" ]);
}); });
}); });
}; };
@ -205,23 +210,8 @@ enabled(){
url = evaluator; url = evaluator;
evaluator = null; evaluator = null;
} }
if (!url){
break;
}
promises.push(doAjaxRequest(url, evaluator).then(result => { promises.push(doAjaxRequest(index2, url, evaluator));
const placeholderLen = 5; // "(...)".length
let diff = result.length-placeholderLen;
let realIndex = indexOffset+index2;
let val = ele.val();
ele.val(val.substring(0, realIndex)+result+val.substring(realIndex+placeholderLen));
indexOffset += diff;
}));
break; break;
} }
} }
@ -232,7 +222,20 @@ enabled(){
ele.prop("disabled", true); ele.prop("disabled", true);
Promise.all(promises).then(() => { Promise.all(promises).then(values => {
const placeholderLen = 5; // "(...)".length
let indexOffset = 0;
for(let value of values){
let diff = value[1].length-placeholderLen;
let realIndex = indexOffset+value[0];
let val = ele.val();
ele.val(val.substring(0, realIndex)+value[1]+val.substring(realIndex+placeholderLen));
indexOffset += diff;
}
ele.prop("disabled", false); ele.prop("disabled", false);
ele.focus(); ele.focus();