diff --git a/lib/new-config-manager.js b/lib/new-config-manager.js index 58638ebc..c44653e4 100644 --- a/lib/new-config-manager.js +++ b/lib/new-config-manager.js @@ -151,9 +151,7 @@ const getCryptosFromWalletNamespace = config => { const getCashInSettings = config => fromNamespace(namespaces.CASH_IN)(config) -const getCryptoUnits = (crypto, config) => { - return getWalletSettings(crypto, config).cryptoUnits -} +const getCryptoUnits = (crypto, config) => getWalletSettings(crypto, config).cryptoUnits const setTermsConditions = toNamespace(namespaces.TERMS_CONDITIONS) diff --git a/lib/new-settings-loader.js b/lib/new-settings-loader.js index 521b4be8..1d7b2705 100644 --- a/lib/new-settings-loader.js +++ b/lib/new-settings-loader.js @@ -112,6 +112,17 @@ function saveConfig (config) { }) } +function removeFromConfig (fields) { + return Promise.all([loadLatestConfigOrNone(), getOperatorId('middleware')]) + .then(([currentConfig, operatorId]) => { + const newConfig = _.omit(fields, currentConfig) + return db.tx(t => { + return t.none(configSql, ['config', { config: newConfig }, true, NEW_SETTINGS_LOADER_SCHEMA_VERSION]) + .then(() => t.none('NOTIFY $1:name, $2', ['reload', JSON.stringify({ schema: asyncLocalStorage.getStore().get('schema'), operatorId })])) + }).catch(console.error) + }) +} + function migrationSaveConfig (config) { return loadLatestConfigOrNone() .then(currentConfig => { @@ -221,5 +232,6 @@ module.exports = { loadLatestConfig, loadLatestConfigOrNone, load, - migrate + migrate, + removeFromConfig } diff --git a/migrations/1658940716689-remove-coin-specific-cryptounits.js b/migrations/1658940716689-remove-coin-specific-cryptounits.js new file mode 100644 index 00000000..e91bca7c --- /dev/null +++ b/migrations/1658940716689-remove-coin-specific-cryptounits.js @@ -0,0 +1,22 @@ +const { removeFromConfig, loadLatest } = require('../lib/new-settings-loader') +const { getCryptosFromWalletNamespace } = require('../lib/new-config-manager.js') +const _ = require('lodash/fp') + +exports.up = function (next) { + loadLatest() + .then(settings => { + const configuredCryptos = getCryptosFromWalletNamespace(settings.config) + if (!configuredCryptos.length) return Promise.resolve() + + return removeFromConfig(_.map(it => `wallets_${it}_cryptoUnits`, configuredCryptos)) + }) + .then(() => next()) + .catch(err => { + console.log(err.message) + return next(err) + }) +} + +exports.down = function (next) { + next() +} diff --git a/new-lamassu-admin/src/pages/Wallet/Wizard.js b/new-lamassu-admin/src/pages/Wallet/Wizard.js index 92fd9259..cf26394b 100644 --- a/new-lamassu-admin/src/pages/Wallet/Wizard.js +++ b/new-lamassu-admin/src/pages/Wallet/Wizard.js @@ -1,4 +1,3 @@ -import { utils as coinUtils } from '@lamassu/coins' import * as R from 'ramda' import React, { useState } from 'react' import * as Yup from 'yup' @@ -104,14 +103,7 @@ const Wizard = ({ : accountsToSave if (isLastStep) { - const defaultCryptoUnit = R.head( - R.keys(coinUtils.getCryptoCurrency(coin.code).units) - ) - const configToSave = { - ...newConfig, - cryptoUnits: defaultCryptoUnit - } - return save(toNamespace(coin.code, configToSave), newAccounts) + return save(toNamespace(coin.code, newConfig), newAccounts) } setState({