feat: all coins on commissions

This commit is contained in:
Taranto 2020-11-05 17:06:16 +00:00 committed by Josh Harvey
parent 913d281798
commit 9595afb63a
12 changed files with 258 additions and 152 deletions

View file

@ -45,9 +45,7 @@ const GET_INFO = gql`
const Wallet = ({ name: SCREEN_KEY }) => {
const [editingSchema, setEditingSchema] = useState(null)
const [cancelServiceConfiguration, setCancelServiceConfiguration] = useState(
null
)
const [onChangeFunction, setOnChangeFunction] = useState(null)
const [wizard, setWizard] = useState(false)
const { data } = useQuery(GET_INFO)
@ -71,13 +69,16 @@ const Wallet = ({ name: SCREEN_KEY }) => {
const cryptoCurrencies = data?.cryptoCurrencies ?? []
const accounts = data?.accounts ?? []
const configureThirdPartyService = (it, cancel) => {
if (!it) return
const onChange = (previous, current, setValue) => {
if (!current) return setValue(current)
if (!accounts[it]) {
setEditingSchema(schemas[it])
setCancelServiceConfiguration(() => () => cancel())
if (!accounts[current] && schemas[current]) {
setEditingSchema(schemas[current])
setOnChangeFunction(() => () => setValue(current))
return
}
setValue(current)
}
const shouldOverrideEdit = it => {
@ -85,6 +86,15 @@ const Wallet = ({ name: SCREEN_KEY }) => {
return !WalletSchema.isValidSync(namespaced)
}
const wizardSave = it =>
saveAccount({
variables: { accounts: { [editingSchema.code]: it } }
}).then(it => {
onChangeFunction()
setOnChangeFunction(null)
return it
})
return (
<>
<TitleSection title="Wallet Settings" />
@ -100,11 +110,7 @@ const Wallet = ({ name: SCREEN_KEY }) => {
editWidth={174}
save={save}
validationSchema={WalletSchema}
elements={getElements(
cryptoCurrencies,
accountsConfig,
configureThirdPartyService
)}
elements={getElements(cryptoCurrencies, accountsConfig, onChange)}
/>
{wizard && (
<Wizard
@ -122,17 +128,10 @@ const Wallet = ({ name: SCREEN_KEY }) => {
<Modal
title={`Edit ${editingSchema.name}`}
width={478}
handleClose={() => {
cancelServiceConfiguration && cancelServiceConfiguration()
setEditingSchema(null)
}}
handleClose={() => setEditingSchema(null)}
open={true}>
<FormRenderer
save={it =>
saveAccount({
variables: { accounts: { [editingSchema.code]: it } }
})
}
save={wizardSave}
elements={editingSchema.elements}
validationSchema={editingSchema.validationSchema}
value={accounts[editingSchema.code]}