Fixing integration with v2
Co-authored-by: sairaj mote <sairajmote3@gmail.com>
This commit is contained in:
parent
a20d2e9b09
commit
27a7f47247
208
index.html
208
index.html
@ -329,7 +329,6 @@
|
|||||||
async function renderHome(state) {
|
async function renderHome(state) {
|
||||||
getRef("page_header").classList.add("hidden");
|
getRef("page_header").classList.add("hidden");
|
||||||
let [data, latestTxs, latestBlocks] = await Promise.all([getBannerData(), getLatestTxs(), getAllBlocks(6)])
|
let [data, latestTxs, latestBlocks] = await Promise.all([getBannerData(), getLatestTxs(), getAllBlocks(6)])
|
||||||
console.log(latestTxs)
|
|
||||||
renderElem(getRef("page_container"), html`${render.homepage(data)}`);
|
renderElem(getRef("page_container"), html`${render.homepage(data)}`);
|
||||||
renderTransactions('top_transaction_container', latestTxs)
|
renderTransactions('top_transaction_container', latestTxs)
|
||||||
const renderedBlocks = latestBlocks.map(block => render.blockCard(block))
|
const renderedBlocks = latestBlocks.map(block => render.blockCard(block))
|
||||||
@ -877,10 +876,8 @@
|
|||||||
<div id=${hash} class="transaction token-transfer">
|
<div id=${hash} class="transaction token-transfer">
|
||||||
<svg class="icon" viewBox="0 0 64 64"> <title>transfer</title> <polyline points="17.04 35.97 14.57 33.5 40.15 7.9 32.75 0.5 55.52 0.5 55.52 23.28 48.12 15.87 23.86 40.14 15.88 48.13 8.48 40.72 8.48 63.5 31.25 63.5 23.85 56.1 49.43 30.5 46.96 28.03"/> </svg>
|
<svg class="icon" viewBox="0 0 64 64"> <title>transfer</title> <polyline points="17.04 35.97 14.57 33.5 40.15 7.9 32.75 0.5 55.52 0.5 55.52 23.28 48.12 15.87 23.86 40.14 15.88 48.13 8.48 40.72 8.48 63.5 31.25 63.5 23.85 56.1 49.43 30.5 46.96 28.03"/> </svg>
|
||||||
<div class="contract-type">
|
<div class="contract-type">
|
||||||
|
|
||||||
<h5 class="label">${title}</h5>
|
<h5 class="label">${title}</h5>
|
||||||
<a href=${`#/token/${token}`} class="">${token}</a>
|
<a href=${`#/token/${token}`} class="">${token}</a>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="contract-info">
|
<div class="contract-info">
|
||||||
<div class="flex flex-direction-column">
|
<div class="flex flex-direction-column">
|
||||||
@ -1042,7 +1039,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function renderTransactions(container, transactions = []) {
|
async function renderTransactions(container, transactions = []) {
|
||||||
let txFrag = getTxFrag(transactions);
|
let txFrag = parseTransactions(transactions);
|
||||||
const renderedTransactions = txFrag.map(tx => {
|
const renderedTransactions = txFrag.map(tx => {
|
||||||
switch (tx.type) {
|
switch (tx.type) {
|
||||||
case 'tokentransfer':
|
case 'tokentransfer':
|
||||||
@ -1064,7 +1061,6 @@
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
console.log(renderedTransactions)
|
|
||||||
renderElem(document.getElementById(container), html`${renderedTransactions.length ? renderedTransactions : html`<div class="no-results">No transactions found</div>`}`)
|
renderElem(document.getElementById(container), html`${renderedTransactions.length ? renderedTransactions : html`<div class="no-results">No transactions found</div>`}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1087,7 +1083,7 @@
|
|||||||
renderElem(getRef('suggestions'), html`${renderedSuggestions}`)
|
renderElem(getRef('suggestions'), html`${renderedSuggestions}`)
|
||||||
}, 100))
|
}, 100))
|
||||||
async function getBannerData() {
|
async function getBannerData() {
|
||||||
const { systemTransactionCount, systemAddressCount } = await fetchJson(`${tokenApiUrl}/api/v1.0/getSystemData`)
|
const { systemTransactionCount, systemAddressCount } = await fetchJson(`${tokenApiUrl}/api/v2/info`)
|
||||||
return {
|
return {
|
||||||
topToken: "RMT",
|
topToken: "RMT",
|
||||||
totalTransactions: systemTransactionCount,
|
totalTransactions: systemTransactionCount,
|
||||||
@ -1103,135 +1099,20 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getLatestTxs() {
|
function getLatestTxs() {
|
||||||
return fetchJson(`${tokenApiUrl}/api/v1.0/getLatestTransactionDetails?numberOfLatestBlocks=4`)
|
return new Promise((resolve,reject) => {
|
||||||
.then(function (latestTxs) {
|
fetchJson(`${tokenApiUrl}/api/v2/latestTransactionDetails?limit=4`)
|
||||||
let latestTxArray = [];
|
.then(function (latestTxs) {
|
||||||
for (const transactionKey in latestTxs.latestTransactions) {
|
resolve(latestTxs.latestTransactions)
|
||||||
const { transactionDetails: { txid, blockHeight, vin, vout }, parsedFloData: { type, tokenAmount, tokenIdentification, transferType, contractName, triggerCondition, userChoice,nftHash } } = latestTxs.latestTransactions[transactionKey];
|
}).catch((err) => {
|
||||||
// determine txhash and blockHeight
|
reject(err)
|
||||||
let obj = {
|
});
|
||||||
hash: txid,
|
})
|
||||||
blockHeight,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (type != "smartContractPays") {
|
|
||||||
// determine token
|
|
||||||
obj["token"] = tokenIdentification;
|
|
||||||
|
|
||||||
if (type == "transfer") {
|
|
||||||
if (transferType == "token" || transferType == "nft") {
|
|
||||||
// token transfer
|
|
||||||
/* tokenTransferCard
|
|
||||||
hash, blockHeight, token, sender, receiver, amount */
|
|
||||||
|
|
||||||
let receiverAddress = "";
|
|
||||||
for (const output of vout) {
|
|
||||||
if (output["scriptPubKey"]["addresses"][0] !== vin[0]["addr"]) {
|
|
||||||
receiverAddress = output["scriptPubKey"]["addresses"][0];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
obj = Object.assign({}, obj, {
|
|
||||||
sender: vin[0]["addr"],
|
|
||||||
receiver: receiverAddress,
|
|
||||||
amount: tokenAmount,
|
|
||||||
type: "tokentransfer",
|
|
||||||
});
|
|
||||||
latestTxArray.push(obj);
|
|
||||||
} else if (transferType === "smartContract") {
|
|
||||||
// smart contract transfer
|
|
||||||
let receiverAddress = "";
|
|
||||||
for (const output of vout) {
|
|
||||||
if (output["scriptPubKey"]["addresses"][0] != vin[0]["addr"]) {
|
|
||||||
receiverAddress = output["scriptPubKey"]["addresses"][0];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
obj = Object.assign({}, obj, {
|
|
||||||
sender: vin[0]["addr"],
|
|
||||||
receiver: receiverAddress,
|
|
||||||
amount: tokenAmount,
|
|
||||||
contractName: contractName,
|
|
||||||
userChoice: userChoice,
|
|
||||||
type: "contracttransfer",
|
|
||||||
});
|
|
||||||
latestTxArray.push(obj);
|
|
||||||
}
|
|
||||||
} else if (type === "smartContractIncorporation") {
|
|
||||||
// smart contract incorporation
|
|
||||||
// todo : add checks to determine obj for different types of smart contract incorporation
|
|
||||||
obj = Object.assign({}, obj, {
|
|
||||||
contractName: contractName,
|
|
||||||
incAddress: contractAddress,
|
|
||||||
contractType: contractType,
|
|
||||||
expiration: expiryTime,
|
|
||||||
participationFees: contractAmount,
|
|
||||||
availableChoices: "",
|
|
||||||
type: "contractincorp",
|
|
||||||
});
|
|
||||||
latestTxArray.push(obj);
|
|
||||||
} else if (type === "tokenIncorporation") {
|
|
||||||
// token incorporation
|
|
||||||
// smart contract incorporation
|
|
||||||
obj = Object.assign({}, obj, {
|
|
||||||
incAddress: vin[0]["addr"],
|
|
||||||
supply: tokenAmount,
|
|
||||||
type: "tokenincorp",
|
|
||||||
});
|
|
||||||
latestTxArray.push(obj);
|
|
||||||
} else if (type === "nftIncorporation") {
|
|
||||||
// token incorporation
|
|
||||||
// smart contract incorporation
|
|
||||||
obj = Object.assign({}, obj, {
|
|
||||||
incAddress: vin[0]["addr"],
|
|
||||||
supply: tokenAmount,
|
|
||||||
type,
|
|
||||||
nftHash,
|
|
||||||
});
|
|
||||||
latestTxArray.push(obj);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// smart contract committee trigger
|
|
||||||
// smart contract incorporation
|
|
||||||
let receiverAddress = "";
|
|
||||||
for (const output of vout) {
|
|
||||||
if (output["scriptPubKey"]["addresses"][0] != vin[0]["addr"]) {
|
|
||||||
receiverAddress = output["scriptPubKey"]["addresses"][0];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
obj = Object.assign({}, obj, {
|
|
||||||
contractName,
|
|
||||||
contractAddress: receiverAddress,
|
|
||||||
winningChoice: triggerCondition,
|
|
||||||
committeeAddress: vin[0]["addr"],
|
|
||||||
type: "contracttrigger",
|
|
||||||
});
|
|
||||||
latestTxArray.push(obj);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return latestTxArray;
|
|
||||||
}).catch((err) => {
|
|
||||||
console.log(err)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function getLatestBlocks() {
|
|
||||||
return fetchJson(
|
|
||||||
`${tokenApiUrl}/api/v1.0/getLatestBlockDetails?numberOfLatestBlocks=4`
|
|
||||||
)
|
|
||||||
.then(function (latestBlocks) {
|
|
||||||
let obj = {};
|
|
||||||
return obj;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTokenInfo(thisToken) {
|
function getTokenInfo(thisToken) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
fetchJson(
|
fetchJson(
|
||||||
`${tokenApiUrl}/api/v1.0/getTokenInfo?token=${thisToken.toLowerCase()}`
|
`${tokenApiUrl}/api/v2/tokenInfo/${thisToken.toLowerCase()}`
|
||||||
).then(function (tokenInfo) {
|
).then(function (tokenInfo) {
|
||||||
if (tokenInfo.result === "error")
|
if (tokenInfo.result === "error")
|
||||||
reject(tokenInfo.description);
|
reject(tokenInfo.description);
|
||||||
@ -1253,17 +1134,17 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function getTokenBalances(tokenName) {
|
async function getTokenBalances(tokenName) {
|
||||||
const tokenDetails = await fetchJson(`${tokenApiUrl}/api/v1.0/getTokenBalances?token=` + tokenName)
|
const tokenDetails = await fetchJson(`${tokenApiUrl}/api/v2/tokenBalances/` + tokenName)
|
||||||
return tokenDetails.balances
|
return tokenDetails.balances
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getTokenTransactions(tokenName) {
|
async function getTokenTransactions(tokenName) {
|
||||||
const transactions = await fetchJson(`${tokenApiUrl}/api/v1.0/getTokenTransactions?token=` + tokenName)
|
const transactions = await fetchJson(`${tokenApiUrl}/api/v2/tokenTransactions/` + tokenName)
|
||||||
return transactions.transactions
|
return transactions.transactions
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getBlockInfo(thisBlock) {
|
async function getBlockInfo(thisBlock) {
|
||||||
const info = await fetchJson(`${tokenApiUrl}/api/v1.0/getBlockDetails/${thisBlock}`);
|
const info = await fetchJson(`${tokenApiUrl}/api/v2/blockDetails/${thisBlock}`);
|
||||||
const { height, size, reward, hash, difficulty, nonce, tx } = info.blockDetails
|
const { height, size, reward, hash, difficulty, nonce, tx } = info.blockDetails
|
||||||
return {
|
return {
|
||||||
blockHeight: height,
|
blockHeight: height,
|
||||||
@ -1278,12 +1159,12 @@
|
|||||||
|
|
||||||
|
|
||||||
async function getBlockTransactions(thisBlock) {
|
async function getBlockTransactions(thisBlock) {
|
||||||
const blockTransactions = await fetchJson(`${tokenApiUrl}/api/v1.0/getBlockTransactions/${thisBlock}`)
|
const blockTransactions = await fetchJson(`${tokenApiUrl}/api/v2/blockTransactions/${thisBlock}`)
|
||||||
return blockTransactions.transactions
|
return blockTransactions.transactions
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getContractInfo(contract) {
|
async function getContractInfo(contract) {
|
||||||
const info = await fetchJson(`${tokenApiUrl}/api/v1.0/getSmartContractInfo?contractName=${contract.name}&contractAddress=${contract.address}`);
|
const info = await fetchJson(`${tokenApiUrl}/api/v2/smartContractInfo?contractName=${contract.name}&contractAddress=${contract.address}`);
|
||||||
console.log(info, contract)
|
console.log(info, contract)
|
||||||
const { contractInfo: { contractType, status, expiryTime, payeeAddress, userChoice, tokenIdentification, contractAmount, minimumsubscriptionamount, maximumsubscriptionamount }, contractAddress, contractName } = info
|
const { contractInfo: { contractType, status, expiryTime, payeeAddress, userChoice, tokenIdentification, contractAmount, minimumsubscriptionamount, maximumsubscriptionamount }, contractAddress, contractName } = info
|
||||||
return {
|
return {
|
||||||
@ -1302,27 +1183,29 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function getContractParticipants(contract) {
|
async function getContractParticipants(contract) {
|
||||||
const participants = await fetchJson(`${tokenApiUrl}/api/v1.0/getSmartContractParticipants?contractName=${contract.name}&contractAddress=${contract.address}`)
|
const participants = await fetchJson(`${tokenApiUrl}/api/v2/smartContractParticipants?contractName=${contract.name}&contractAddress=${contract.address}`)
|
||||||
return participants.participantInfo
|
return participants.participantInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getContractTransactions(contract) {
|
async function getContractTransactions(contract) {
|
||||||
const transactions = await fetchJson(`${tokenApiUrl}/api/v1.0/getSmartContractTransactions?contractName=${contract.name}&contractAddress=${contract.address}`)
|
const transactions = await fetchJson(`${tokenApiUrl}/api/v2/smartContractTransactions?contractName=${contract.name}&contractAddress=${contract.address}`)
|
||||||
return transactions.contractTransactions
|
return transactions.contractTransactions
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTxFrag(txList) {
|
function parseTransactions(txList) {
|
||||||
// Check if "txList" is array or object
|
|
||||||
if (Array.isArray(txList))
|
|
||||||
return txList;
|
|
||||||
// Object
|
|
||||||
let latestTxArray = [];
|
let latestTxArray = [];
|
||||||
for (const transactionKey in txList) {
|
txList.forEach(tx => {
|
||||||
console.log(transactionKey)
|
// console.log(transactionKey)
|
||||||
if(transactionKey == '11571ce7e5eed0bce30e24de89bb1ba6cc432df7b5b40bbc9f0225b98968cb47'){
|
// if(transactionKey == '11571ce7e5eed0bce30e24de89bb1ba6cc432df7b5b40bbc9f0225b98968cb47'){
|
||||||
//debugger
|
// //debugger
|
||||||
}
|
// }
|
||||||
const { transactionDetails: { txid, blockHeight, vin, vout }, parsedFloData: { contractAddress, contractType, expiryTime, contractAmount, type, tokenAmount, tokenIdentification, transferType, contractName, triggerCondition, userChoice,nftHash } } = txList[transactionKey];
|
const {
|
||||||
|
transactionDetails: {
|
||||||
|
txid, blockHeight, vin, vout },
|
||||||
|
parsedFloData: {
|
||||||
|
contractAddress, contractType, expiryTime, contractAmount, type, tokenAmount, tokenIdentification, transferType, contractName, triggerCondition, userChoice,nftHash
|
||||||
|
}
|
||||||
|
} = tx;
|
||||||
let obj = {
|
let obj = {
|
||||||
hash: txid,
|
hash: txid,
|
||||||
blockHeight,
|
blockHeight,
|
||||||
@ -1340,7 +1223,7 @@
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = Object.assign({}, obj, {
|
obj = Object.assign({}, obj, {
|
||||||
sender: vin[0]["addr"],
|
sender: vin[0]["addr"],
|
||||||
receiver: receiverAddress,
|
receiver: receiverAddress,
|
||||||
@ -1358,7 +1241,7 @@
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = Object.assign({}, obj, {
|
obj = Object.assign({}, obj, {
|
||||||
sender: vin[0]["addr"],
|
sender: vin[0]["addr"],
|
||||||
receiver: receiverAddress,
|
receiver: receiverAddress,
|
||||||
@ -1405,10 +1288,10 @@
|
|||||||
latestTxArray.push(obj);
|
latestTxArray.push(obj);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// transaction is a FLO Smart Contract Committee trigger
|
// transaction is a FLO Smart Contract Committee trigger
|
||||||
|
|
||||||
let receiver = "", sender = vin[0]['addr'];
|
let receiver = "", sender = vin[0]['addr'];
|
||||||
for (const output of vout) {
|
for (const output of vout) {
|
||||||
if (output["scriptPubKey"]["addresses"][0] !== vin[0]["addr"]) {
|
if (output["scriptPubKey"]["addresses"][0] !== vin[0]["addr"]) {
|
||||||
@ -1416,7 +1299,7 @@
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = Object.assign({}, obj, {
|
obj = Object.assign({}, obj, {
|
||||||
hash: txid,
|
hash: txid,
|
||||||
blockHeight,
|
blockHeight,
|
||||||
@ -1428,22 +1311,23 @@
|
|||||||
});
|
});
|
||||||
latestTxArray.push(obj);
|
latestTxArray.push(obj);
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
|
||||||
return latestTxArray;
|
return latestTxArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getAllBlocks(number) {
|
async function getAllBlocks(number) {
|
||||||
const allBlocks = await fetchJson(`${tokenApiUrl}/api/v1.0/getLatestBlockDetails${number ? `?limit=${number}` : ''}`)
|
const allBlocks = await fetchJson(`${tokenApiUrl}/api/v2/latestBlockDetails${number ? `?limit=${number}` : ''}`)
|
||||||
return Object.values(allBlocks.latestBlocks).sort((a, b) => b.height - a.height)
|
return Object.values(allBlocks.latestBlocks).sort((a, b) => b.height - a.height)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getAllTxs() {
|
async function getAllTxs() {
|
||||||
const allTxs = await fetchJson(`${tokenApiUrl}/api/v1.0/getLatestTransactionDetails?limit=200`)
|
const allTxs = await fetchJson(`${tokenApiUrl}/api/v2/latestTransactionDetails?limit=200`)
|
||||||
return allTxs.latestTransactions
|
return allTxs.latestTransactions
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getAddressInfo(floAddress) {
|
async function getAddressInfo(floAddress) {
|
||||||
const addressInfo = await fetchJson(`${tokenApiUrl}/api/v1.0/getFloAddressInfo?floAddress=${floAddress}`)
|
const addressInfo = await fetchJson(`${tokenApiUrl}/api/v2/floAddressInfo/${floAddress}`)
|
||||||
return addressInfo.floAddressBalances
|
return addressInfo.floAddressBalances
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1452,13 +1336,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function getAddressTxs(floAddress) {
|
async function getAddressTxs(floAddress) {
|
||||||
const transactions = await fetchJson(`${tokenApiUrl}/api/v1.0/getFloAddressTransactions?floAddress=${floAddress}`)
|
const transactions = await fetchJson(`${tokenApiUrl}/api/v2/floAddressTransactions/${floAddress}`)
|
||||||
return transactions.transactions
|
return transactions.transactions
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getTxInfo(thisTx) {
|
async function getTxInfo(thisTx) {
|
||||||
try {
|
try {
|
||||||
const transaction = await fetchJson(`${tokenApiUrl}/api/v1.0/getTransactionDetails/${thisTx}`)
|
const transaction = await fetchJson(`${tokenApiUrl}/api/v2/transactionDetails/${thisTx}`)
|
||||||
if (transaction.result === 'error') {
|
if (transaction.result === 'error') {
|
||||||
return [false, transaction.description]
|
return [false, transaction.description]
|
||||||
} else {
|
} else {
|
||||||
@ -1545,9 +1429,9 @@
|
|||||||
location.href = `#/contract/${text}`
|
location.href = `#/contract/${text}`
|
||||||
resolve('contract')
|
resolve('contract')
|
||||||
} else if (text.length == 64 && returnHexNumber(text)) {
|
} else if (text.length == 64 && returnHexNumber(text)) {
|
||||||
fetchJson(`${window.tokenApiUrl}/api/v1.0/categoriseString/` + text)
|
fetchJson(`${window.tokenApiUrl}/api/v2/categoriseString/` + text)
|
||||||
.then(function (myJson) {
|
.then(function (myJson) {
|
||||||
console.log(`${window.tokenApiUrl}/api/v1.0/categoriseString/` + text)
|
console.log(`${window.tokenApiUrl}/api/v2/categoriseString/` + text)
|
||||||
if (myJson['type'] == 'transaction') {
|
if (myJson['type'] == 'transaction') {
|
||||||
//console.log('data entered is a transaction hash');
|
//console.log('data entered is a transaction hash');
|
||||||
location.href = `#/transaction/${text}`
|
location.href = `#/transaction/${text}`
|
||||||
@ -1581,7 +1465,7 @@
|
|||||||
async function getAllSuggestions() {
|
async function getAllSuggestions() {
|
||||||
window.allSuggestions = [];
|
window.allSuggestions = [];
|
||||||
window.ranchimallFlo = {};
|
window.ranchimallFlo = {};
|
||||||
let { tokens, smartContracts } = await fetchJson(`${window.tokenApiUrl}/api/v1.0/getTokenSmartContractList`);
|
let { tokens, smartContracts } = await fetchJson(`${window.tokenApiUrl}/api/v2/tokenSmartContractList`);
|
||||||
//console.log('first line of the fetch result');
|
//console.log('first line of the fetch result');
|
||||||
ranchimallFlo.tokenList = tokens;
|
ranchimallFlo.tokenList = tokens;
|
||||||
ranchimallFlo.smartContractList = smartContracts;
|
ranchimallFlo.smartContractList = smartContracts;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user