Added approx. transaction fees
This commit is contained in:
parent
1dc6a4c9fc
commit
917a797a0c
File diff suppressed because one or more lines are too long
41
index.html
41
index.html
@ -158,9 +158,7 @@
|
||||
<sm-chip value="custom">Custom</sm-chip>
|
||||
</sm-chips>
|
||||
</div>
|
||||
<div id="fees_wrapper" class="grid gap-0-5 align-center">
|
||||
<b id="recommended_fee"></b>
|
||||
</div>
|
||||
<div id="fees_wrapper" class="grid gap-0-5 align-center"></div>
|
||||
</div>
|
||||
<div id="error_section"></div>
|
||||
<div class="multi-state-button margin-bottom-1-5">
|
||||
@ -1178,7 +1176,7 @@
|
||||
const { block, time, size, fee, inputs, outputs, confirmations, total_input_value, total_output_value } = result;
|
||||
|
||||
console.debug('tx', result);
|
||||
renderElem(getRef('tx_details'), html`
|
||||
renderElem(getRef('tx_details'), html`
|
||||
<table class="margin-bottom-1-5 justify-self-center">
|
||||
<tbody>
|
||||
<tr>
|
||||
@ -1510,7 +1508,21 @@
|
||||
renderElem(getRef('error_section'), html``)
|
||||
break;
|
||||
case 'suggested':
|
||||
renderElem(getRef('fees_wrapper'), html` <b id="recommended_fee"></b> `)
|
||||
renderElem(getRef('fees_wrapper'), html`<sm-spinner></sm-spinner>`)
|
||||
if (getRef('send_tx').isFormValid) {
|
||||
calculateExactFee()
|
||||
} else {
|
||||
calculateApproxFee().then(fees => {
|
||||
renderElem(getRef('fees_wrapper'), html`
|
||||
<div class="grid gap-0-3">
|
||||
<div>
|
||||
Approximate fee: <b id="recommended_fee" class="amount-shown" data-btc-amount=${fees}>${formatAmount(getConvertedAmount(fees))}</b>
|
||||
</div>
|
||||
<p style="opacity: 0.8;">*Exact fee will be calculated after you fill all the required fields</p>
|
||||
</div>
|
||||
`)
|
||||
})
|
||||
}
|
||||
getRef('fees_section').classList.remove('hidden')
|
||||
renderElem(getRef('error_section'), html``)
|
||||
break;
|
||||
@ -1527,12 +1539,24 @@
|
||||
console.debug(senders, receivers, amounts); //for automatic fee calc, set fee = null
|
||||
return [senders, privKeys, receivers, amounts]
|
||||
}
|
||||
function calculateFees() {
|
||||
function calculateApproxFee() {
|
||||
return new Promise((resolve, reject) => {
|
||||
fetch('https://bitcoiner.live/api/fees/estimates/latest').then(res => res.json()).then(data => {
|
||||
const satPerByte = data.estimates['60'].sat_per_vbyte;
|
||||
const legacyBytes = 200;
|
||||
const segwitBytes = 77;
|
||||
resolve((legacyBytes * satPerByte + (0.25 * satPerByte) * segwitBytes) / Math.pow(10, 8));
|
||||
}).catch(e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
}
|
||||
function calculateExactFee() {
|
||||
return new Promise((resolve, reject) => {
|
||||
renderElem(getRef('fees_wrapper'), html`<sm-spinner></sm-spinner>`)
|
||||
const [senders, privKeys, receivers, amounts] = getTransactionInputs();
|
||||
btcOperator.createSignedTx(senders, privKeys, receivers, amounts).then(({ fee }) => {
|
||||
renderElem(getRef('fees_wrapper'), html` <b id="recommended_fee">${formatAmount(getConvertedAmount(fee))}</b> `)
|
||||
renderElem(getRef('fees_wrapper'), html` <b id="recommended_fee" class="amount-shown" data-btc-amount=${fee}>${formatAmount(getConvertedAmount(fee))}</b> `)
|
||||
getRef('send_transaction').disabled = false;
|
||||
getRef('fees_section').classList.remove('hidden')
|
||||
getRef('error_section').classList.add('hidden')
|
||||
@ -1562,8 +1586,9 @@
|
||||
}
|
||||
|
||||
getRef('send_tx').addEventListener('valid', debounce(e => {
|
||||
console.debug('valid', e.target.isFormValid)
|
||||
if (getRef('fees_selector').value === 'suggested') {
|
||||
calculateFees()
|
||||
calculateExactFee()
|
||||
} else {
|
||||
getRef('fees_section').classList.remove('hidden')
|
||||
getRef('error_section').classList.add('hidden')
|
||||
|
||||
Loading…
Reference in New Issue
Block a user