diff --git a/lib/routes.js b/lib/routes.js
index 889ac0ea..79e2e34e 100644
--- a/lib/routes.js
+++ b/lib/routes.js
@@ -51,7 +51,6 @@ function checkHasLightning (settings) {
function poll (req, res, next) {
const machineVersion = req.query.version
- // TODO new-admin: pass this field from the machines
const machineModel = req.query.model
const deviceId = req.deviceId
const deviceTime = req.deviceTime
diff --git a/new-lamassu-admin/src/components/editableTable/NamespacedTable.js b/new-lamassu-admin/src/components/editableTable/NamespacedTable.js
index 4aac1c03..901b32ba 100644
--- a/new-lamassu-admin/src/components/editableTable/NamespacedTable.js
+++ b/new-lamassu-admin/src/components/editableTable/NamespacedTable.js
@@ -13,7 +13,7 @@ const NamespacedTable = ({
...props
}) => {
const innerSave = (...[, it]) => {
- save(toNamespace(it.id)(R.omit(['id2'], it)))
+ return save(toNamespace(it.id)(R.omit(['id2'], it)))
}
const innerData = R.map(it => ({
diff --git a/new-lamassu-admin/src/components/editableTable/Row.js b/new-lamassu-admin/src/components/editableTable/Row.js
index 9c55ff6d..de1cc334 100644
--- a/new-lamassu-admin/src/components/editableTable/Row.js
+++ b/new-lamassu-admin/src/components/editableTable/Row.js
@@ -34,10 +34,15 @@ const ActionCol = ({ disabled, editing }) => {
onToggle,
toggleWidth,
forceAdd,
+ clearError,
actionColSize
} = useContext(TableCtx)
const disableEdit = disabled || (disableRowEdit && disableRowEdit(values))
+ const cancel = () => {
+ clearError()
+ resetForm()
+ }
return (
<>
@@ -51,7 +56,7 @@ const ActionCol = ({ disabled, editing }) => {
Save
{!forceAdd && (
-
+
Cancel
)}
@@ -170,6 +175,7 @@ const ERow = ({ editing, disabled, lastOfGroup }) => {
elements,
enableEdit,
enableDelete,
+ error,
enableToggle,
rowSize,
stripeWhen
@@ -199,13 +205,18 @@ const ERow = ({ editing, disabled, lastOfGroup }) => {
}
const touchedErrors = R.pick(R.keys(touched), errors)
+ const hasTouchedErrors = touchedErrors && R.keys(touchedErrors).length > 0
+ const hasErrors = hasTouchedErrors || !!error
+
+ const errorMessage =
+ error || (touchedErrors && R.values(touchedErrors).join(', '))
return (
0}
- errorMessage={touchedErrors && R.values(touchedErrors).join(', ')}>
+ error={editing && hasErrors}
+ errorMessage={errorMessage}>
{innerElements.map((it, idx) => {
return (
setError(externalError), [externalError])
+ useEffect(() => {
+ setError(null)
+ setAdding(forceAdd)
+ }, [forceAdd])
- useEffect(() => setAdding(forceAdd), [forceAdd])
const innerSave = async value => {
if (saving) return
@@ -70,9 +77,9 @@ const ETable = ({
const list = index !== -1 ? R.update(index, it, data) : R.prepend(it, data)
if (!R.equals(data[index], it)) {
- // no response means the save failed
- const response = await save({ [name]: list }, it)
- if (!response) {
+ try {
+ await save({ [name]: list }, it)
+ } catch (err) {
setSaving(false)
return
}
@@ -98,11 +105,13 @@ const ETable = ({
const onEdit = it => {
if (shouldOverrideEdit && shouldOverrideEdit(it)) return editOverride(it)
setEditingId(it)
+ setError(null)
setEditing && setEditing(it, true)
}
const addField = () => {
setAdding(true)
+ setError(null)
setEditing && setEditing(true, true)
}
@@ -129,6 +138,8 @@ const ETable = ({
elements,
enableEdit,
onEdit,
+ clearError: () => setError(null),
+ error: error,
disableRowEdit,
editWidth,
enableDelete,
diff --git a/new-lamassu-admin/src/pages/Cashout/Cashout.js b/new-lamassu-admin/src/pages/Cashout/Cashout.js
index 87e99f4b..d9f6e477 100644
--- a/new-lamassu-admin/src/pages/Cashout/Cashout.js
+++ b/new-lamassu-admin/src/pages/Cashout/Cashout.js
@@ -48,18 +48,15 @@ const GET_INFO = gql`
const CashOut = ({ name: SCREEN_KEY }) => {
const classes = useStyles()
const [wizard, setWizard] = useState(false)
- const [error, setError] = useState(false)
const { data } = useQuery(GET_INFO)
- const [saveConfig] = useMutation(SAVE_CONFIG, {
+ const [saveConfig, { error }] = useMutation(SAVE_CONFIG, {
onCompleted: () => setWizard(false),
- onError: () => setError(true),
refetchQueries: () => ['getData']
})
const save = (rawConfig, accounts) => {
const config = toNamespace(SCREEN_KEY)(rawConfig)
- setError(false)
return saveConfig({ variables: { config, accounts } })
}
@@ -76,7 +73,7 @@ const CashOut = ({ name: SCREEN_KEY }) => {
return (
<>
-
+
Transaction fudge factor
{
!DenominationsSchema.isValidSync(it)}
@@ -112,6 +108,7 @@ const CashOut = ({ name: SCREEN_KEY }) => {
toggleWidth={109}
onToggle={onToggle}
save={save}
+ error={error?.message}
validationSchema={DenominationsSchema}
disableRowEdit={R.compose(R.not, R.path(['active']))}
elements={getElements(machines, locale)}
@@ -121,7 +118,7 @@ const CashOut = ({ name: SCREEN_KEY }) => {
machine={R.find(R.propEq('deviceId', wizard))(machines)}
onClose={() => setWizard(false)}
save={save}
- error={error}
+ error={error?.message}
locale={locale}
/>
)}
diff --git a/new-lamassu-admin/src/pages/Commissions/Commissions.js b/new-lamassu-admin/src/pages/Commissions/Commissions.js
index 9509715b..5cd9e0fc 100644
--- a/new-lamassu-admin/src/pages/Commissions/Commissions.js
+++ b/new-lamassu-admin/src/pages/Commissions/Commissions.js
@@ -41,7 +41,7 @@ const Commissions = ({ name: SCREEN_KEY }) => {
const [isEditingDefault, setEditingDefault] = useState(false)
const [isEditingOverrides, setEditingOverrides] = useState(false)
const { data } = useQuery(GET_DATA)
- const [saveConfig] = useMutation(SAVE_CONFIG, {
+ const [saveConfig, { error }] = useMutation(SAVE_CONFIG, {
refetchQueries: () => ['getData']
})
@@ -76,6 +76,7 @@ const Commissions = ({ name: SCREEN_KEY }) => {
{
const [cancelCryptoConfiguration, setCancelCryptoConfiguration] = useState(
null
)
- const [error, setError] = useState(false)
const [isEditingDefault, setEditingDefault] = useState(false)
const [isEditingOverrides, setEditingOverrides] = useState(false)
const { data } = useQuery(GET_DATA)
- const [saveConfig] = useMutation(SAVE_CONFIG, {
+ const [saveConfig, { error }] = useMutation(SAVE_CONFIG, {
onCompleted: () => setWizard(false),
- onError: () => setError(true),
refetchQueries: () => ['getData']
})
@@ -130,14 +128,14 @@ const Locales = ({ name: SCREEN_KEY }) => {
config.fiatCurrency &&
newConfig.locale_fiatCurrency !== config.fiatCurrency
)
- setDataToSave(newConfig)
- else save(newConfig)
+ return setDataToSave(newConfig)
+
+ return save(newConfig)
}
const save = config => {
setDataToSave(null)
- setError(false)
- saveConfig({ variables: { config } })
+ return saveConfig({ variables: { config } })
}
const saveOverrides = it => {
@@ -169,6 +167,7 @@ const Locales = ({ name: SCREEN_KEY }) => {
{
save(toNamespace(namespaces.WALLETS)(rawConfig))
setCancelCryptoConfiguration(null)
}}
- error={error}
+ error={error?.message}
cryptoCurrencies={cryptoCurrencies}
userAccounts={data?.config?.accounts}
accounts={accounts}
diff --git a/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js b/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js
index ff7bdf05..c56ca880 100644
--- a/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js
+++ b/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js
@@ -67,13 +67,8 @@ const CashCassettes = () => {
const { data } = useQuery(GET_MACHINES_AND_CONFIG)
- const [resetCashOut] = useMutation(RESET_CASHOUT_BILLS, {
- refetchQueries: () => ['getData'],
- onError: ({ graphQLErrors, message }) => {
- const errorMessage = graphQLErrors[0] ? graphQLErrors[0].message : message
- // TODO new-admin : this should not be final
- alert(JSON.stringify(errorMessage))
- }
+ const [resetCashOut, { error }] = useMutation(RESET_CASHOUT_BILLS, {
+ refetchQueries: () => ['getData']
})
const cashout = data?.config && fromNamespace('cashOut')(data.config)
@@ -145,6 +140,7 @@ const CashCassettes = () => {
{
const classes = useStyles()
const [wizard, setWizard] = useState(false)
- const [error, setError] = useState(false)
const { data, loading } = useQuery(GET_INFO)
const triggers = fromServer(data?.config?.triggers ?? [])
@@ -43,9 +42,8 @@ const Triggers = () => {
data?.config && fromNamespace('compliance')(data.config)
const rejectAddressReuse = complianceConfig?.rejectAddressReuse ?? false
- const [saveConfig] = useMutation(SAVE_CONFIG, {
+ const [saveConfig, { error }] = useMutation(SAVE_CONFIG, {
onCompleted: () => setWizard(false),
- onError: () => setError(true),
refetchQueries: () => ['getData']
})
@@ -53,7 +51,6 @@ const Triggers = () => {
const toSave = R.concat([{ id: v4(), direction: 'both', ...rawConfig }])(
triggers
)
- setError(false)
return saveConfig({ variables: { config: { triggers: toServer(toSave) } } })
}
@@ -63,7 +60,6 @@ const Triggers = () => {
}
const save = config => {
- setError(false)
return saveConfig({
variables: { config: { triggers: toServer(config.triggers) } }
})
@@ -121,6 +117,7 @@ const Triggers = () => {
sortBy={sortBy}
groupBy="triggerType"
enableDelete
+ error={error?.message}
save={save}
validationSchema={Schema}
elements={getElements(currency, classes)}
@@ -128,7 +125,7 @@ const Triggers = () => {
{wizard && (
setWizard(null)}
/>
diff --git a/new-lamassu-admin/src/pages/Wallet/Wallet.js b/new-lamassu-admin/src/pages/Wallet/Wallet.js
index c289ba17..5a03477e 100644
--- a/new-lamassu-admin/src/pages/Wallet/Wallet.js
+++ b/new-lamassu-admin/src/pages/Wallet/Wallet.js
@@ -49,12 +49,10 @@ const Wallet = ({ name: SCREEN_KEY }) => {
null
)
const [wizard, setWizard] = useState(false)
- const [error, setError] = useState(false)
const { data } = useQuery(GET_INFO)
- const [saveConfig] = useMutation(SAVE_CONFIG, {
+ const [saveConfig, { error }] = useMutation(SAVE_CONFIG, {
onCompleted: () => setWizard(false),
- onError: () => setError(true),
refetchQueries: () => ['getData']
})
@@ -65,7 +63,6 @@ const Wallet = ({ name: SCREEN_KEY }) => {
const save = (rawConfig, accounts) => {
const config = toNamespace(SCREEN_KEY)(rawConfig)
- setError(false)
return saveConfig({ variables: { config, accounts } })
}
@@ -90,11 +87,12 @@ const Wallet = ({ name: SCREEN_KEY }) => {
return (
<>
-
+
!WalletSchema.isValidSync(it)}
enableEdit
shouldOverrideEdit={shouldOverrideEdit}
@@ -113,7 +111,7 @@ const Wallet = ({ name: SCREEN_KEY }) => {
coin={R.find(R.propEq('code', wizard))(cryptoCurrencies)}
onClose={() => setWizard(false)}
save={save}
- error={error}
+ error={error?.message}
cryptoCurrencies={cryptoCurrencies}
userAccounts={data?.config?.accounts}
accounts={accounts}