Add memos field in transactions.
This commit is contained in:
@@ -47,7 +47,8 @@ const Transaction: FC<TransactionProps> = ({ header, state: txState, ...props })
|
||||
selectedAccount,
|
||||
txFields,
|
||||
selectedFlags,
|
||||
hookParameters
|
||||
hookParameters,
|
||||
memos
|
||||
} = state
|
||||
|
||||
const TransactionType = selectedTransaction?.value || null
|
||||
@@ -61,6 +62,13 @@ const Transaction: FC<TransactionProps> = ({ header, state: txState, ...props })
|
||||
HookParameter: { HookParameterName: toHex(label), HookParameterValue: toHex(value) }
|
||||
})
|
||||
}, [])
|
||||
const Memos = memos
|
||||
? Object.entries(memos).reduce<SetHookData['Memos']>((acc, [_, { format, data, type }]) => {
|
||||
return acc?.concat({
|
||||
Memo: { MemoData: toHex(data), MemoFormat: toHex(format), MemoType: toHex(type) }
|
||||
})
|
||||
}, [])
|
||||
: undefined
|
||||
|
||||
return prepareTransaction({
|
||||
...txFields,
|
||||
@@ -68,7 +76,8 @@ const Transaction: FC<TransactionProps> = ({ header, state: txState, ...props })
|
||||
Flags,
|
||||
TransactionType,
|
||||
Destination,
|
||||
Account
|
||||
Account,
|
||||
Memos
|
||||
})
|
||||
},
|
||||
[txState]
|
||||
|
||||
@@ -35,7 +35,8 @@ export const TxUI: FC<UIProps> = ({ state: txState, setState, resetState, estima
|
||||
selectedTransaction,
|
||||
txFields,
|
||||
selectedFlags,
|
||||
hookParameters
|
||||
hookParameters,
|
||||
memos
|
||||
} = txState
|
||||
|
||||
const accountOptions: SelectOption[] = accounts.map(acc => ({
|
||||
@@ -117,7 +118,7 @@ export const TxUI: FC<UIProps> = ({ state: txState, setState, resetState, estima
|
||||
[selectedTransaction?.value]
|
||||
)
|
||||
|
||||
const richFields = ['TransactionType', 'Account', 'HookParameters']
|
||||
const richFields = ['TransactionType', 'Account', 'HookParameters', 'Memos']
|
||||
if (fields.Destination !== undefined) {
|
||||
richFields.push('Destination')
|
||||
}
|
||||
@@ -333,6 +334,73 @@ export const TxUI: FC<UIProps> = ({ state: txState, setState, resetState, estima
|
||||
</Button>
|
||||
</Flex>
|
||||
</TxField>
|
||||
<TxField multiLine label="Memos">
|
||||
<Flex column fluid>
|
||||
{Object.entries(memos).map(([id, memo]) => (
|
||||
<Flex column key={id} css={{ mb: '$2' }}>
|
||||
<Input
|
||||
placeholder="Memo type"
|
||||
value={memo.type}
|
||||
onChange={e => {
|
||||
setState({
|
||||
memos: {
|
||||
...memos,
|
||||
[id]: { ...memo, type: e.target.value }
|
||||
}
|
||||
})
|
||||
}}
|
||||
/>
|
||||
<Input
|
||||
placeholder="Memo data"
|
||||
value={memo.data}
|
||||
onChange={e => {
|
||||
setState({
|
||||
memos: {
|
||||
...memos,
|
||||
[id]: { ...memo, data: e.target.value }
|
||||
}
|
||||
})
|
||||
}}
|
||||
/>
|
||||
<Input
|
||||
placeholder="Memo format"
|
||||
value={memo.format}
|
||||
onChange={e => {
|
||||
setState({
|
||||
memos: {
|
||||
...memos,
|
||||
[id]: { ...memo, format: e.target.value }
|
||||
}
|
||||
})
|
||||
}}
|
||||
/>
|
||||
<Button
|
||||
onClick={() => {
|
||||
const { [id]: _, ...rest } = memos
|
||||
setState({ memos: rest })
|
||||
}}
|
||||
variant="destroy"
|
||||
>
|
||||
<Trash weight="regular" size="16px" />
|
||||
</Button>
|
||||
</Flex>
|
||||
))}
|
||||
<Button
|
||||
outline
|
||||
fullWidth
|
||||
type="button"
|
||||
onClick={() => {
|
||||
const id = Object.keys(memos).length
|
||||
setState({
|
||||
memos: { ...memos, [id]: { data: '', format: '', type: '' } }
|
||||
})
|
||||
}}
|
||||
>
|
||||
<Plus size="16px" />
|
||||
Add Memo
|
||||
</Button>
|
||||
</Flex>
|
||||
</TxField>
|
||||
</Flex>
|
||||
</Container>
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user