feat: add minimumTx boundaries based on config fiat currency
This commit is contained in:
parent
ac61601397
commit
ee330cd925
5 changed files with 60 additions and 45 deletions
|
|
@ -6,7 +6,7 @@ import Section from 'src/components/layout/Section'
|
|||
import {
|
||||
mainFields,
|
||||
overrides,
|
||||
schema,
|
||||
getSchema,
|
||||
getOverridesSchema,
|
||||
defaults,
|
||||
overridesDefaults,
|
||||
|
|
@ -41,9 +41,9 @@ const CommissionsDetails = memo(
|
|||
enableEdit
|
||||
initialValues={commission}
|
||||
save={save}
|
||||
validationSchema={schema}
|
||||
validationSchema={getSchema(locale)}
|
||||
data={R.of(commission)}
|
||||
elements={mainFields(currency, locale, classes)}
|
||||
elements={mainFields(currency)}
|
||||
setEditing={onEditingDefault}
|
||||
forceDisable={isEditingOverrides}
|
||||
/>
|
||||
|
|
@ -62,16 +62,11 @@ const CommissionsDetails = memo(
|
|||
save={saveOverrides}
|
||||
validationSchema={getOverridesSchema(
|
||||
orderedCommissionsOverrides,
|
||||
data
|
||||
data,
|
||||
locale
|
||||
)}
|
||||
data={orderedCommissionsOverrides}
|
||||
elements={overrides(
|
||||
data,
|
||||
currency,
|
||||
orderedCommissionsOverrides,
|
||||
locale,
|
||||
classes
|
||||
)}
|
||||
elements={overrides(data, currency, orderedCommissionsOverrides)}
|
||||
setEditing={onEditingOverrides}
|
||||
forceDisable={isEditingDefault}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ const CommissionsList = memo(
|
|||
enableEdit
|
||||
save={saveOverrides}
|
||||
initialValues={overridesDefaults}
|
||||
validationSchema={getListCommissionsSchema()}
|
||||
validationSchema={getListCommissionsSchema(localeConfig)}
|
||||
data={tableData}
|
||||
elements={commissionsList(data, currency)}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ import { bold } from 'src/styling/helpers'
|
|||
import { ReactComponent as TxInIcon } from 'src/styling/icons/direction/cash-in.svg'
|
||||
import { ReactComponent as TxOutIcon } from 'src/styling/icons/direction/cash-out.svg'
|
||||
import { primaryColor, secondaryColorDark } from 'src/styling/variables'
|
||||
import denominations from 'src/utils/bill-denominations'
|
||||
import { getBillOptions } from 'src/utils/bill-options'
|
||||
import { CURRENCY_MAX } from 'src/utils/constants'
|
||||
|
||||
const ALL_MACHINES = {
|
||||
|
|
@ -227,7 +229,13 @@ const overrides = (auxData, currency, auxElements) => {
|
|||
}
|
||||
|
||||
const percentMax = 100
|
||||
const schema = Yup.object().shape({
|
||||
const getSchema = locale => {
|
||||
const bills = getBillOptions(locale, denominations).map(it =>
|
||||
parseInt(it.code)
|
||||
)
|
||||
const highestBill = R.isEmpty(bills) ? CURRENCY_MAX : Math.max(...bills)
|
||||
|
||||
return Yup.object().shape({
|
||||
cashIn: Yup.number()
|
||||
.label('Cash-in')
|
||||
.min(0)
|
||||
|
|
@ -241,14 +249,15 @@ const schema = Yup.object().shape({
|
|||
fixedFee: Yup.number()
|
||||
.label('Fixed Fee')
|
||||
.min(0)
|
||||
.max(CURRENCY_MAX)
|
||||
.max(highestBill)
|
||||
.required(),
|
||||
minimumTx: Yup.number()
|
||||
.label('Minimum Tx')
|
||||
.min(0)
|
||||
.max(CURRENCY_MAX)
|
||||
.max(highestBill)
|
||||
.required()
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
const getAlreadyUsed = (id, machine, values) => {
|
||||
const getCrypto = R.prop('cryptoCurrencies')
|
||||
|
|
@ -271,7 +280,7 @@ const getAlreadyUsed = (id, machine, values) => {
|
|||
return R.difference(alreadyUsed, originalCryptos)
|
||||
}
|
||||
|
||||
const getOverridesSchema = (values, rawData) => {
|
||||
const getOverridesSchema = (values, rawData, locale) => {
|
||||
const getData = R.path(R.__, rawData)
|
||||
const machineData = [ALL_MACHINES].concat(getData(['machines']))
|
||||
const rawCryptos = getData(['cryptoCurrencies'])
|
||||
|
|
@ -279,6 +288,11 @@ const getOverridesSchema = (values, rawData) => {
|
|||
R.map(it => ({ display: it.code, code: it.code }))(rawCryptos ?? [])
|
||||
)
|
||||
|
||||
const bills = getBillOptions(locale, denominations).map(it =>
|
||||
parseInt(it.code)
|
||||
)
|
||||
const highestBill = R.isEmpty(bills) ? CURRENCY_MAX : Math.max(...bills)
|
||||
|
||||
return Yup.object().shape({
|
||||
machine: Yup.string()
|
||||
.nullable()
|
||||
|
|
@ -330,12 +344,12 @@ const getOverridesSchema = (values, rawData) => {
|
|||
fixedFee: Yup.number()
|
||||
.label('Fixed Fee')
|
||||
.min(0)
|
||||
.max(CURRENCY_MAX)
|
||||
.max(highestBill)
|
||||
.required(),
|
||||
minimumTx: Yup.number()
|
||||
.label('Minimum Tx')
|
||||
.min(0)
|
||||
.max(CURRENCY_MAX)
|
||||
.max(highestBill)
|
||||
.required()
|
||||
})
|
||||
}
|
||||
|
|
@ -414,7 +428,12 @@ const getCommissions = (cryptoCode, deviceId, config) => {
|
|||
return createCommissions(cryptoCode, deviceId, true, config)
|
||||
}
|
||||
|
||||
const getListCommissionsSchema = () => {
|
||||
const getListCommissionsSchema = locale => {
|
||||
const bills = getBillOptions(locale, denominations).map(it =>
|
||||
parseInt(it.code)
|
||||
)
|
||||
const highestBill = R.isEmpty(bills) ? CURRENCY_MAX : Math.max(...bills)
|
||||
|
||||
return Yup.object().shape({
|
||||
machine: Yup.string()
|
||||
.label('Machine')
|
||||
|
|
@ -436,12 +455,12 @@ const getListCommissionsSchema = () => {
|
|||
fixedFee: Yup.number()
|
||||
.label('Fixed Fee')
|
||||
.min(0)
|
||||
.max(CURRENCY_MAX)
|
||||
.max(highestBill)
|
||||
.required(),
|
||||
minimumTx: Yup.number()
|
||||
.label('Minimum Tx')
|
||||
.min(0)
|
||||
.max(CURRENCY_MAX)
|
||||
.max(highestBill)
|
||||
.required()
|
||||
})
|
||||
}
|
||||
|
|
@ -534,7 +553,7 @@ const getListCommissionsFields = (getData, currency, defaults) => {
|
|||
export {
|
||||
mainFields,
|
||||
overrides,
|
||||
schema,
|
||||
getSchema,
|
||||
getOverridesSchema,
|
||||
defaults,
|
||||
overridesDefaults,
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { Table as EditableTable } from 'src/components/editableTable'
|
|||
import Section from 'src/components/layout/Section'
|
||||
import TitleSection from 'src/components/layout/TitleSection'
|
||||
import styles from 'src/pages/AddMachine/styles'
|
||||
import { mainFields, defaults, schema } from 'src/pages/Commissions/helper'
|
||||
import { mainFields, defaults, getSchema } from 'src/pages/Commissions/helper'
|
||||
import { fromNamespace, toNamespace, namespaces } from 'src/utils/config'
|
||||
|
||||
const useStyles = makeStyles(styles)
|
||||
|
|
@ -62,7 +62,7 @@ function Commissions({ isActive, doContinue }) {
|
|||
enableEdit
|
||||
forceAdd={isActive}
|
||||
save={save}
|
||||
validationSchema={schema}
|
||||
validationSchema={getSchema(locale)}
|
||||
data={[]}
|
||||
elements={mainFields(currency, locale, commissionClasses)}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import * as R from 'ramda'
|
||||
import React from 'react'
|
||||
|
||||
import { schema as CommissionsSchema } from 'src/pages/Commissions/helper'
|
||||
import { getSchema as CommissionsSchema } from 'src/pages/Commissions/helper'
|
||||
import { LocaleSchema } from 'src/pages/Locales/helper'
|
||||
import { WalletSchema } from 'src/pages/Wallet/helper'
|
||||
import { fromNamespace, namespaces } from 'src/utils/config'
|
||||
|
|
@ -40,7 +40,8 @@ const hasValidLocale = config => {
|
|||
|
||||
const hasValidCommissions = config => {
|
||||
const commission = fromNamespace(namespaces.COMMISSIONS, config)
|
||||
return CommissionsSchema.isValidSync(commission)
|
||||
const locale = fromNamespace(namespaces.LOCALE, config)
|
||||
return CommissionsSchema(locale).isValidSync(commission)
|
||||
}
|
||||
|
||||
const getWizardStep = (config, crypto) => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue