76 lines
1.7 KiB
JavaScript
76 lines
1.7 KiB
JavaScript
import swal from 'sweetalert2'
|
|
import { constants } from './constants'
|
|
|
|
var toAscii = hex => {
|
|
var str = '',
|
|
i = 0,
|
|
l = hex.length
|
|
if (hex.substring(0, 2) === '0x') {
|
|
i = 2
|
|
}
|
|
for (; i < l; i += 2) {
|
|
var code = parseInt(hex.substr(i, 2), 16)
|
|
if (code === 0) continue // this is added
|
|
str += String.fromCharCode(code)
|
|
}
|
|
return str
|
|
}
|
|
|
|
function sleep(ms) {
|
|
return new Promise(resolve => setTimeout(resolve, ms))
|
|
}
|
|
|
|
function sendTransactionByVotingKey(props, to, data, cb, warning) {
|
|
const { commonStore, contractsStore } = props
|
|
const web3 = contractsStore.web3Instance
|
|
|
|
web3.eth.sendTransaction(
|
|
{
|
|
from: contractsStore.votingKey,
|
|
to,
|
|
gasPrice: web3.utils.toWei('1', 'gwei'),
|
|
data
|
|
},
|
|
async (error, hash) => {
|
|
if (error) {
|
|
commonStore.hideLoading()
|
|
swal('Error!', error.message, 'error')
|
|
} else {
|
|
try {
|
|
let tx
|
|
do {
|
|
await sleep(constants.getTransactionReceiptInterval)
|
|
tx = await web3.eth.getTransactionReceipt(hash)
|
|
} while (tx === null)
|
|
|
|
commonStore.hideLoading()
|
|
if (tx.status === true || tx.status === '0x1') {
|
|
await cb(tx)
|
|
} else {
|
|
swal('Warning!', warning, 'warning')
|
|
}
|
|
} catch (e) {
|
|
commonStore.hideLoading()
|
|
swal('Error!', e.message, 'error')
|
|
}
|
|
}
|
|
}
|
|
)
|
|
}
|
|
|
|
function netIdByBranch(branch) {
|
|
const branchLowerCase = branch.toLowerCase()
|
|
for (let netId in constants.NETWORKS) {
|
|
if (constants.NETWORKS[netId].BRANCH.toLowerCase() === branchLowerCase) {
|
|
return netId
|
|
}
|
|
}
|
|
return null
|
|
}
|
|
|
|
module.exports = {
|
|
toAscii,
|
|
sendTransactionByVotingKey,
|
|
netIdByBranch
|
|
}
|