add crypto defaults

This commit is contained in:
Josh Harvey 2017-05-24 15:59:59 +01:00
parent 3eadb45344
commit bcf72a0285
3 changed files with 22 additions and 7 deletions

View file

@ -75,7 +75,6 @@ function validateCurrentConfig () {
function decorateEnabledIf (schemaFields, schemaField) {
const code = schemaField.fieldLocator.code
const field = _.find(f => f.code === code, schemaFields)
console.log('DEBUG200: %j', [schemaField, code, field, schemaFields])
return _.set('fieldEnabledIf', field.enabledIf || [], schemaField)
}

View file

@ -131,12 +131,9 @@ function settings () {
return settingsCache
}
const pp = require('./pp')
function save (config) {
const sql = 'insert into user_config (type, data, valid) values ($1, $2, $3)'
console.log(pp('DEBUG101')(config))
return configValidate.validate(config)
.then(() => db.none(sql, ['config', {config}, true]))
.catch(() => db.none(sql, ['config', {config}, false]))
@ -170,6 +167,25 @@ function configDeleteField (scope, fieldCode) {
}
}
function cryptoCodeDefaults (cryptoCode) {
const scope = {crypto: cryptoCode, machine: 'global'}
const fieldCode = 'exchange'
const fieldType = 'account'
const fieldClass = 'exchange'
const value = 'no-exchange'
return configAddField(scope, fieldCode, fieldType, fieldClass, value)
}
function addCryptoDefaults (oldConfig, newFields) {
const cryptoCodeEntries = _.filter(v => v.fieldLocator.code === 'cryptoCurrencies', newFields)
const cryptoCodes = _.map(v => v.fieldValue.value, cryptoCodeEntries)
const uniqueCryptoCodes = _.uniq(_.flatten(cryptoCodes))
const defaults = _.map(cryptoCodeDefaults, uniqueCryptoCodes)
return mergeValues(defaults, oldConfig)
}
function modifyConfig (newFields) {
const TransactionMode = pgp.txMode.TransactionMode
const isolationLevel = pgp.txMode.isolationLevel
@ -178,8 +194,9 @@ function modifyConfig (newFields) {
function transaction (t) {
return loadRecentConfig()
.then(oldConfig => {
const oldConfigWithDefaults = addCryptoDefaults(oldConfig, newFields)
const doSave = _.flow(mergeValues, save)
return doSave(oldConfig, newFields)
return doSave(oldConfigWithDefaults, newFields)
})
}

View file

@ -1,8 +1,7 @@
const settingsLoader = require('../lib/settings-loader')
const fields = [
settingsLoader.configDeleteField({crypto: 'global', machine: 'global'}, 'cashOutFee'),
settingsLoader.configDeleteField({crypto: 'global', machine: 'global'}, 'minTx')
settingsLoader.configDeleteField({crypto: 'ETH', machine: 'global'}, 'exchange')
]
settingsLoader.modifyConfig(fields)