qortal-ui/qortal-ui-crypto/api/transactions/PaymentTransaction.js
2021-12-25 14:39:47 +01:00

97 lines
3.5 KiB
JavaScript

'use strict';
import TransactionBase from './TransactionBase.js'
// import { QORT_DECIMALS } from '../constants.js'
import Base58 from '../deps/Base58.js'
// import { store } from '../../store.js'
import { store } from '../../api.js'
export default class PaymentTransaction extends TransactionBase {
constructor() {
super()
this.type = 2
this.tests.push(
() => {
if (!(this._amount >= 0)) {
return 'Invalid amount ' + this._amount / store.getState().config.coin.decimals
}
return true
},
() => {
if (!(this._recipient instanceof Uint8Array && this._recipient.length == 25)) {
return 'Invalid recipient ' + Base58.encode(this._recipient)
}
return true
}
)
}
set recipient(recipient) { // Always Base58 encoded. Accepts Uint8Array or Base58 string.
this._recipient = recipient instanceof Uint8Array ? recipient : this.constructor.Base58.decode(recipient)
}
set amount(amount) {
// console.log('=====DECIMALS ', store.getState().config.coin.decimals)
// console.log("IINIT AMOUNT: ", amount);
this._amount = amount * store.getState().config.coin.decimals
this._amountBytes = this.constructor.utils.int64ToBytes(this._amount)
}
get params() {
const params = super.params
params.push(
this._recipient,
this._amountBytes,
this._feeBytes
)
return params
}
render(html) {
const conf = store.getState().config
// console.log(this)
return html`
<table>
<tr>
<th>To</th>
<td>${Base58.encode(this._recipient)}</td>
</tr>
<tr>
<th>Amount</th>
<td>${this._amount / conf.coin.decimals} ${conf.coin.symbol}</td>
</tr>
</table>
`
}
}
//
// import txTypes from "./txTypes.js"
// import nacl from "./deps/nacl-fast.js"
// import Utils from "./Utils.js"
//
// function generateSignaturePaymentTransaction(keyPair, lastReference, recipient, amount, fee, timestamp) => {
// const data = generatePaymentTransactionBase(keyPair.publicKey, lastReference, recipient, amount, fee, timestamp);
// return nacl.sign.detached(data, keyPair.privateKey);
// }
//
// function generatePaymentTransaction(keyPair, lastReference, recipient, amount, fee, timestamp, signature) => {
// return Utils.appendBuffer(generatePaymentTransactionBase(keyPair.publicKey, lastReference, recipient, amount, fee, timestamp),signature);
// }
//
// function generatePaymentTransactionBase(publicKey, lastReference, recipient, amount, fee, timestamp) => {
// const txType = txTypes.PAYMENT_TRANSACTION;
// const typeBytes = Utils.int32ToBytes(txType);
// const timestampBytes = Utils.int64ToBytes(timestamp);
// const amountBytes = Utils.int64ToBytes(amount * 100000000);
// const feeBytes = Utils.int64ToBytes(fee * 100000000);
//
// let data = new Uint8Array();
//
// data = Utils.appendBuffer(data, typeBytes);
// data = Utils.appendBuffer(data, timestampBytes);
// data = Utils.appendBuffer(data, lastReference);
// data = Utils.appendBuffer(data, publicKey);
// data = Utils.appendBuffer(data, recipient);
// data = Utils.appendBuffer(data, amountBytes);
// data = Utils.appendBuffer(data, feeBytes);
//
// return data;
// }