From 93fa7c430e8a9f18d28a2a4cb449c2d732ccc0e6 Mon Sep 17 00:00:00 2001 From: Mohammed Saud Date: Tue, 8 Oct 2019 20:19:55 +0530 Subject: [PATCH] use Promises and awaits for fetching data --- webui-src/app/network/network_data.js | 131 +++++++++++++------------- 1 file changed, 67 insertions(+), 64 deletions(-) diff --git a/webui-src/app/network/network_data.js b/webui-src/app/network/network_data.js index a2e67de..0f5cff1 100644 --- a/webui-src/app/network/network_data.js +++ b/webui-src/app/network/network_data.js @@ -1,67 +1,70 @@ -let rs = require('rswebui'); +const rs = require('rswebui'); -module.exports = { - sslIds: [], - sslDetails: [], +const Data = { gpgDetails: {}, - - refreshIds() { - return rs.rsJsonApiRequest( - '/rsPeers/getFriendList', - {}, - data => (this.sslIds = data.sslIds), - ); - }, - - loadSslDetails() { - this.sslDetails = []; - - return Promise.all( - this.sslIds.map(sslId => - rs.rsJsonApiRequest('/rsPeers/getPeerDetails', {sslId}, data => - this.sslDetails.push(data.det), - ), - ), - ); - }, - - refreshGpgDetails() { - let details = {}; - - this.refreshIds() - .then(() => this.loadSslDetails()) - .then(() => { - this.sslDetails.map(data => { - let isOnline = false; - rs.rsJsonApiRequest( - '/rsPeers/isOnline', - {sslId: data.id}, - stat => (isOnline = stat.retval), - ).then(() => { - loc = { - name: data.location, - id: data.id, - lastSeen: data.lastConnect, - isOnline, - gpg_id: data.gpg_id, - }; - - if (details[data.gpg_id] === undefined) { - details[data.gpg_id] = { - name: data.name, - isSearched: true, - isOnline, - locations: [loc], - }; - } else { - details[data.gpg_id].locations.push(loc); - } - details[data.gpg_id].isOnline = - details[data.gpg_id].isOnline || isOnline; - - this.gpgDetails = details; - }); - }); - }); - }, + refreshGpgDetails, }; + +async function refreshIds() { + let sslIds = []; + await rs.rsJsonApiRequest( + '/rsPeers/getFriendList', + {}, + data => (sslIds = data.sslIds), + ); + return sslIds; +} + +async function loadSslDetails() { + let sslDetails = []; + let sslIds = await refreshIds(); + await Promise.all( + sslIds.map(sslId => + rs.rsJsonApiRequest('/rsPeers/getPeerDetails', {sslId}, data => + sslDetails.push(data.det), + ), + ), + ); + return sslDetails; +} + +async function refreshGpgDetails() { + let details = {}; + let sslDetails = await loadSslDetails(); + await Promise.all( + sslDetails.map(data => { + let isOnline = false; + return rs + .rsJsonApiRequest( + '/rsPeers/isOnline', + {sslId: data.id}, + stat => (isOnline = stat.retval), + ) + .then(() => { + loc = { + name: data.location, + id: data.id, + lastSeen: data.lastConnect, + isOnline, + gpg_id: data.gpg_id, + }; + + if (details[data.gpg_id] === undefined) { + details[data.gpg_id] = { + name: data.name, + isSearched: true, + isOnline, + locations: [loc], + }; + } else { + details[data.gpg_id].locations.push(loc); + } + details[data.gpg_id].isOnline = + details[data.gpg_id].isOnline || isOnline; + }); + }), + ); + Data.gpgDetails = details; +} + +module.exports = Data;