From 812e03b1356f43e740133be60dc28b6c526bd7de Mon Sep 17 00:00:00 2001 From: hatim boufnichel Date: Sat, 31 Jul 2021 19:30:04 +0200 Subject: [PATCH] wait ack --- .../gunDB/contact-api/jobs/lastSeenNode.js | 49 +++++++++++++------ 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/services/gunDB/contact-api/jobs/lastSeenNode.js b/services/gunDB/contact-api/jobs/lastSeenNode.js index c05c4738..3c38f4a4 100644 --- a/services/gunDB/contact-api/jobs/lastSeenNode.js +++ b/services/gunDB/contact-api/jobs/lastSeenNode.js @@ -29,24 +29,43 @@ const lastSeenNode = user => { logger.warn('onOrders() -> tried to sub without authing') throw new Error(ErrorCode.NOT_AUTH) } + let gotLatestUserAck = true + let gotLatestProfileAck = true setInterval(() => { - if (user.is) { - user.get(Key.LAST_SEEN_NODE).put(Date.now(), ack => { - if (ack.err && typeof ack.err !== 'number') { - logger.error(`Error inside lastSeenNode job: ${ack.err}`) - } - }) - - user - .get(Key.PROFILE) - .get(Key.LAST_SEEN_NODE) - .put(Date.now(), ack => { - if (ack.err && typeof ack.err !== 'number') { - logger.error(`Error inside lastSeenNode job: ${ack.err}`) - } - }) + if (!user.is) { + return } + if (!gotLatestUserAck) { + logger.error(`lastSeenNode user job: didnt get latest ack`) + return + } + gotLatestUserAck = false + user.get(Key.LAST_SEEN_NODE).put(Date.now(), ack => { + if (ack.err && typeof ack.err !== 'number') { + logger.error(`Error inside lastSeenNode user job: ${ack.err}`) + } + gotLatestUserAck = true + }) + }, LAST_SEEN_NODE_INTERVAL) + setInterval(() => { + if (!user.is) { + return + } + if (!gotLatestProfileAck) { + logger.error(`lastSeenNode profile job: didnt get latest ack`) + return + } + gotLatestProfileAck = false + user + .get(Key.PROFILE) + .get(Key.LAST_SEEN_NODE) + .put(Date.now(), ack => { + if (ack.err && typeof ack.err !== 'number') { + logger.error(`Error inside lastSeenNode profile job: ${ack.err}`) + } + gotLatestProfileAck = true + }) }, LAST_SEEN_NODE_INTERVAL) }