From e7610ebc24f9beb2f3283a6177cd3bdba840bf8e Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Sat, 25 Jan 2020 16:22:22 -0400 Subject: [PATCH] disconnect action in mediator --- services/gunDB/Mediator/index.js | 28 ++++++++++++++++++++++++++++ services/gunDB/action-constants.js | 3 ++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/services/gunDB/Mediator/index.js b/services/gunDB/Mediator/index.js index 3bd236a3..d267500d 100644 --- a/services/gunDB/Mediator/index.js +++ b/services/gunDB/Mediator/index.js @@ -305,6 +305,7 @@ class Mediator { this.socket.on(Action.SET_DISPLAY_NAME, this.setDisplayName) this.socket.on(Action.SEND_PAYMENT, this.sendPayment) this.socket.on(Action.SET_BIO, this.setBio) + this.socket.on(Action.DISCONNECT, this.disconnect) this.socket.on(Event.ON_AVATAR, this.onAvatar) this.socket.on(Event.ON_BLACKLIST, this.onBlacklist) @@ -319,8 +320,12 @@ class Mediator { this.socket.on(IS_GUN_AUTH, this.isGunAuth) } + /** @param {SimpleSocket} socket */ encryptSocketInstance = socket => { return { + /** + * @type {SimpleSocket['on']} + */ on: (eventName, cb) => { const deviceId = socket.handshake.query['x-shockwallet-device-id'] socket.on(eventName, data => { @@ -1063,6 +1068,29 @@ class Mediator { }) } } + + /** @param {Readonly<{ pub: string, token: string }>} body */ + disconnect = async body => { + try { + const { pub, token } = body + + await throwOnInvalidToken(token) + + await API.Actions.disconnect(pub) + + this.socket.emit(Action.DISCONNECT, { + ok: true, + msg: null, + origBody: body + }) + } catch (err) { + this.socket.emit(Action.DISCONNECT, { + ok: true, + msg: null, + origBody: body + }) + } + } } /** diff --git a/services/gunDB/action-constants.js b/services/gunDB/action-constants.js index 546bd5b7..bcb52aed 100644 --- a/services/gunDB/action-constants.js +++ b/services/gunDB/action-constants.js @@ -8,7 +8,8 @@ const Actions = { SEND_PAYMENT: "SEND_PAYMENT", SET_AVATAR: "SET_AVATAR", SET_DISPLAY_NAME: "SET_DISPLAY_NAME", - SET_BIO: "SET_BIO" + SET_BIO: "SET_BIO", + DISCONNECT: "DISCONNECT" }; module.exports = Actions;