mirror of
https://github.com/RetroShare/RSNewWebUI.git
synced 2026-09-14 11:05:47 +05:00
use Promises and awaits for fetching data
This commit is contained in:
parent
bf82a165ae
commit
93fa7c430e
@ -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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user