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:
parent
2a1aaaaf7e
commit
e09c972547
5 changed files with 44 additions and 21 deletions
|
|
@ -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}
|
||||||
|
|
|
||||||
|
|
@ -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}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 =>
|
||||||
|
|
|
||||||
|
|
@ -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 [
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue