diff --git a/FLO_Torrentz.html b/FLO_Torrentz.html
index 7477cd3..be6631b 100644
--- a/FLO_Torrentz.html
+++ b/FLO_Torrentz.html
@@ -475,11 +475,11 @@ var searchKey = "";
if(lasttx === undefined){
lasttx = 0;
}
- var response = ajax("GET",`api/addrs/${addr}/txs`);
+ var response = ajaxSync("GET",`api/addrs/${addr}/txs`);
var nRequired = JSON.parse(response).totalItems - lasttx;
console.log(nRequired);
while(true && nRequired){
- var response = ajax("GET",`api/addrs/${addr}/txs?from=0&to=${nRequired}`);
+ var response = ajaxSync("GET",`api/addrs/${addr}/txs?from=0&to=${nRequired}`);
response = JSON.parse(response);
if (nRequired + lasttx != response.totalItems ){
nRequired = response.totalItems - lasttx;
@@ -548,7 +548,7 @@ function getNewestDatafromAPI(){
return new Promise(
function (resolve,reject){
var addr = adminID;
- var response = ajax("GET",`api/addrs/${addr}/txs?from=0&to=100`);
+ var response = ajaxSync("GET",`api/addrs/${addr}/txs?from=0&to=100`);
response = JSON.parse(response);
var tmpData = [];
response.items.forEach(function(tx){
@@ -570,7 +570,7 @@ function getNewestDatafromAPI(){
}
);
}
- function ajax(method, uri){
+ function ajaxSync(method, uri){
var request = new XMLHttpRequest();
var url = `${server}/${uri}`
console.log(url)
@@ -589,35 +589,62 @@ function getNewestDatafromAPI(){
return result;
}
+ function ajaxPromised(method, uri){
+ return new Promise( (resolve, reject) => {
+ var request = new XMLHttpRequest();
+ var url = `${server}/${uri}`;
+ console.log(url)
+ request.open(method, url , true);
+ request.onload = function () {
+ if (request.readyState == 4 && request.status == 200)
+ resolve(this.response);
+ else
+ reject(this.response);
+ };
+ request.send();
+ });
+ }
+
+ function getTorrentMetafromAPI(txid,i,N){
+ return new Promise( (resolve, reject) => {
+ ajaxPromised("GET", `/api/tx/${txid}`).then( response => {
+ var floData = JSON.parse(JSON.parse(response).floData);
+ var percent = Math.round((i / N) * 100);
+ document.getElementById('progressValue').innerHTML = `${percent}%`;
+ if (percent < 50)
+ document.getElementById('progressBar').setAttribute("class", `progress-circle p${percent}`);
+ else
+ document.getElementById('progressBar').setAttribute("class", `progress-circle over50 p${percent}`);
+ console.log(i,N,percent,floData.next);
+ if(!floData.next)
+ resolve([floData.data]);
+ else{
+ getTorrentMetafromAPI(floData.next,i+1,N).then( chunks => {
+ resolve([floData.data].concat(chunks))
+ }).catch( error => {
+ reject(error);
+ });
+ }
+ }).catch( error => {
+ reject(error);
+ });
+ });
+ }
async function downloadTorrent(filename,txid,totalChunks){
document.getElementById('downloadBar').style.display = "block";
- var progressBar = document.getElementById('progressBar');
- progressBar.setAttribute("class","progress-circle p0");
- var progressValue = document.getElementById('progressValue');
- progressValue.innerHTML = `0%`;
+ document.getElementById('progressBar').setAttribute("class","progress-circle p0");
+ document.getElementById('progressValue').innerHTML = `0%`;
console.log(txid);
- chunks = [];
- var percent = 0;
- try {
- while (txid) {
- var response = ajax("GET", `/api/tx/${txid}`);
- var floData = JSON.parse(JSON.parse(response).floData)
- chunks.push(floData.data);
- txid = floData.next;
- percent = Math.round((chunks.length / totalChunks) * 100)
- progressValue.innerHTML = `${percent}%`;
- if (percent < 50)
- progressBar.setAttribute("class", `progress-circle p${percent}`);
- else
- progressBar.setAttribute("class", `progress-circle over50 p${percent}`);
- }
+ getTorrentMetafromAPI(txid,1,totalChunks).then( chunks => {
var filedata = chunks.join("");
console.log(filedata);
download(filename, filedata);
- } catch (e) {
- console.log(e);
- }
- document.getElementById('downloadBar').style.display = "none";
+ }).catch( error => {
+ alert(error);
+ console.log(error);
+ }).finally( _ => {
+ document.getElementById('downloadBar').style.display = "none";
+ });
}
function download(filename, data) {