diff --git a/services/gunDB/Mediator/index.js b/services/gunDB/Mediator/index.js index 263da404..43627866 100644 --- a/services/gunDB/Mediator/index.js +++ b/services/gunDB/Mediator/index.js @@ -495,7 +495,7 @@ class Mediator { field: 'deviceId', message: 'Please specify a device ID' } - logger.error(error) + logger.error(JSON.stringify(error)) return false } @@ -776,18 +776,11 @@ class Mediator { await throwOnInvalidToken(token) - await API.Actions.sendPayment( - recipientPub, - amount, - memo, - gun, - user, - mySEA - ) + const preimage = await API.Actions.sendPayment(recipientPub, amount, memo) this.socket.emit(Action.SEND_PAYMENT, { ok: true, - msg: null, + msg: preimage, origBody: reqBody }) } catch (err) { @@ -932,7 +925,7 @@ class Mediator { API.Events.onChats(chats => { if (Config.SHOW_LOG) { logger.info('---chats---') - logger.info(chats) + logger.info(JSON.stringify(chats)) logger.info('-----------------------') } @@ -964,7 +957,7 @@ class Mediator { API.Events.onDisplayName(displayName => { if (Config.SHOW_LOG) { logger.info('---displayName---') - logger.info(displayName) + logger.info(displayName || 'null or empty string') logger.info('-----------------------') } @@ -996,7 +989,7 @@ class Mediator { API.Events.onCurrentHandshakeAddress(addr => { if (Config.SHOW_LOG) { logger.info('---addr---') - logger.info(addr) + logger.info(addr || 'null or empty string') logger.info('-----------------------') } diff --git a/services/gunDB/contact-api/actions.js b/services/gunDB/contact-api/actions.js index 7f758808..9ddb0502 100644 --- a/services/gunDB/contact-api/actions.js +++ b/services/gunDB/contact-api/actions.js @@ -876,12 +876,13 @@ const sendHRWithInitialMsg = async ( } /** + * Returns the preimage corresponding to the payment. * @param {string} to * @param {number} amount * @param {string} memo * @throws {Error} If no response in less than 20 seconds from the recipient, or * lightning cannot find a route for the payment. - * @returns {Promise} + * @returns {Promise} The payment's preimage. */ const sendPayment = async (to, amount, memo) => { try { @@ -1073,11 +1074,13 @@ const sendPayment = async (to, amount, memo) => { if (Utils.successfulHandshakeAlreadyExists(to)) { await sendMessage( to, - encodeSpontaneousPayment(to, memo || 'no memo', preimage), + encodeSpontaneousPayment(amount, memo || 'no memo', preimage), require('../Mediator').getUser(), require('../Mediator').mySEA ) } + + return preimage } catch (e) { logger.error('Error inside sendPayment()') logger.error(e) diff --git a/utils/encryptionStore.js b/utils/encryptionStore.js index ba4f8191..a946bc2f 100644 --- a/utils/encryptionStore.js +++ b/utils/encryptionStore.js @@ -16,7 +16,14 @@ const nonEncryptedEvents = [ ] const Encryption = { + /** + * @param {string} event + * @returns {boolean} + */ isNonEncrypted: event => nonEncryptedEvents.includes(event), + /** + * @param {{ deviceId: string , message: string }} arg0 + */ encryptKey: ({ deviceId, message }) => { if (!authorizedDevices.has(deviceId)) { throw { field: 'deviceId', message: 'Unknown Device ID' } @@ -33,6 +40,9 @@ const Encryption = { ) return encryptedData.toString('base64') }, + /** + * @param {{ deviceId: string , message: string }} arg0 + */ decryptKey: ({ deviceId, message }) => { if (!authorizedDevices.has(deviceId)) { throw { field: 'deviceId', message: 'Unknown Device ID' } @@ -49,6 +59,9 @@ const Encryption = { return encryptedData.toString() }, + /** + * @param {{ deviceId: string , message: any , metadata?: any}} arg0 + */ encryptMessage: ({ deviceId, message, metadata }) => { const parsedMessage = typeof message === 'object' ? JSON.stringify(message) : message @@ -68,6 +81,9 @@ const Encryption = { const encryptedData = encryptedBuffer.toString('base64') return { encryptedData, encryptedKey, iv: iv.toString('hex'), metadata } }, + /** + * @param {{ message: string , key: string , iv: string }} arg0 + */ decryptMessage: ({ message, key, iv }) => { const data = Buffer.from(message, 'base64') const cipher = Crypto.createDecipheriv( @@ -84,6 +100,9 @@ const Encryption = { return decryptedData.toString() }, + /** + * @param {{ deviceId: string }} arg0 + */ isAuthorizedDevice: ({ deviceId }) => { if (authorizedDevices.has(deviceId)) { return true @@ -91,6 +110,9 @@ const Encryption = { return false }, + /** + * @param {{ deviceId: string , publicKey: string }} arg0 + */ authorizeDevice: ({ deviceId, publicKey }) => new Promise((resolve, reject) => { authorizedDevices.set(deviceId, publicKey) @@ -109,9 +131,10 @@ const Encryption = { }, (err, publicKey, privateKey) => { if (err) { + // @ts-ignore logger.error(err) reject(err) - return err + return } const exportedKey = { @@ -127,6 +150,9 @@ const Encryption = { } ) }), + /** + * @param {{ deviceId: string }} arg0 + */ unAuthorizeDevice: ({ deviceId }) => { authorizedDevices.delete(deviceId) }