Merge pull request #54 from shocknet/spont-ux

Spont ux
This commit is contained in:
Daniel Lugo 2020-04-03 17:18:55 -04:00 committed by GitHub
commit 0df7a4e2c6
3 changed files with 38 additions and 16 deletions

View file

@ -495,7 +495,7 @@ class Mediator {
field: 'deviceId', field: 'deviceId',
message: 'Please specify a device ID' message: 'Please specify a device ID'
} }
logger.error(error) logger.error(JSON.stringify(error))
return false return false
} }
@ -776,18 +776,11 @@ class Mediator {
await throwOnInvalidToken(token) await throwOnInvalidToken(token)
await API.Actions.sendPayment( const preimage = await API.Actions.sendPayment(recipientPub, amount, memo)
recipientPub,
amount,
memo,
gun,
user,
mySEA
)
this.socket.emit(Action.SEND_PAYMENT, { this.socket.emit(Action.SEND_PAYMENT, {
ok: true, ok: true,
msg: null, msg: preimage,
origBody: reqBody origBody: reqBody
}) })
} catch (err) { } catch (err) {
@ -932,7 +925,7 @@ class Mediator {
API.Events.onChats(chats => { API.Events.onChats(chats => {
if (Config.SHOW_LOG) { if (Config.SHOW_LOG) {
logger.info('---chats---') logger.info('---chats---')
logger.info(chats) logger.info(JSON.stringify(chats))
logger.info('-----------------------') logger.info('-----------------------')
} }
@ -964,7 +957,7 @@ class Mediator {
API.Events.onDisplayName(displayName => { API.Events.onDisplayName(displayName => {
if (Config.SHOW_LOG) { if (Config.SHOW_LOG) {
logger.info('---displayName---') logger.info('---displayName---')
logger.info(displayName) logger.info(displayName || 'null or empty string')
logger.info('-----------------------') logger.info('-----------------------')
} }
@ -996,7 +989,7 @@ class Mediator {
API.Events.onCurrentHandshakeAddress(addr => { API.Events.onCurrentHandshakeAddress(addr => {
if (Config.SHOW_LOG) { if (Config.SHOW_LOG) {
logger.info('---addr---') logger.info('---addr---')
logger.info(addr) logger.info(addr || 'null or empty string')
logger.info('-----------------------') logger.info('-----------------------')
} }

View file

@ -876,12 +876,13 @@ const sendHRWithInitialMsg = async (
} }
/** /**
* Returns the preimage corresponding to the payment.
* @param {string} to * @param {string} to
* @param {number} amount * @param {number} amount
* @param {string} memo * @param {string} memo
* @throws {Error} If no response in less than 20 seconds from the recipient, or * @throws {Error} If no response in less than 20 seconds from the recipient, or
* lightning cannot find a route for the payment. * lightning cannot find a route for the payment.
* @returns {Promise<void>} * @returns {Promise<string>} The payment's preimage.
*/ */
const sendPayment = async (to, amount, memo) => { const sendPayment = async (to, amount, memo) => {
try { try {
@ -1073,11 +1074,13 @@ const sendPayment = async (to, amount, memo) => {
if (Utils.successfulHandshakeAlreadyExists(to)) { if (Utils.successfulHandshakeAlreadyExists(to)) {
await sendMessage( await sendMessage(
to, to,
encodeSpontaneousPayment(to, memo || 'no memo', preimage), encodeSpontaneousPayment(amount, memo || 'no memo', preimage),
require('../Mediator').getUser(), require('../Mediator').getUser(),
require('../Mediator').mySEA require('../Mediator').mySEA
) )
} }
return preimage
} catch (e) { } catch (e) {
logger.error('Error inside sendPayment()') logger.error('Error inside sendPayment()')
logger.error(e) logger.error(e)

View file

@ -16,7 +16,14 @@ const nonEncryptedEvents = [
] ]
const Encryption = { const Encryption = {
/**
* @param {string} event
* @returns {boolean}
*/
isNonEncrypted: event => nonEncryptedEvents.includes(event), isNonEncrypted: event => nonEncryptedEvents.includes(event),
/**
* @param {{ deviceId: string , message: string }} arg0
*/
encryptKey: ({ deviceId, message }) => { encryptKey: ({ deviceId, message }) => {
if (!authorizedDevices.has(deviceId)) { if (!authorizedDevices.has(deviceId)) {
throw { field: 'deviceId', message: 'Unknown Device ID' } throw { field: 'deviceId', message: 'Unknown Device ID' }
@ -33,6 +40,9 @@ const Encryption = {
) )
return encryptedData.toString('base64') return encryptedData.toString('base64')
}, },
/**
* @param {{ deviceId: string , message: string }} arg0
*/
decryptKey: ({ deviceId, message }) => { decryptKey: ({ deviceId, message }) => {
if (!authorizedDevices.has(deviceId)) { if (!authorizedDevices.has(deviceId)) {
throw { field: 'deviceId', message: 'Unknown Device ID' } throw { field: 'deviceId', message: 'Unknown Device ID' }
@ -49,6 +59,9 @@ const Encryption = {
return encryptedData.toString() return encryptedData.toString()
}, },
/**
* @param {{ deviceId: string , message: any , metadata?: any}} arg0
*/
encryptMessage: ({ deviceId, message, metadata }) => { encryptMessage: ({ deviceId, message, metadata }) => {
const parsedMessage = const parsedMessage =
typeof message === 'object' ? JSON.stringify(message) : message typeof message === 'object' ? JSON.stringify(message) : message
@ -68,6 +81,9 @@ const Encryption = {
const encryptedData = encryptedBuffer.toString('base64') const encryptedData = encryptedBuffer.toString('base64')
return { encryptedData, encryptedKey, iv: iv.toString('hex'), metadata } return { encryptedData, encryptedKey, iv: iv.toString('hex'), metadata }
}, },
/**
* @param {{ message: string , key: string , iv: string }} arg0
*/
decryptMessage: ({ message, key, iv }) => { decryptMessage: ({ message, key, iv }) => {
const data = Buffer.from(message, 'base64') const data = Buffer.from(message, 'base64')
const cipher = Crypto.createDecipheriv( const cipher = Crypto.createDecipheriv(
@ -84,6 +100,9 @@ const Encryption = {
return decryptedData.toString() return decryptedData.toString()
}, },
/**
* @param {{ deviceId: string }} arg0
*/
isAuthorizedDevice: ({ deviceId }) => { isAuthorizedDevice: ({ deviceId }) => {
if (authorizedDevices.has(deviceId)) { if (authorizedDevices.has(deviceId)) {
return true return true
@ -91,6 +110,9 @@ const Encryption = {
return false return false
}, },
/**
* @param {{ deviceId: string , publicKey: string }} arg0
*/
authorizeDevice: ({ deviceId, publicKey }) => authorizeDevice: ({ deviceId, publicKey }) =>
new Promise((resolve, reject) => { new Promise((resolve, reject) => {
authorizedDevices.set(deviceId, publicKey) authorizedDevices.set(deviceId, publicKey)
@ -109,9 +131,10 @@ const Encryption = {
}, },
(err, publicKey, privateKey) => { (err, publicKey, privateKey) => {
if (err) { if (err) {
// @ts-ignore
logger.error(err) logger.error(err)
reject(err) reject(err)
return err return
} }
const exportedKey = { const exportedKey = {
@ -127,6 +150,9 @@ const Encryption = {
} }
) )
}), }),
/**
* @param {{ deviceId: string }} arg0
*/
unAuthorizeDevice: ({ deviceId }) => { unAuthorizeDevice: ({ deviceId }) => {
authorizedDevices.delete(deviceId) authorizedDevices.delete(deviceId)
} }