fix: ping peer response handling

causes treating all members online

fix async/await usage
This commit is contained in:
Syrone Wong 2023-06-01 08:34:42 +08:00 committed by dec0dOS
parent 8785b94392
commit db8f4979e6
2 changed files with 18 additions and 14 deletions

View file

@ -65,9 +65,9 @@ if (process.env.ZU_LAST_SEEN_FETCH !== "false") {
cron.schedule(schedule, () => {
console.debug("Running scheduled job");
const networks = db.get("networks").value();
networks.forEach((network) => {
console.debug("Processing " + network.id);
pingAll(network);
networks.forEach(async (network) => {
console.debug("Processing network " + network.id);
await pingAll(network);
});
});
}

View file

@ -1,22 +1,26 @@
const _ = require("lodash");
const api = require("./controller-api");
const db = require("./db");
async function pingAll(network) {
await Promise.all(
network.members.map(async (member) => {
console.debug("Processing " + member.id);
console.debug("Processing member " + member.id);
api
.get("peer/" + member.id)
.then(async function () {
// write lastOneline field in db
db.get("networks")
.filter({ id: network.id })
.map("members")
.first()
.filter({ id: member.id })
.first()
.set("lastOnline", new Date().getTime())
.write();
.then(function (controllerResp) {
if (!_.isEmpty(controllerResp.data)) {
// write lastOnline field in db
db.get("networks")
.filter({ id: network.id })
.map("members")
.first()
.filter({ id: member.id })
.first()
.set("lastOnline", new Date().getTime())
.write();
}
})
.catch(function (err) {
console.debug("Couldn't fetch", member.id);