Remove Destination as special field.
This commit is contained in:
@@ -52,7 +52,6 @@ const Transaction: FC<TransactionProps> = ({ header, state: txState, ...props })
|
|||||||
} = state
|
} = state
|
||||||
|
|
||||||
const TransactionType = selectedTransaction?.value || null
|
const TransactionType = selectedTransaction?.value || null
|
||||||
const Destination = selectedDestAccount?.value || txFields?.Destination
|
|
||||||
const Account = selectedAccount?.value || null
|
const Account = selectedAccount?.value || null
|
||||||
const Flags = combineFlags(selectedFlags?.map(flag => flag.value)) || txFields?.Flags
|
const Flags = combineFlags(selectedFlags?.map(flag => flag.value)) || txFields?.Flags
|
||||||
const HookParameters = Object.entries(hookParameters || {}).reduce<
|
const HookParameters = Object.entries(hookParameters || {}).reduce<
|
||||||
@@ -75,7 +74,6 @@ const Transaction: FC<TransactionProps> = ({ header, state: txState, ...props })
|
|||||||
HookParameters,
|
HookParameters,
|
||||||
Flags,
|
Flags,
|
||||||
TransactionType,
|
TransactionType,
|
||||||
Destination,
|
|
||||||
Account,
|
Account,
|
||||||
Memos
|
Memos
|
||||||
})
|
})
|
||||||
@@ -129,11 +127,6 @@ const Transaction: FC<TransactionProps> = ({ header, state: txState, ...props })
|
|||||||
}
|
}
|
||||||
const options = prepareOptions(st)
|
const options = prepareOptions(st)
|
||||||
|
|
||||||
const fields = getTxFields(options.TransactionType)
|
|
||||||
if (fields.Destination && !options.Destination) {
|
|
||||||
throw Error('Destination account is required!')
|
|
||||||
}
|
|
||||||
|
|
||||||
await sendTransaction(account, options, { logPrefix })
|
await sendTransaction(account, options, { logPrefix })
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error)
|
console.error(error)
|
||||||
@@ -167,13 +160,6 @@ const Transaction: FC<TransactionProps> = ({ header, state: txState, ...props })
|
|||||||
selectedTransaction: transactionType
|
selectedTransaction: transactionType
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fields.Destination !== undefined) {
|
|
||||||
nwState.selectedDestAccount = null
|
|
||||||
fields.Destination = ''
|
|
||||||
} else {
|
|
||||||
fields.Destination = undefined
|
|
||||||
}
|
|
||||||
|
|
||||||
if (transactionType?.value && transactionFlags[transactionType?.value] && fields.Flags) {
|
if (transactionType?.value && transactionFlags[transactionType?.value] && fields.Flags) {
|
||||||
nwState.selectedFlags = extractFlags(transactionType.value, fields.Flags)
|
nwState.selectedFlags = extractFlags(transactionType.value, fields.Flags)
|
||||||
fields.Flags = undefined
|
fields.Flags = undefined
|
||||||
|
|||||||
@@ -136,15 +136,7 @@ export const TxUI: FC<UIProps> = ({
|
|||||||
}
|
}
|
||||||
}, [handleChangeTxType, selectedTransaction?.value])
|
}, [handleChangeTxType, selectedTransaction?.value])
|
||||||
|
|
||||||
const fields = useMemo(
|
|
||||||
() => getTxFields(selectedTransaction?.value),
|
|
||||||
[selectedTransaction?.value]
|
|
||||||
)
|
|
||||||
|
|
||||||
const richFields = ['TransactionType', 'Account', 'HookParameters', 'Memos']
|
const richFields = ['TransactionType', 'Account', 'HookParameters', 'Memos']
|
||||||
if (fields.Destination !== undefined) {
|
|
||||||
richFields.push('Destination')
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flagsOptions.length) {
|
if (flagsOptions.length) {
|
||||||
richFields.push('Flags')
|
richFields.push('Flags')
|
||||||
@@ -192,18 +184,6 @@ export const TxUI: FC<UIProps> = ({
|
|||||||
<TxField label="Sequence">
|
<TxField label="Sequence">
|
||||||
<AccountSequence address={selectedAccount?.value} />
|
<AccountSequence address={selectedAccount?.value} />
|
||||||
</TxField>
|
</TxField>
|
||||||
{richFields.includes('Destination') && (
|
|
||||||
<TxField label="Destination account">
|
|
||||||
<Select
|
|
||||||
instanceId="to-account"
|
|
||||||
placeholder="Select the destination account"
|
|
||||||
options={destAccountOptions}
|
|
||||||
value={selectedDestAccount}
|
|
||||||
isClearable
|
|
||||||
onChange={(acc: any) => setState({ selectedDestAccount: acc })}
|
|
||||||
/>
|
|
||||||
</TxField>
|
|
||||||
)}
|
|
||||||
{richFields.includes('Flags') && (
|
{richFields.includes('Flags') && (
|
||||||
<TxField label="Flags">
|
<TxField label="Flags">
|
||||||
<Select
|
<Select
|
||||||
|
|||||||
@@ -2,7 +2,10 @@
|
|||||||
{
|
{
|
||||||
"TransactionType": "AccountDelete",
|
"TransactionType": "AccountDelete",
|
||||||
"Account": "rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm",
|
"Account": "rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm",
|
||||||
"Destination": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe",
|
"Destination": {
|
||||||
|
"$type": "account",
|
||||||
|
"$value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
|
||||||
|
},
|
||||||
"DestinationTag": 13,
|
"DestinationTag": 13,
|
||||||
"Fee": "2000000",
|
"Fee": "2000000",
|
||||||
"Sequence": 2470665,
|
"Sequence": 2470665,
|
||||||
@@ -40,7 +43,10 @@
|
|||||||
{
|
{
|
||||||
"TransactionType": "CheckCreate",
|
"TransactionType": "CheckCreate",
|
||||||
"Account": "rUn84CUYbNjRoTQ6mSW7BVJPSVJNLb1QLo",
|
"Account": "rUn84CUYbNjRoTQ6mSW7BVJPSVJNLb1QLo",
|
||||||
"Destination": "rfkE1aSy9G8Upk4JssnwBxhEv5p4mn2KTy",
|
"Destination": {
|
||||||
|
"$type": "account",
|
||||||
|
"$value": "rfkE1aSy9G8Upk4JssnwBxhEv5p4mn2KTy"
|
||||||
|
},
|
||||||
"SendMax": "100000000",
|
"SendMax": "100000000",
|
||||||
"Expiration": 570113521,
|
"Expiration": 570113521,
|
||||||
"InvoiceID": "6F1DFD1D0FE8A32E40E1F2C05CF1C15545BAB56B617F9C6C2D63A6B704BEF59B",
|
"InvoiceID": "6F1DFD1D0FE8A32E40E1F2C05CF1C15545BAB56B617F9C6C2D63A6B704BEF59B",
|
||||||
@@ -58,7 +64,10 @@
|
|||||||
{
|
{
|
||||||
"Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
|
"Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
|
||||||
"TransactionType": "EscrowCancel",
|
"TransactionType": "EscrowCancel",
|
||||||
"Owner": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
|
"Owner": {
|
||||||
|
"$type": "account",
|
||||||
|
"$value": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn"
|
||||||
|
},
|
||||||
"OfferSequence": 7,
|
"OfferSequence": 7,
|
||||||
"Fee": "10"
|
"Fee": "10"
|
||||||
},
|
},
|
||||||
@@ -69,7 +78,10 @@
|
|||||||
"$value": "100",
|
"$value": "100",
|
||||||
"$type": "amount.xrp"
|
"$type": "amount.xrp"
|
||||||
},
|
},
|
||||||
"Destination": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",
|
"Destination": {
|
||||||
|
"$type": "account",
|
||||||
|
"$value": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW"
|
||||||
|
},
|
||||||
"CancelAfter": 533257958,
|
"CancelAfter": 533257958,
|
||||||
"FinishAfter": 533171558,
|
"FinishAfter": 533171558,
|
||||||
"Condition": "A0258020E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855810100",
|
"Condition": "A0258020E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855810100",
|
||||||
@@ -80,7 +92,10 @@
|
|||||||
{
|
{
|
||||||
"Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
|
"Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
|
||||||
"TransactionType": "EscrowFinish",
|
"TransactionType": "EscrowFinish",
|
||||||
"Owner": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
|
"Owner": {
|
||||||
|
"$type": "account",
|
||||||
|
"$value": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn"
|
||||||
|
},
|
||||||
"OfferSequence": 7,
|
"OfferSequence": 7,
|
||||||
"Condition": "A0258020E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855810100",
|
"Condition": "A0258020E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855810100",
|
||||||
"Fulfillment": "A0028000",
|
"Fulfillment": "A0028000",
|
||||||
@@ -127,7 +142,10 @@
|
|||||||
"$type": "amount.xrp"
|
"$type": "amount.xrp"
|
||||||
},
|
},
|
||||||
"Flags": "1",
|
"Flags": "1",
|
||||||
"Destination": "",
|
"Destination": {
|
||||||
|
"$type": "account",
|
||||||
|
"$value": ""
|
||||||
|
},
|
||||||
"Fee": "10"
|
"Fee": "10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -162,7 +180,10 @@
|
|||||||
{
|
{
|
||||||
"TransactionType": "Payment",
|
"TransactionType": "Payment",
|
||||||
"Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
|
"Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
|
||||||
"Destination": "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX",
|
"Destination": {
|
||||||
|
"$type": "account",
|
||||||
|
"$value": "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX"
|
||||||
|
},
|
||||||
"Amount": {
|
"Amount": {
|
||||||
"$value": "100",
|
"$value": "100",
|
||||||
"$type": "amount.xrp"
|
"$type": "amount.xrp"
|
||||||
@@ -178,7 +199,10 @@
|
|||||||
"$value": "100",
|
"$value": "100",
|
||||||
"$type": "amount.xrp"
|
"$type": "amount.xrp"
|
||||||
},
|
},
|
||||||
"Destination": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",
|
"Destination": {
|
||||||
|
"$type": "account",
|
||||||
|
"$value": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW"
|
||||||
|
},
|
||||||
"SettleDelay": 86400,
|
"SettleDelay": 86400,
|
||||||
"PublicKey": "32D2471DB72B27E3310F355BB33E339BF26F8392D5A93D3BC0FC3B566612DA0F0A",
|
"PublicKey": "32D2471DB72B27E3310F355BB33E339BF26F8392D5A93D3BC0FC3B566612DA0F0A",
|
||||||
"CancelAfter": 533171558,
|
"CancelAfter": 533171558,
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ export type Memos = {
|
|||||||
export interface TransactionState {
|
export interface TransactionState {
|
||||||
selectedTransaction: SelectOption | null
|
selectedTransaction: SelectOption | null
|
||||||
selectedAccount: SelectOption | null
|
selectedAccount: SelectOption | null
|
||||||
selectedDestAccount: SelectOption | null
|
|
||||||
selectedFlags: SelectOption[] | null
|
selectedFlags: SelectOption[] | null
|
||||||
hookParameters: HookParameters
|
hookParameters: HookParameters
|
||||||
memos: Memos
|
memos: Memos
|
||||||
@@ -192,7 +191,7 @@ export const prepareState = (value: string, transactionType?: string) => {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const { Account, TransactionType, Destination, HookParameters, Memos, ...rest } = options
|
const { Account, TransactionType, HookParameters, Memos, ...rest } = options
|
||||||
let tx: Partial<TransactionState> = {}
|
let tx: Partial<TransactionState> = {}
|
||||||
const schema = getTxFields(transactionType)
|
const schema = getTxFields(transactionType)
|
||||||
|
|
||||||
@@ -238,24 +237,6 @@ export const prepareState = (value: string, transactionType?: string) => {
|
|||||||
}, {})
|
}, {})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (schema.Destination !== undefined) {
|
|
||||||
const dest = state.accounts.find(acc => acc.address === Destination)
|
|
||||||
if (dest) {
|
|
||||||
tx.selectedDestAccount = {
|
|
||||||
label: dest.name,
|
|
||||||
value: dest.address
|
|
||||||
}
|
|
||||||
} else if (Destination) {
|
|
||||||
tx.selectedDestAccount = {
|
|
||||||
label: Destination,
|
|
||||||
value: Destination
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
tx.selectedDestAccount = null
|
|
||||||
}
|
|
||||||
} else if (Destination) {
|
|
||||||
rest.Destination = Destination
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getFlags(TransactionType) && rest.Flags) {
|
if (getFlags(TransactionType) && rest.Flags) {
|
||||||
const flags = extractFlags(TransactionType, rest.Flags)
|
const flags = extractFlags(TransactionType, rest.Flags)
|
||||||
@@ -274,7 +255,7 @@ export const prepareState = (value: string, transactionType?: string) => {
|
|||||||
|
|
||||||
if (isAmount && ["number", "string"].includes(typeof value)) {
|
if (isAmount && ["number", "string"].includes(typeof value)) {
|
||||||
rest[field] = {
|
rest[field] = {
|
||||||
$type: 'amount.xrp', // Maybe have $type map or something
|
$type: 'amount.xrp', // TODO narrow typed $type.
|
||||||
$value: +value / 1000000 // ! maybe use bigint?
|
$value: +value / 1000000 // ! maybe use bigint?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user