From bcf72a0285e2cc6d65ad97238479f99c3c592f7c Mon Sep 17 00:00:00 2001 From: Josh Harvey Date: Wed, 24 May 2017 15:59:59 +0100 Subject: [PATCH] add crypto defaults --- lib/admin/config.js | 1 - lib/settings-loader.js | 25 +++++++++++++++++++++---- tools/modify.js | 3 +-- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/lib/admin/config.js b/lib/admin/config.js index 92db14f9..06d6fa6d 100644 --- a/lib/admin/config.js +++ b/lib/admin/config.js @@ -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) } diff --git a/lib/settings-loader.js b/lib/settings-loader.js index 246a9646..700f7dff 100644 --- a/lib/settings-loader.js +++ b/lib/settings-loader.js @@ -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) }) } diff --git a/tools/modify.js b/tools/modify.js index 3f216334..d5c34611 100644 --- a/tools/modify.js +++ b/tools/modify.js @@ -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)