Bug fix
-- fixed BTC multisig fee calculation issue
This commit is contained in:
parent
581f9f359a
commit
93cb30db01
73
index.html
73
index.html
@ -4907,14 +4907,14 @@
|
|||||||
function handleFeeSelector(e) {
|
function handleFeeSelector(e) {
|
||||||
switch (e.target.value) {
|
switch (e.target.value) {
|
||||||
case 'custom':
|
case 'custom':
|
||||||
getRef('send_fee').readOnly = false;
|
$('#send_fee').readOnly = false;
|
||||||
getRef('send_fee').placeholder = 'Fee';
|
$('#send_fee').placeholder = 'Fee';
|
||||||
renderElem(getRef('selected_fee_tip'), html`Set custom fee`)
|
renderElem($('#selected_fee_tip'), html`Set custom fee`)
|
||||||
feeMemo.memoized = false;
|
feeMemo.memoized = false;
|
||||||
break;
|
break;
|
||||||
case 'suggested':
|
case 'suggested':
|
||||||
calculateFees();
|
calculateFees();
|
||||||
getRef('send_fee').readOnly = true;
|
$('#send_fee').readOnly = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4937,50 +4937,53 @@
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
async function calculateBtcFees() {
|
async function calculateBtcFees() {
|
||||||
const [senders, privKeys, receivers, amounts] = await getTransactionInputs().catch(e => {
|
const [sender, receivers, amounts, redeemScript] = await getTransactionInputs().catch(e => {
|
||||||
console.error(e)
|
console.error(e)
|
||||||
return
|
return
|
||||||
});
|
});
|
||||||
// if (!senders.length || !privKeys.length || !receivers.length || !amounts.length) return;
|
return btcOperator.createMultiSigTx(sender, redeemScript, receivers, amounts)
|
||||||
return btcOperator.createSignedTx(senders, privKeys, receivers, amounts)
|
|
||||||
}
|
}
|
||||||
async function getTransactionInputs() {
|
async function getTransactionInputs() {
|
||||||
const privateKey = await floDapps.user.private.catch(err => console.error(err));
|
try {
|
||||||
const privKeys = btcOperator.convert.wif(privateKey);
|
const sender = getRef('selected_multisig').textContent;
|
||||||
const senders = floGlobals.myBtcID;
|
const receivers = [...getRef('receiver_container').querySelectorAll('.receiver-input')].filter(input => input.value.trim() !== '').map(input => input.value.trim());
|
||||||
const receivers = [...getRef('receiver_container').querySelectorAll('.receiver-input')].filter(input => input.value.trim() !== '').map(input => input.value.trim());
|
const amounts = [...getRef('receiver_container').querySelectorAll('.amount-input')].filter(input => input.value.trim() !== '').map(input => {
|
||||||
const amounts = [...getRef('receiver_container').querySelectorAll('.amount-input')].filter(input => input.value.trim() !== '').map(input => {
|
return parseFloat(input.value.trim())
|
||||||
return parseFloat(input.value.trim())
|
});
|
||||||
});
|
const multisigList = await messenger.multisig.listAddress()
|
||||||
return [senders, privKeys, receivers, amounts]
|
const redeemScript = multisigList[sender].redeemScript;
|
||||||
|
return [sender, receivers, amounts, redeemScript]
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
let feeMemo = {
|
let feeMemo = {
|
||||||
memoized: false,
|
memoized: false,
|
||||||
memoizedFee: 0
|
memoizedFee: 0
|
||||||
};
|
};
|
||||||
function calculateFees() {
|
function calculateFees() {
|
||||||
if (getRef('fees_selector').value === 'custom') return;
|
if ($('#fees_selector').value === 'custom') return;
|
||||||
if (getRef('receiver_container').children.length === 0) return;
|
if (getRef('receiver_container').children.length === 0) return;
|
||||||
const allValid = [...getRef('receiver_container').querySelectorAll('sm-input')].every(input => input.isValid)
|
const allValid = [...getRef('receiver_container').querySelectorAll('sm-input')].every(input => input.isValid)
|
||||||
if (!allValid && feeMemo.memoized) return;
|
if (!allValid && feeMemo.memoized) return;
|
||||||
getRef('fees_selector').children[0].click();
|
$('#fees_selector').children[0].click();
|
||||||
getRef('fees_selector').classList.remove('hidden')
|
$('#fees_selector').classList.remove('hidden')
|
||||||
getRef('initiate_transaction').disabled = true;
|
getRef('initiate_transaction').disabled = true;
|
||||||
getRef('send_fee').value = '';
|
$('#send_fee').value = '';
|
||||||
getRef('send_fee_loader').classList.remove('hidden')
|
$('#send_fee_loader').classList.remove('hidden')
|
||||||
const animOptions = {
|
const animOptions = {
|
||||||
duration: 200,
|
duration: 200,
|
||||||
easing: 'ease',
|
easing: 'ease',
|
||||||
fill: 'forwards'
|
fill: 'forwards'
|
||||||
}
|
}
|
||||||
getRef('send_fee_loader').animate(fadeIn, animOptions)
|
$('#send_fee_loader').animate(fadeIn, animOptions)
|
||||||
getRef('fees_section').classList.remove('hidden')
|
getRef('fees_section').classList.remove('hidden')
|
||||||
getRef('error_section').classList.add('hidden')
|
getRef('error_section').classList.add('hidden')
|
||||||
if (allValid) {
|
if (allValid) {
|
||||||
getRef('send_fee').placeholder = 'Fee'
|
$('#send_fee').placeholder = 'Fee'
|
||||||
calculateBtcFees().then(({ fee }) => {
|
calculateBtcFees().then(({ fee }) => {
|
||||||
getRef('send_fee').value = fee.toFixed(8);
|
$('#send_fee').value = fee.toFixed(8);
|
||||||
renderElem(getRef('selected_fee_tip'), html``)
|
renderElem($('#selected_fee_tip'), html``)
|
||||||
getRef('initiate_transaction').disabled = false;
|
getRef('initiate_transaction').disabled = false;
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
getRef('fees_section').classList.add('hidden')
|
getRef('fees_section').classList.add('hidden')
|
||||||
@ -4993,27 +4996,27 @@
|
|||||||
`)
|
`)
|
||||||
console.error(e)
|
console.error(e)
|
||||||
}).finally(_ => {
|
}).finally(_ => {
|
||||||
getRef('send_fee_loader').animate(fadeOut, animOptions).onfinish = _ =>
|
$('#send_fee_loader').animate(fadeOut, animOptions).onfinish = _ =>
|
||||||
getRef('send_fee_loader').classList.add('hidden')
|
$('#send_fee_loader').classList.add('hidden')
|
||||||
|
|
||||||
})
|
})
|
||||||
feeMemo.memoized = false;
|
feeMemo.memoized = false;
|
||||||
} else {
|
} else {
|
||||||
getRef('send_fee').placeholder = 'Approximate fee'
|
$('#send_fee').placeholder = 'Approximate fee'
|
||||||
renderElem(getRef('selected_fee_tip'), html` <p style="opacity: 0.8;">*Fill out all fields for exact fee!</p> `)
|
renderElem($('#selected_fee_tip'), html` <p style="opacity: 0.8;">*Fill out all fields for exact fee!</p> `)
|
||||||
if (feeMemo.memoized) {
|
if (feeMemo.memoized) {
|
||||||
getRef('send_fee').value = feeMemo.memoizedFee.toFixed(8);
|
$('#send_fee').value = feeMemo.memoizedFee.toFixed(8);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
calculateApproxFee().then(fee => {
|
calculateApproxFee().then(fee => {
|
||||||
getRef('send_fee').value = fee.toFixed(8);
|
$('#send_fee').value = fee.toFixed(8);
|
||||||
feeMemo.memoizedFee = fee;
|
feeMemo.memoizedFee = fee;
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
getRef('fees_selector').children[1].click();
|
$('#fees_selector').children[1].click();
|
||||||
getRef('fees_selector').classList.add('hidden')
|
$('#fees_selector').classList.add('hidden')
|
||||||
}).finally(_ => {
|
}).finally(_ => {
|
||||||
getRef('send_fee_loader').animate(fadeOut, animOptions).onfinish = _ =>
|
$('#send_fee_loader').animate(fadeOut, animOptions).onfinish = _ =>
|
||||||
getRef('send_fee_loader').classList.add('hidden')
|
$('#send_fee_loader').classList.add('hidden')
|
||||||
})
|
})
|
||||||
feeMemo.memoized = true;
|
feeMemo.memoized = true;
|
||||||
}
|
}
|
||||||
@ -5032,7 +5035,7 @@
|
|||||||
const { redeemScript } = allMultiSigs[selectedMultisigAddress]
|
const { redeemScript } = allMultiSigs[selectedMultisigAddress]
|
||||||
let result
|
let result
|
||||||
if (multisigMode === 'btc') {
|
if (multisigMode === 'btc') {
|
||||||
const fee = parseFloat(getRef('send_fee').value.trim());
|
const fee = parseFloat($('#send_fee').value.trim());
|
||||||
console.debug(selectedMultisigAddress, receivers, amounts, fee);
|
console.debug(selectedMultisigAddress, receivers, amounts, fee);
|
||||||
result = await messenger.multisig.createTx_BTC(selectedMultisigAddress, redeemScript, receivers, amounts, fee)
|
result = await messenger.multisig.createTx_BTC(selectedMultisigAddress, redeemScript, receivers, amounts, fee)
|
||||||
} else if (multisigMode === 'flo') {
|
} else if (multisigMode === 'flo') {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user