From 4c19336fcfc9b9ccedfa876cc16bfa9bbeb2aa71 Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Thu, 6 Feb 2020 13:02:24 -0400 Subject: [PATCH] improved generateHandshakeAddress() --- services/gunDB/Mediator/index.js | 4 ++-- services/gunDB/contact-api/actions.js | 28 +++++++++++++++++++-------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/services/gunDB/Mediator/index.js b/services/gunDB/Mediator/index.js index 183a921d..1c17c0ef 100644 --- a/services/gunDB/Mediator/index.js +++ b/services/gunDB/Mediator/index.js @@ -502,7 +502,7 @@ class Mediator { await throwOnInvalidToken(token) - await API.Actions.generateHandshakeAddress(user) + await API.Actions.generateHandshakeAddress() this.socket.emit(Action.GENERATE_NEW_HANDSHAKE_NODE, { ok: true, @@ -1105,7 +1105,7 @@ const register = async (alias, pass) => { return authenticate(alias, pass).then(async pub => { await API.Actions.setDisplayName('anon' + pub.slice(0, 8), user) - await API.Actions.generateHandshakeAddress(user) + await API.Actions.generateHandshakeAddress() await API.Actions.generateOrderAddress(user) return pub }) diff --git a/services/gunDB/contact-api/actions.js b/services/gunDB/contact-api/actions.js index d74f33fa..6e81fd47 100644 --- a/services/gunDB/contact-api/actions.js +++ b/services/gunDB/contact-api/actions.js @@ -364,17 +364,15 @@ const blacklist = (publicKey, user) => }) /** - * @param {UserGUNNode} user * @returns {Promise} */ -const generateHandshakeAddress = user => - new Promise((res, rej) => { - if (!user.is) { - throw new Error(ErrorCode.NOT_AUTH) - } +const generateHandshakeAddress = async () => { + const gun = require('../Mediator').getGun() + const user = require('../Mediator').getUser() - const address = uuidv1() + const address = uuidv1() + await new Promise((res, rej) => { user.get(Key.CURRENT_HANDSHAKE_ADDRESS).put(address, ack => { if (ack.err) { rej(new Error(ack.err)) @@ -384,6 +382,20 @@ const generateHandshakeAddress = user => }) }) + await new Promise((res, rej) => { + gun + .get(Key.HANDSHAKE_NODES) + .get(address) + .put({ unused: 0 }, ack => { + if (ack.err) { + rej(new Error(ack.err)) + } else { + res() + } + }) + }) +} + /** * @param {string} recipientPublicKey * @param {GUNNode} gun @@ -1098,7 +1110,7 @@ const disconnect = async pub => { }) }) - await generateHandshakeAddress(require('../Mediator').getUser()) + await generateHandshakeAddress() } module.exports = {