From 4f3a879ace2378f969aff7708412b5369627bb9d Mon Sep 17 00:00:00 2001 From: hopkuba Date: Tue, 2 Nov 2021 18:34:56 +0100 Subject: [PATCH] Fixed callback hell in infogetter.js --- customplaceholders.js | 2 + index.js | 8 +- infogetter.js | 293 +++++++++++++++++++++--------------------- 3 files changed, 149 insertions(+), 154 deletions(-) diff --git a/customplaceholders.js b/customplaceholders.js index 51b2658..97efd62 100644 --- a/customplaceholders.js +++ b/customplaceholders.js @@ -22,6 +22,8 @@ module.exports = function(callback, stockplaceholders) { plhd2:val } */ + var customplaceholders = { + } callback({...stockplaceholders, ...customplaceholders}) } \ No newline at end of file diff --git a/index.js b/index.js index 16f4b89..9c6ada0 100644 --- a/index.js +++ b/index.js @@ -130,9 +130,7 @@ app.whenReady().then(() => { largeImageText: info.aircraft, smallImageKey: "paint", smallImageText: info.paintjobtext, - buttons : [ - (settings.properties.showRepoButton) ? {label : "🐱‍💻Github Repo" , url : "https://github.com/justkowal/FGCompanion"} : undefined , - ], + buttons : (settings.properties.showRepoButton) ? [{label : "🐱‍💻Github Repo" , url : "https://github.com/justkowal/FGCompanion"}] : undefined , instance: true, }) }else{ @@ -145,9 +143,7 @@ app.whenReady().then(() => { largeImageText: info.aircraft, smallImageKey: "paint", smallImageText: info.paintjobtext, - buttons : [ - (settings.properties.showRepoButton) ? {label : "🐱‍💻Github Repo" , url : "https://github.com/justkowal/FGCompanion"} : undefined , - ], + buttons : (settings.properties.showRepoButton) ? [{label : "🐱‍💻Github Repo" , url : "https://github.com/justkowal/FGCompanion"}] : undefined , instance: true, }) } diff --git a/infogetter.js b/infogetter.js index 73dc43e..9db35c6 100644 --- a/infogetter.js +++ b/infogetter.js @@ -21,15 +21,19 @@ function country2emoji(country_code) { } module.exports = function(address,port,cb,errcb){ - fetch("http://localhost:8080/json//sim/description") - .then(res => { - if (res.status >= 400) { - throw new Error("Bad response from server"); - } - return res.json(); - }) - .then(aircraftres => { - aircraft = aircraftres.value + const promises = [ + new Promise(function(resolve,reject){ + fetch("http://localhost:8080/json//sim/description") + .then(res => { + if (res.status >= 400) { + throw new Error("Bad response from server"); + } + return res.json(); + }) + .then(resolve) + .catch(reject) + }), + new Promise(function(resolve,reject){ fetch("http://localhost:8080/json//position") .then(res => { if (res.status >= 400) { @@ -46,146 +50,139 @@ module.exports = function(address,port,cb,errcb){ return res.json(); }) .then(geolocres => { - fetch(`http://localhost:8080/json//sim`) - .then(res => { - if (res.status >= 400) { - throw new Error("Bad response from server"); - } - return res.json(); + resolve({ + latitude: posres.children[1].value, + longitude: posres.children[0].value, + altitude: posres.children[2].value, + geolocres: geolocres }) - .then(iconres => { - fetch(`http://localhost:8080/json//sim/model/livery/name`) - .then(res => { - if (res.status >= 400) { - throw new Error("Bad response from server"); - } - return res.json(); - }) - .then(liveryres => { - fetch(`http://localhost:8080/json//instrumentation/airspeed-indicator/true-speed-kt`) - .then(res => { - if (res.status >= 400) { - throw new Error("Bad response from server"); - } - return res.json(); - }) - .then(airspeedres => { - fetch(`http://localhost:8080/json//environment/metar/data`) - .then(res => { - if (res.status >= 400) { - throw new Error("Bad response from server"); - } - return res.json(); - }) - .then(metarres => { - fetch(`http://localhost:8080/json//autopilot/route-manager/ete`) - .then(res => { - if (res.status >= 400) { - throw new Error("Bad response from server"); - } - return res.json(); - }) - .then(etares => { - fetch(`http://localhost:8080/json//autopilot/route-manager/departure/airport`) - .then(res => { - if (res.status >= 400) { - throw new Error("Bad response from server"); - } - return res.json(); - }) - .then(departureres => { - fetch(`http://localhost:8080/json//autopilot/route-manager/destination/airport`) - .then(res => { - if (res.status >= 400) { - throw new Error("Bad response from server"); - } - return res.json(); - }) - .then(destinationres => { - icao = metarres.value.split(" ")[2] - icon = iconres.children[13].value - paintjob = "unknown" - if(liveryres.value == "" || liveryres.value == undefined) { - paintjobtext = "No data available" - }else{ - paintjobtext = liveryres.value - } - if(geolocres.city == "") { - if(geolocres.locality == "") { - airspace = geolocres.principalSubdivision - }else{ - airspace = geolocres.locality - } - }else{ - airspace = geolocres.city - } - if(geolocres.countryCode == ""){ - airspace = geolocres.locality - emoji = "🌊" - }else{ - airspace = airspace - emoji = country2emoji(geolocres.countryCode) - } - if(etares.value > "360000" || etares.value == 0){ - ete = "Unknown" - }else{ - ete = etares.value - } - customprops(cb,{ - desticao:destinationres.value, - depicao:departureres.value, - ete:ete, - icao:icao, - alt:posres.children[2].value.toFixed(0), - airspeed:airspeedres.value.toFixed(0), - aircraft:aircraft, - icon:icon.toLowerCase(), - paintjobicon:paintjob, - paintjobtext:paintjobtext, - airspace:airspace, - emoji:emoji, - latitude:posres.children[1].value, - longitude:posres.children[0].value - } - ) - }) - .catch(err => { - errcb(err) - }) - }) - .catch(err => { - errcb(err) - }) - }) - .catch(err => { - errcb(err) - }) - }) - .catch(err => { - errcb(err) - }) - }) - .catch(err => { - errcb(err) - }) - }) - .catch(err => { - errcb(err) - }) - }) - .catch(err => { - errcb(err) - }) - }) - .catch(err => { - errcb(err) - }) + }).catch(reject) + }).catch(reject) + }), + new Promise(function(resolve,reject){ + fetch(`http://localhost:8080/json//sim`) + .then(res => { + if (res.status >= 400) { + throw new Error("Bad response from server"); + } + return res.json(); }) - .catch(err => { - errcb(err) + .then(resolve) + .catch(reject) + }), + new Promise(function(resolve,reject){ + fetch(`http://localhost:8080/json//sim/model/livery/name`) + .then(res => { + if (res.status >= 400) { + throw new Error("Bad response from server"); + } + return res.json(); }) - }) - .catch(err => { - errcb(err) - }) + .then(resolve) + .catch(reject) + }), + new Promise(function(resolve,reject){ + fetch(`http://localhost:8080/json//instrumentation/airspeed-indicator/true-speed-kt`) + .then(res => { + if (res.status >= 400) { + throw new Error("Bad response from server"); + } + return res.json(); + }) + .then(resolve) + .catch(reject) + }), + new Promise(function(resolve,reject){ + fetch(`http://localhost:8080/json//environment/metar/data`) + .then(res => { + if (res.status >= 400) { + throw new Error("Bad response from server"); + } + return res.json(); + }) + .then(resolve) + .catch(reject) + }), + new Promise(function(resolve,reject){ + fetch(`http://localhost:8080/json//autopilot/route-manager/ete`) + .then(res => { + if (res.status >= 400) { + throw new Error("Bad response from server"); + } + return res.json(); + }) + .then(resolve) + .catch(reject) + }), + new Promise(function(resolve,reject){ + fetch(`http://localhost:8080/json//autopilot/route-manager/departure/airport`) + .then(res => { + if (res.status >= 400) { + throw new Error("Bad response from server"); + } + return res.json(); + }) + .then(resolve) + .catch(reject) + }), + new Promise(function(resolve,reject){ + fetch(`http://localhost:8080/json//autopilot/route-manager/destination/airport`) + .then(res => { + if (res.status >= 400) { + throw new Error("Bad response from server"); + } + return res.json(); + }) + .then(resolve) + .catch(reject) + }), + ]; + Promise.all(promises).then(vals => { + icao = vals[5].value.split(" ")[2] + icon = vals[2].children[13].value + paintjob = "unknown" + if(vals[3].value == "" || vals[3].value == undefined) { + paintjobtext = "No data available" + }else{ + paintjobtext = vals[3].value + } + if(vals[1].geolocres.city == "") { + if(vals[1].geolocres.locality == "") { + airspace = vals[1].geolocres.principalSubdivision + }else{ + airspace = vals[1].geolocres.locality + } + }else{ + airspace = vals[1].geolocres.city + } + if(vals[1].geolocres.countryCode == ""){ + airspace = vals[1].geolocres.locality + emoji = "🌊" + }else{ + airspace = airspace + emoji = country2emoji(vals[1].geolocres.countryCode) + } + if(vals[6].value > "360000" || vals[6].value == 0){ + ete = "Unknown" + }else{ + ete = vals[6].value + } + customprops(cb,{ + desticao:vals[8].value, + depicao:vals[7].value, + ete:ete, + icao:icao, + alt:vals[1].altitude.toFixed(0), + airspeed:vals[4].value.toFixed(0), + aircraft:vals[0].value, + icon:icon.toLowerCase(), + paintjobicon:paintjob, + paintjobtext:paintjobtext, + airspace:airspace, + emoji:emoji, + latitude:vals[1].latitude, + longitude:vals[1].longitude + } + ) + }).catch(errcb) } \ No newline at end of file