Fix: Don't remove fields in JSON mode if empty.

This commit is contained in:
muzam1l
2023-03-23 16:26:29 +05:30
parent 025eff6cf2
commit 8a5b83d57f
3 changed files with 12 additions and 14 deletions

View File

@@ -43,7 +43,6 @@ const Transaction: FC<TransactionProps> = ({ header, state: txState, ...props })
(state: Partial<TransactionState> = txState) => {
const {
selectedTransaction,
selectedDestAccount,
selectedAccount,
txFields,
selectedFlags,
@@ -126,6 +125,12 @@ const Transaction: FC<TransactionProps> = ({ header, state: txState, ...props })
throw Error('Account must be selected from imported accounts!')
}
const options = prepareOptions(st)
// delete unnecessary fields
Object.keys(options).forEach(field => {
if (!options[field]) {
delete options[field]
}
})
await sendTransaction(account, options, { logPrefix })
} catch (error) {

View File

@@ -1,4 +1,4 @@
import { FC, ReactNode, useCallback, useEffect, useMemo, useState } from 'react'
import { FC, ReactNode, useCallback, useEffect, useState } from 'react'
import Container from '../Container'
import Flex from '../Flex'
import Input from '../Input'
@@ -9,7 +9,6 @@ import {
TransactionState,
transactionsOptions,
TxFields,
getTxFields,
defaultTransactionType
} from '../../state/transactions'
import { useSnapshot } from 'valtio'
@@ -295,6 +294,7 @@ export const TxUI: FC<UIProps> = ({
return (
<TxField key={field} label={field}>
<Select
isClearable
instanceId={field}
placeholder={`Select ${field} account`}
options={accountOptions}
@@ -302,7 +302,7 @@ export const TxUI: FC<UIProps> = ({
value,
label
}}
onChange={(acc: any) => handleSetField(field, acc.value)}
onChange={(acc: any) => handleSetField(field, acc?.value)}
/>
</TxField>
)

View File

@@ -141,7 +141,7 @@ export const prepareTransaction = (data: any) => {
if (_value.$value) {
options[field] = (+(_value as any).$value * 1000000 + '')
} else {
options[field] = undefined
options[field] = ""
}
}
// amount.token
@@ -156,7 +156,7 @@ export const prepareTransaction = (data: any) => {
}
// account
if (_value.$type === 'account') {
options[field] = _value.$value?.toString();
options[field] = _value.$value?.toString() || ""
}
// json
if (_value.$type === 'json') {
@@ -172,13 +172,6 @@ export const prepareTransaction = (data: any) => {
}
})
// delete unnecessary fields
Object.keys(options).forEach(field => {
if (!options[field]) {
delete options[field]
}
})
return options
}
@@ -269,7 +262,7 @@ export const prepareState = (value: string, transactionType?: string) => {
} else if (isAccount) {
rest[field] = {
$type: "account",
$value: value?.toString()
$value: value?.toString() || ""
}
}
else if (typeof value === 'object') {