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-chip value="custom">Custom</sm-chip>
|
||||||
</sm-chips>
|
</sm-chips>
|
||||||
</div>
|
</div>
|
||||||
<div id="fees_wrapper" class="grid gap-0-5 align-center">
|
<div id="fees_wrapper" class="grid gap-0-5 align-center"></div>
|
||||||
<b id="recommended_fee"></b>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div id="error_section"></div>
|
<div id="error_section"></div>
|
||||||
<div class="multi-state-button margin-bottom-1-5">
|
<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;
|
const { block, time, size, fee, inputs, outputs, confirmations, total_input_value, total_output_value } = result;
|
||||||
|
|
||||||
console.debug('tx', result);
|
console.debug('tx', result);
|
||||||
renderElem(getRef('tx_details'), html`
|
renderElem(getRef('tx_details'), html`
|
||||||
<table class="margin-bottom-1-5 justify-self-center">
|
<table class="margin-bottom-1-5 justify-self-center">
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
@ -1510,7 +1508,21 @@
|
|||||||
renderElem(getRef('error_section'), html``)
|
renderElem(getRef('error_section'), html``)
|
||||||
break;
|
break;
|
||||||
case 'suggested':
|
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')
|
getRef('fees_section').classList.remove('hidden')
|
||||||
renderElem(getRef('error_section'), html``)
|
renderElem(getRef('error_section'), html``)
|
||||||
break;
|
break;
|
||||||
@ -1527,12 +1539,24 @@
|
|||||||
console.debug(senders, receivers, amounts); //for automatic fee calc, set fee = null
|
console.debug(senders, receivers, amounts); //for automatic fee calc, set fee = null
|
||||||
return [senders, privKeys, receivers, amounts]
|
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) => {
|
return new Promise((resolve, reject) => {
|
||||||
renderElem(getRef('fees_wrapper'), html`<sm-spinner></sm-spinner>`)
|
renderElem(getRef('fees_wrapper'), html`<sm-spinner></sm-spinner>`)
|
||||||
const [senders, privKeys, receivers, amounts] = getTransactionInputs();
|
const [senders, privKeys, receivers, amounts] = getTransactionInputs();
|
||||||
btcOperator.createSignedTx(senders, privKeys, receivers, amounts).then(({ fee }) => {
|
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('send_transaction').disabled = false;
|
||||||
getRef('fees_section').classList.remove('hidden')
|
getRef('fees_section').classList.remove('hidden')
|
||||||
getRef('error_section').classList.add('hidden')
|
getRef('error_section').classList.add('hidden')
|
||||||
@ -1562,8 +1586,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
getRef('send_tx').addEventListener('valid', debounce(e => {
|
getRef('send_tx').addEventListener('valid', debounce(e => {
|
||||||
|
console.debug('valid', e.target.isFormValid)
|
||||||
if (getRef('fees_selector').value === 'suggested') {
|
if (getRef('fees_selector').value === 'suggested') {
|
||||||
calculateFees()
|
calculateExactFee()
|
||||||
} else {
|
} else {
|
||||||
getRef('fees_section').classList.remove('hidden')
|
getRef('fees_section').classList.remove('hidden')
|
||||||
getRef('error_section').classList.add('hidden')
|
getRef('error_section').classList.add('hidden')
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user