fix: keep previous value when closing the configuration popup without

saving on locales screen

refactor: renamed enableCoin function to configureCoin

fix: keep previous value when closing the configuration popup without
saving on wallets screen

refactor: renamed enableThirdPartyService function to
configureThirdPartyService
This commit is contained in:
Liordino Neto 2020-10-25 21:08:46 -03:00 committed by Josh Harvey
parent 2a1aaaaf7e
commit e09c972547
5 changed files with 44 additions and 21 deletions

View file

@ -24,7 +24,7 @@ const AutocompleteFormik = ({ options, onChange, ...props }) => {
<Autocomplete <Autocomplete
name={name} name={name}
onChange={(event, item) => { onChange={(event, item) => {
onChange && onChange(value, item) onChange && onChange(value, item, () => setFieldValue(name, value))
setFieldValue(name, item) setFieldValue(name, item)
}} }}
onBlur={innerOnBlur} onBlur={innerOnBlur}

View file

@ -99,6 +99,9 @@ const FiatCurrencyChangeAlert = ({ open, close, save }) => {
const Locales = ({ name: SCREEN_KEY }) => { const Locales = ({ name: SCREEN_KEY }) => {
const [wizard, setWizard] = useState(false) const [wizard, setWizard] = useState(false)
const [cancelCryptoConfiguration, setCancelCryptoConfiguration] = useState(
null
)
const [error, setError] = useState(false) const [error, setError] = useState(false)
const [isEditingDefault, setEditingDefault] = useState(false) const [isEditingDefault, setEditingDefault] = useState(false)
const [isEditingOverrides, setEditingOverrides] = useState(false) const [isEditingOverrides, setEditingOverrides] = useState(false)
@ -142,11 +145,14 @@ const Locales = ({ name: SCREEN_KEY }) => {
return saveConfig({ variables: { config } }) return saveConfig({ variables: { config } })
} }
const enableCoin = it => { const configureCoin = (it, prev, cancel) => {
if (!it) return if (!it) return
const namespaced = fromNamespace(it)(wallets) const namespaced = fromNamespace(it)(wallets)
if (!WalletSchema.isValidSync(namespaced)) return setWizard(it) if (!WalletSchema.isValidSync(namespaced)) {
setCancelCryptoConfiguration(() => () => cancel())
setWizard(it)
}
} }
const onEditingDefault = (it, editing) => setEditingDefault(editing) const onEditingDefault = (it, editing) => setEditingDefault(editing)
@ -170,7 +176,7 @@ const Locales = ({ name: SCREEN_KEY }) => {
save={handleSave} save={handleSave}
validationSchema={LocaleSchema} validationSchema={LocaleSchema}
data={R.of(locale)} data={R.of(locale)}
elements={mainFields(data, enableCoin)} elements={mainFields(data, configureCoin)}
setEditing={onEditingDefault} setEditing={onEditingDefault}
forceDisable={isEditingOverrides} forceDisable={isEditingOverrides}
/> />
@ -187,7 +193,7 @@ const Locales = ({ name: SCREEN_KEY }) => {
save={saveOverrides} save={saveOverrides}
validationSchema={OverridesSchema} validationSchema={OverridesSchema}
data={localeOverrides ?? []} data={localeOverrides ?? []}
elements={overrides(data, localeOverrides, enableCoin)} elements={overrides(data, localeOverrides, configureCoin)}
disableAdd={R.compose(R.isEmpty, R.difference)( disableAdd={R.compose(R.isEmpty, R.difference)(
data?.machines.map(m => m.deviceId) ?? [], data?.machines.map(m => m.deviceId) ?? [],
localeOverrides?.map(o => o.machine) ?? [] localeOverrides?.map(o => o.machine) ?? []
@ -199,8 +205,14 @@ const Locales = ({ name: SCREEN_KEY }) => {
{wizard && ( {wizard && (
<Wizard <Wizard
coin={R.find(R.propEq('code', wizard))(cryptoCurrencies)} coin={R.find(R.propEq('code', wizard))(cryptoCurrencies)}
onClose={() => setWizard(false)} onClose={() => {
save={rawConfig => save(toNamespace(namespaces.WALLETS)(rawConfig))} cancelCryptoConfiguration && cancelCryptoConfiguration()
setWizard(false)
}}
save={rawConfig => {
save(toNamespace(namespaces.WALLETS)(rawConfig))
setCancelCryptoConfiguration(null)
}}
error={error} error={error}
cryptoCurrencies={cryptoCurrencies} cryptoCurrencies={cryptoCurrencies}
userAccounts={data?.config?.accounts} userAccounts={data?.config?.accounts}

View file

@ -5,14 +5,14 @@ import Autocomplete from 'src/components/inputs/formik/Autocomplete.js'
const LANGUAGE_SELECTION_LIMIT = 4 const LANGUAGE_SELECTION_LIMIT = 4
const getFields = (getData, names, enableCoin, auxElements = []) => { const getFields = (getData, names, configureCoin, auxElements = []) => {
return R.filter( return R.filter(
it => R.includes(it.name, names), it => R.includes(it.name, names),
allFields(getData, enableCoin, auxElements) allFields(getData, configureCoin, auxElements)
) )
} }
const allFields = (getData, enableCoin, auxElements = []) => { const allFields = (getData, configureCoin, auxElements = []) => {
const getView = (data, code, compare) => it => { const getView = (data, code, compare) => it => {
if (!data) return '' if (!data) return ''
@ -108,29 +108,30 @@ const allFields = (getData, enableCoin, auxElements = []) => {
getLabel: R.path(['code']), getLabel: R.path(['code']),
multiple: true, multiple: true,
optionsLimit: null, optionsLimit: null,
onChange: (prev, curr) => enableCoin(R.difference(curr, prev)[0]) onChange: (prev, curr, cancel) =>
configureCoin(R.difference(curr, prev)[0], prev, cancel)
} }
} }
] ]
} }
const mainFields = (auxData, enableCoin) => { const mainFields = (auxData, configureCoin) => {
const getData = R.path(R.__, auxData) const getData = R.path(R.__, auxData)
return getFields( return getFields(
getData, getData,
['country', 'fiatCurrency', 'languages', 'cryptoCurrencies'], ['country', 'fiatCurrency', 'languages', 'cryptoCurrencies'],
enableCoin configureCoin
) )
} }
const overrides = (auxData, auxElements, enableCoin) => { const overrides = (auxData, auxElements, configureCoin) => {
const getData = R.path(R.__, auxData) const getData = R.path(R.__, auxData)
return getFields( return getFields(
getData, getData,
['machine', 'country', 'languages', 'cryptoCurrencies'], ['machine', 'country', 'languages', 'cryptoCurrencies'],
enableCoin, configureCoin,
auxElements auxElements
) )
} }

View file

@ -45,6 +45,9 @@ const GET_INFO = gql`
const Wallet = ({ name: SCREEN_KEY }) => { const Wallet = ({ name: SCREEN_KEY }) => {
const [editingSchema, setEditingSchema] = useState(null) const [editingSchema, setEditingSchema] = useState(null)
const [cancelServiceConfiguration, setCancelServiceConfiguration] = useState(
null
)
const [wizard, setWizard] = useState(false) const [wizard, setWizard] = useState(false)
const [error, setError] = useState(false) const [error, setError] = useState(false)
const { data } = useQuery(GET_INFO) const { data } = useQuery(GET_INFO)
@ -71,10 +74,13 @@ const Wallet = ({ name: SCREEN_KEY }) => {
const cryptoCurrencies = data?.cryptoCurrencies ?? [] const cryptoCurrencies = data?.cryptoCurrencies ?? []
const accounts = data?.accounts ?? [] const accounts = data?.accounts ?? []
const enableThirdPartyService = it => { const configureThirdPartyService = (it, cancel) => {
if (!it) return if (!it) return
if (!accounts[it]) return setEditingSchema(schemas[it]) if (!accounts[it]) {
setEditingSchema(schemas[it])
setCancelServiceConfiguration(() => () => cancel())
}
} }
const shouldOverrideEdit = it => { const shouldOverrideEdit = it => {
@ -99,7 +105,7 @@ const Wallet = ({ name: SCREEN_KEY }) => {
elements={getElements( elements={getElements(
cryptoCurrencies, cryptoCurrencies,
accountsConfig, accountsConfig,
enableThirdPartyService configureThirdPartyService
)} )}
/> />
{wizard && ( {wizard && (
@ -118,7 +124,10 @@ const Wallet = ({ name: SCREEN_KEY }) => {
<Modal <Modal
title={`Edit ${editingSchema.name}`} title={`Edit ${editingSchema.name}`}
width={478} width={478}
handleClose={() => setEditingSchema(null)} handleClose={() => {
cancelServiceConfiguration && cancelServiceConfiguration()
setEditingSchema(null)
}}
open={true}> open={true}>
<FormRenderer <FormRenderer
save={it => save={it =>

View file

@ -16,7 +16,7 @@ const WalletSchema = Yup.object().shape({
const getElements = ( const getElements = (
cryptoCurrencies, cryptoCurrencies,
accounts, accounts,
enableThirdPartyService, configureThirdPartyService,
wizard = false wizard = false
) => { ) => {
const widthAdjust = wizard ? 11 : 0 const widthAdjust = wizard ? 11 : 0
@ -38,7 +38,8 @@ const getElements = (
filterCoins(it)(filterOptions(option)) filterCoins(it)(filterOptions(option))
) )
const onChange = (prev, curr) => enableThirdPartyService(curr) const onChange = (prev, curr, cancel) =>
configureThirdPartyService(curr, cancel)
return [ return [
{ {