fix no-exchange issue

This commit is contained in:
Josh Harvey 2017-05-10 23:05:19 +03:00
parent a60a4f8793
commit f23d17b357
7 changed files with 29 additions and 17 deletions

View file

@ -1,5 +1,6 @@
#!/usr/bin/env node #!/usr/bin/env node
const assert = require('assert')
const _ = require('lodash/fp') const _ = require('lodash/fp')
// const db = require('../lib/db') // const db = require('../lib/db')
@ -7,6 +8,10 @@ const settingsLoader = require('../lib/settings-loader')
const schema = require('../lamassu-schema.json') const schema = require('../lamassu-schema.json')
const newFields = [] const newFields = []
const DEFAULT_CRYPTO = _.first(_.find(['code', 'cryptoCurrencies'], schema.fields).default)
assert(DEFAULT_CRYPTO)
Promise.resolve() Promise.resolve()
.then(() => { .then(() => {
schema.groups.forEach(group => { schema.groups.forEach(group => {
@ -14,12 +19,16 @@ Promise.resolve()
const field = schema.fields.find(r => r.code === fieldCode) const field = schema.fields.find(r => r.code === fieldCode)
if (!field) throw new Error('No such field: ' + fieldCode) if (!field) throw new Error('No such field: ' + fieldCode)
if (_.isNil(field.default)) return if (_.isNil(field.default)) return
if (group.cryptoScope === 'specific' || group.machineScope === 'specific') return if (group.machineScope === 'specific') return
const crypto = group.cryptoScope === 'specific'
? DEFAULT_CRYPTO
: 'global'
return newFields.push({ return newFields.push({
fieldLocator: { fieldLocator: {
fieldScope: { fieldScope: {
crypto: 'global', crypto,
machine: 'global' machine: 'global'
}, },
code: fieldCode, code: fieldCode,

View file

@ -211,7 +211,8 @@
"displayBottom": "Exchange", "displayBottom": "Exchange",
"fieldType": "account", "fieldType": "account",
"fieldClass": "exchange", "fieldClass": "exchange",
"fieldValidation": [] "fieldValidation": [],
"default": "no-exchange"
}, },
{ {
"code": "fiatCurrency", "code": "fiatCurrency",

View file

@ -98,9 +98,9 @@ function fetchConfigGroup (code) {
return { return {
schema: groupSchema, schema: groupSchema,
values: values, values,
selectedCryptos: getCryptos(config, machineList), selectedCryptos: getCryptos(config, machineList),
data: data data
} }
}) })
} }

View file

@ -250,7 +250,7 @@ function postProcess (txVector, pi) {
return pi.buildAvailableCassettes(newTx.id) return pi.buildAvailableCassettes(newTx.id)
.then(cassettes => { .then(cassettes => {
const bills = billMath.makeChange(cassettes.cassettes, newTx.fiat) const bills = billMath.makeChange(cassettes.cassettes, newTx.fiat)
console.log('DEBUG130: %j', cassettes.cassettes)
if (!bills) throw httpError('Out of bills', INSUFFICIENT_FUNDS_CODE) if (!bills) throw httpError('Out of bills', INSUFFICIENT_FUNDS_CODE)
return bills return bills
}) })

View file

@ -29,8 +29,6 @@ function getMachineNames (config) {
.then(([machines, config]) => { .then(([machines, config]) => {
const addName = r => { const addName = r => {
const name = configManager.machineScoped(r.deviceId, config).machineName const name = configManager.machineScoped(r.deviceId, config).machineName
console.log('DEBUG200: %j', [name, r])
console.log('DEBUG201: %j', configManager.machineScoped(r.deviceId, config))
return _.set('name', name, r) return _.set('name', name, r)
} }
@ -54,5 +52,3 @@ function setMachine (rec) {
default: throw new Error('No such action: ' + rec.action) default: throw new Error('No such action: ' + rec.action)
} }
} }
console.log('DEBUG101')

View file

@ -16,9 +16,9 @@ function pullToken (token) {
function configureNewDevice (deviceId, machineName, machineModel) { function configureNewDevice (deviceId, machineName, machineModel) {
const scope = {crypto: 'global', machine: deviceId} const scope = {crypto: 'global', machine: deviceId}
const newFields = [ const newFields = [
settingsLoader.configAddField(scope, 'cashOutEnabled', false), settingsLoader.configAddField(scope, 'cashOutEnabled', 'onOff', null, false),
settingsLoader.configAddField(scope, 'machineName', machineName), settingsLoader.configAddField(scope, 'machineName', 'string', null, machineName),
settingsLoader.configAddField(scope, 'machineModel', machineModel) settingsLoader.configAddField(scope, 'machineModel', 'string', null, machineModel)
] ]
return settingsLoader.modifyConfig(newFields) return settingsLoader.modifyConfig(newFields)
@ -26,7 +26,11 @@ function configureNewDevice (deviceId, machineName, machineModel) {
function removeDeviceConfig (deviceId) { function removeDeviceConfig (deviceId) {
const scope = {crypto: 'global', machine: deviceId} const scope = {crypto: 'global', machine: deviceId}
const newFields = [settingsLoader.configDeleteField(scope, 'cashOutEnabled', false)] const newFields = [
settingsLoader.configDeleteField(scope, 'cashOutEnabled'),
settingsLoader.configDeleteField(scope, 'machineName'),
settingsLoader.configDeleteField(scope, 'machineModel')
]
return settingsLoader.modifyConfig(newFields) return settingsLoader.modifyConfig(newFields)
} }

View file

@ -139,16 +139,18 @@ function save (config) {
.catch(() => db.none(sql, ['config', {config}, false])) .catch(() => db.none(sql, ['config', {config}, false]))
} }
function configAddField (scope, fieldCode, value) { function configAddField (scope, fieldCode, fieldType, fieldClass, value) {
return { return {
fieldLocator: { fieldLocator: {
fieldScope: { fieldScope: {
crypto: scope.crypto, crypto: scope.crypto,
machine: scope.machine machine: scope.machine
}, },
code: fieldCode code: fieldCode,
fieldType,
fieldClass
}, },
fieldValue: {value} fieldValue: {fieldType, value}
} }
} }