mirror of
https://github.com/Qortal/qortal-ui.git
synced 2025-03-31 01:35:54 +00:00
193 lines
4.1 KiB
JavaScript
193 lines
4.1 KiB
JavaScript
import {store} from '../store.js'
|
|
import * as api from 'qortal-ui-crypto'
|
|
import snackbar from '../functional-components/snackbar.js'
|
|
|
|
const createTransaction = api.createTransaction
|
|
const processTransaction = api.processTransaction
|
|
const tradeBotCreateRequest = api.tradeBotCreateRequest
|
|
const tradeBotRespondRequest = api.tradeBotRespondRequest
|
|
const signTradeBotTxn = api.signTradeBotTxn
|
|
const deleteTradeOffer = api.deleteTradeOffer
|
|
const cancelAllOffers = api.cancelAllOffers
|
|
const sendCoin = async (coin, req) => {
|
|
let response
|
|
try {
|
|
const sendFn = api[`send${coin}`]
|
|
if (sendFn) {
|
|
response = await sendFn(req.data)
|
|
} else {
|
|
response = `Unsupported blockchain: ${coin}`
|
|
}
|
|
} catch (e) {
|
|
console.error(e)
|
|
console.error(e.message)
|
|
response = e.message
|
|
}
|
|
return response
|
|
}
|
|
|
|
export const routes = {
|
|
apiCall: async (req) => {
|
|
const url = req.data.url
|
|
delete req.data.url
|
|
return api.request(url, req.data)
|
|
},
|
|
|
|
transaction: async (req) => {
|
|
let response
|
|
try {
|
|
const tx = createTransaction(
|
|
req.data.type,
|
|
store.getState().app.wallet._addresses[req.data.nonce].keyPair,
|
|
req.data.params
|
|
)
|
|
|
|
if (!req.disableModal && !req.data.disableModal) {
|
|
await requestTransactionDialog.requestTransaction(tx)
|
|
}
|
|
|
|
const res = await processTransaction(tx.signedBytes)
|
|
let extraData = {}
|
|
if(req.data.type === 38 && tx && tx._rewardShareKeyPair && tx._rewardShareKeyPair.secretKey){
|
|
extraData.rewardSharePrivateKey = Base58.encode(tx._rewardShareKeyPair.secretKey)
|
|
}
|
|
|
|
|
|
response = {
|
|
success: true,
|
|
data: res,
|
|
extraData
|
|
}
|
|
} catch (e) {
|
|
console.error(e)
|
|
console.error(e.message)
|
|
response = {
|
|
success: false,
|
|
message: e.message,
|
|
}
|
|
}
|
|
return response
|
|
},
|
|
|
|
standaloneTransaction: async (req) => {
|
|
const rebuildUint8Array = (obj) => {
|
|
let _array = new Uint8Array(Object.keys(obj).length)
|
|
for (let i = 0; i < _array.byteLength; ++i) {
|
|
_array.set([obj[i]], i)
|
|
}
|
|
return _array
|
|
}
|
|
|
|
let response
|
|
try {
|
|
let _keyPair = {}
|
|
for (let _keyName in req.data.keyPair) {
|
|
_keyPair[_keyName] = rebuildUint8Array(
|
|
req.data.keyPair[_keyName]
|
|
)
|
|
}
|
|
const tx = createTransaction(
|
|
req.data.type,
|
|
_keyPair,
|
|
req.data.params
|
|
)
|
|
const res = await processTransaction(tx.signedBytes)
|
|
response = {
|
|
success: true,
|
|
data: res,
|
|
}
|
|
} catch (e) {
|
|
console.error(e)
|
|
console.error(e.message)
|
|
response = {
|
|
success: false,
|
|
message: e.message,
|
|
}
|
|
}
|
|
return response
|
|
},
|
|
|
|
showSnackBar: async (req) => {
|
|
snackbar.add({
|
|
labelText: req.data,
|
|
dismiss: true,
|
|
})
|
|
},
|
|
|
|
tradeBotCreateRequest: async (req) => {
|
|
let response
|
|
try {
|
|
const unsignedTxn = await tradeBotCreateRequest(req.data)
|
|
|
|
const signedTxnBytes = await signTradeBotTxn(
|
|
unsignedTxn,
|
|
store.getState().app.selectedAddress.keyPair
|
|
)
|
|
|
|
response = await processTransaction(signedTxnBytes)
|
|
} catch (e) {
|
|
console.error(e)
|
|
console.error(e.message)
|
|
response = e.message
|
|
}
|
|
return response
|
|
},
|
|
|
|
tradeBotRespondRequest: async (req) => {
|
|
let response
|
|
try {
|
|
response = await tradeBotRespondRequest(req.data)
|
|
} catch (e) {
|
|
console.error(e)
|
|
console.error(e.message)
|
|
response = e.message
|
|
}
|
|
return response
|
|
},
|
|
|
|
deleteTradeOffer: async (req) => {
|
|
let response
|
|
try {
|
|
const unsignedTxn = await deleteTradeOffer(req.data)
|
|
|
|
const signedTxnBytes = await signTradeBotTxn(
|
|
unsignedTxn,
|
|
store.getState().app.selectedAddress.keyPair
|
|
)
|
|
|
|
response = await processTransaction(signedTxnBytes)
|
|
} catch (e) {
|
|
console.error(e)
|
|
console.error(e.message)
|
|
response = e.message
|
|
}
|
|
return response
|
|
},
|
|
|
|
cancelAllOffers: async (req) => {
|
|
let response
|
|
try {
|
|
response = await cancelAllOffers(
|
|
store.getState().app.selectedAddress
|
|
)
|
|
} catch (e) {
|
|
console.error(e)
|
|
console.error(e.message)
|
|
response = e.message
|
|
}
|
|
return response
|
|
},
|
|
|
|
sendBtc: async (req) => sendCoin('Btc', req),
|
|
|
|
sendLtc: async (req) => sendCoin('Ltc', req),
|
|
|
|
sendDoge: async (req) => sendCoin('Doge', req),
|
|
|
|
sendDgb: async (req) => sendCoin('Dgb', req),
|
|
|
|
sendRvn: async (req) => sendCoin('Rvn', req),
|
|
|
|
sendArrr: async (req) => sendCoin('Arrr', req),
|
|
}
|