From 0fd1ffd6208cf89eb0dfa750b4088ea7d9a5f1fc Mon Sep 17 00:00:00 2001 From: Josh Harvey Date: Sat, 29 Jul 2017 11:45:04 +0300 Subject: [PATCH] fix blockcypher account admin --- lib/admin/accounts.js | 68 +++++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/lib/admin/accounts.js b/lib/admin/accounts.js index 8e1b85df..14081c18 100644 --- a/lib/admin/accounts.js +++ b/lib/admin/accounts.js @@ -9,26 +9,36 @@ const schemas = ph.loadSchemas() function fetchAccounts () { return db.oneOrNone('select data from user_config where type=$1', ['accounts']) .then(row => { + + // Hard code this for now + const accounts = [{ + code: 'blockcypher', + display: 'Blockcypher', + fields: [ + { code: 'confidenceFactor', display: 'Confidence Factor', fieldType: 'integer', required: true, value: 90 } + ] + }] + return row - ? Promise.resolve(row.data.accounts) - : db.none('insert into user_config (type, data, valid) values ($1, $2, $3)', ['accounts', {accounts: []}, true]) - .then(fetchAccounts) + ? Promise.resolve(row.data.accounts) + : db.none('insert into user_config (type, data, valid) values ($1, $2, $3)', ['accounts', {accounts}, true]) + .then(fetchAccounts) }) } function selectedAccounts () { const mapAccount = v => v.fieldLocator.fieldType === 'account' && - v.fieldValue.value + v.fieldValue.value const mapSchema = code => schemas[code] return config.fetchConfig() - .then(conf => { - const accountCodes = _.uniq(conf.map(mapAccount) - .filter(_.identity)) + .then(conf => { + const accountCodes = _.uniq(conf.map(mapAccount) + .filter(_.identity)) - return _.sortBy(_.get('display'), accountCodes.map(mapSchema) - .filter(_.identity)) - }) + return _.sortBy(_.get('display'), accountCodes.map(mapSchema) + .filter(_.identity)) + }) } function fetchAccountSchema (account) { @@ -56,20 +66,20 @@ function getAccounts (accountCode) { if (!schema) return Promise.reject(new Error('No schema for: ' + accountCode)) return fetchAccounts() - .then(accounts => { - if (_.isEmpty(accounts)) return [schema] - const account = _.find(r => r.code === accountCode, accounts) - const mergedAccount = mergeAccount(schema, account) + .then(accounts => { + if (_.isEmpty(accounts)) return [schema] + const account = _.find(r => r.code === accountCode, accounts) + const mergedAccount = mergeAccount(schema, account) - return updateAccounts(mergedAccount, accounts) - }) + return updateAccounts(mergedAccount, accounts) + }) } function elideSecrets (account) { const elideSecret = field => { return field.fieldType === 'password' - ? _.set('value', !_.isEmpty(field.value), field) - : field + ? _.set('value', !_.isEmpty(field.value), field) + : field } return _.set('fields', account.fields.map(elideSecret), account) @@ -77,8 +87,8 @@ function elideSecrets (account) { function getAccount (accountCode) { return getAccounts(accountCode) - .then(accounts => _.find(r => r.code === accountCode, accounts)) - .then(elideSecrets) + .then(accounts => _.find(r => r.code === accountCode, accounts)) + .then(elideSecrets) } function save (accounts) { @@ -89,21 +99,21 @@ function updateAccounts (newAccount, accounts) { const accountCode = newAccount.code const isPresent = _.some(_.matchesProperty('code', accountCode), accounts) const updateAccount = r => r.code === accountCode - ? newAccount - : r + ? newAccount + : r return isPresent - ? _.map(updateAccount, accounts) - : _.concat(accounts, newAccount) + ? _.map(updateAccount, accounts) + : _.concat(accounts, newAccount) } function updateAccount (account) { return getAccounts(account.code) - .then(accounts => { - const merged = mergeAccount(_.find(_.matchesProperty('code', account.code), accounts), account) - return save(updateAccounts(merged, accounts)) - }) - .then(() => getAccount(account.code)) + .then(accounts => { + const merged = mergeAccount(_.find(_.matchesProperty('code', account.code), accounts), account) + return save(updateAccounts(merged, accounts)) + }) + .then(() => getAccount(account.code)) } module.exports = {