Merge pull request #4 from vivekteega/master

Pushing code compatible with v2 of the API
This commit is contained in:
Vivek Teega 2023-04-09 20:32:00 +05:30 committed by GitHub
commit a45b79fce1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 3614 additions and 171 deletions

View File

@ -981,6 +981,9 @@ p {
border-radius: 1rem;
background: rgba(var(--text-color), 0.1);
}
.transaction time {
font-size: 0.9rem;
}
#loading {
position: fixed;

2
css/main.min.css vendored

File diff suppressed because one or more lines are too long

View File

@ -894,6 +894,9 @@ p {
border-radius: 1rem;
background: rgba(var(--text-color), 0.1);
}
time {
font-size: 0.9rem;
}
}
#loading {
position: fixed;

View File

@ -60,8 +60,8 @@
<!-- Set urls for token and flo Apis -->
<script>
let floGlobals = {}
tokenApiUrl = 'https://ranchimallflo.duckdns.org'
floApiUrl = 'https://flosight.duckdns.org'
tokenApiUrl = 'https://ranchimallflov2.ranchimall.net'
floApiUrl = 'https://flosight.ranchimall.net'
</script>
<script>
/*jshint esversion: 8 */
@ -408,7 +408,7 @@
router.addRoute('block', async state => {
const [blockId] = state.wildcards
if (!blockId) return;
let [blockInfo, blockTxs] = await Promise.all([getBlockInfo(blockId), getBlockTxs(blockId)])
let [blockInfo, blockTxs] = await Promise.all([getBlockInfo(blockId), getBlockTransactions(blockId)])
renderElem(getRef("page_container"), html`${render.blockPage(blockInfo)}`);
getRef("page_title").textContent = 'Block'
renderTransactions('block_transaction_container', blockTxs)
@ -668,15 +668,17 @@
`;
},
transactionPage(obj) {
let { type, name, blockHeight, amount, sender, receiver, floData, hash, confirmations } = obj;
let { type, name, blockHeight, amount, sender, receiver, floData, hash, confirmations, nftHash } = obj;
// todo : This is a temporary fix. Fix this on the Database and API level
if (type == 'smartContractPays' || type == ' smartContractPays') {
name = ''
}
// split camel case to words
type = type.replace(/([A-Z])/g, ' $1').replace(/^./, function (str) {
return str.toUpperCase();
});
if (type.trim() === 'nftIncorporation')
type = 'NFT Incorporation'
else if (type.trim() === 'nft transfer')
type = 'NFT Transfer'
return html`
<div id="transaction_page" class="page">
<div class='head'>
@ -706,10 +708,15 @@
</div>
</div>
<div class="card">
<h5 class="label">FLO Data</h5>
<p>${floData}</p>
<h5 class="label">Block Confirmations</h5>
<h4>${confirmations}</h4>
<h5 class="label">FLO Data</h5>
<p>${floData}</p>
<h5 class="label">Block Confirmations</h5>
<h4>${confirmations}</h4>
${nftHash ? html`
<h5 class="label">NFT hash</h5>
<sm-copy value=${nftHash} clip-text></sm-copy>
`: ''
}
</div>
</div>
`;
@ -743,7 +750,7 @@
<div class="card">
<h2 class="uppercase">${token}</h2>
<h5 class="label">Supply</h5>
<h4>${formatAmount(supply, token.toLowerCase() === 'rupee' ? 'inr' : 'usd')}</h4>
<h4> ${supply ? formatAmount(supply, token.toLowerCase() === 'rupee' ? 'inr' : 'usd') : 'Infinite'} </h4>
<h5 class="label">Incorporation address</h5>
<h4 class="wrap-around">${incAddress}</h4>
</div>
@ -831,7 +838,7 @@
return card;
},
contractTransferCard(obj) {
const { hash, blockHeight, token, sender, receiver, amount, contractName, userChoice } = obj;
const { hash, blockHeight, token, sender, receiver, amount, contractName, userChoice, time } = obj;
return html`
<div id=${hash} class="transaction token-transfer">
<svg class="icon" viewBox="0 0 64 64"> <title>contract</title> <path d="M4.75,49.27A8,8,0,0,0,4.2,61.14a7.82,7.82,0,0,0,4.34,2.24,7.42,7.42,0,0,0,1.34.12H47.41a8.06,8.06,0,0,0,8.05-8V7.87"/> <path d="M8.54,56.13V8.54a8.06,8.06,0,0,1,8.05-8H54.12a7.42,7.42,0,0,1,1.34.12A7.82,7.82,0,0,1,59.8,2.86a8,8,0,0,1-.55,11.87"/> <line x1="17.93" y1="22.62" x2="46.07" y2="22.62"/> <line x1="17.93" y1="32" x2="46.07" y2="32"/> <line x1="17.93" y1="41.38" x2="38.03" y2="41.38"/> </svg>
@ -840,6 +847,7 @@
<a href=${`#/token/${token}`} class="">${token}</a>
</div>
<div class="contract-info">
<time>${getFormattedTime(time)}</time>
<div class="flex flex-direction-column">
<h5 class="label">Amount</h5>
<h4>${formatAmount(amount, token.toLowerCase() === 'rupee' ? 'inr' : 'usd')} ${token}</h4>
@ -859,15 +867,30 @@
</div>`;
},
tokenTransferCard(obj) {
const { hash, blockHeight, token, sender, receiver, amount } = obj;
const { hash, blockHeight, token, sender, receiver, amount, type, time } = obj;
let title = 'Token transfer';
console.log(type)
if (type === 'nfttransfer')
title = 'NFT transfer';
return html`
<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>
<div class="contract-type">
<h5 class="label">Token transfer</h5>
<a href=${`#/token/${token}`} class="uppercase">${token}</a>
<h5 class="label">${title}</h5>
<a href=${`#/token/${token}`} class="">${token}</a>
</div>
<div class="contract-info">
<div class="contract-info">
<time>${getFormattedTime(time)}</time>
<div class="flex flex-wrap gap-1">
<div class="flex flex-direction-column">
<h5 class="label">Sender</h5>
<a href=${`#/address/${sender}`} class="address wrap-around">${sender}</a>
</div>
<div class="flex flex-direction-column">
<h5 class="label">Receiver</h5>
<a href=${`#/address/${receiver}`} class="address wrap-around">${receiver}</a>
</div>
</div>
<div class="flex flex-direction-column">
<h5 class="label">Amount</h5>
<h4>${formatAmount(amount, token.toLowerCase() === 'rupee' ? 'inr' : 'usd')} ${token}</h4>
@ -884,15 +907,19 @@
`;
},
tokenCreationCard(obj) {
const { hash, blockHeight, token, incAddress, supply } = obj;
const { hash, blockHeight, token, incAddress, supply, type, nftHash, time } = obj;
let title = 'Token creation';
if (type === 'nftincorp')
title = 'NFT creation';
return html`
<div id=${hash} class="transaction token-creation">
<svg class="icon" viewBox="0 0 64 64"> <title>token</title> <circle cx="32" cy="32" r="31"/> <circle cx="32" cy="32" r="25.19"/> <line x1="37" y1="21.74" x2="43.14" y2="21.74"/> <path d="M20.86,21.74H32V43.23"/> </svg>
<div class="contract-type">
<h5 class="label">token creation</h5>
<h5 class="label">${title}</h5>
<a href=${`#/token/${token}`} class="token uppercase">${token}</a>
</div>
<div class="contract-info">
<time>${getFormattedTime(time)}</time>
<div class="flex flex-direction-column">
<h5 class="label">Incorporation address</h5>
<a href=${`#/address/${incAddress}`} class="address wrap-around">${incAddress}</a>
@ -905,6 +932,11 @@
<h5 class="label">supply</h5>
<h4>${supply}</h4>
</div>
${type === 'nftincorp' ? html`<div class="flex flex-direction-column">
<h5 class="label">NFT hash</h5>
<sm-copy value="${nftHash}"></sm-copy>
</div>`: ''
}
<div class="flex align-center space-between flex-wrap gap-1">
<div class="flex flex-direction-column">
<h5 class="label">Transaction ID</h5>
@ -916,7 +948,7 @@
</div>`;
},
contractTriggerCard(obj) {
const { hash, blockHeight, contractName, contractAddress, winningChoice, committeeAddress } = obj;
const { hash, blockHeight, contractName, contractAddress, winningChoice, committeeAddress, time } = obj;
return html`
<div id=${hash} class="transaction contract-trigger">
<svg class="icon" viewBox="0 0 64 64"> <circle cx="32" cy="32" r="31"/> <polyline points="32 13.47 32 32 43.4 43.4"/> </svg>
@ -925,6 +957,7 @@
<h4 class="uppercase">trigger</h4>
</div>
<div class="contract-info">
<time>${getFormattedTime(time)}</time>
<div class="flex flex-direction-column">
<h5 class="label">Contract name</h5>
<h4>${contractName}</h4>
@ -953,7 +986,7 @@
`;
},
contractCreationCard(obj) {
const { hash, blockHeight, token, contractName, incAddress, contractType, expiration, participationFees, availableChoices } = obj;
const { hash, blockHeight, token, contractName, incAddress, contractType, expiration, participationFees, availableChoices, time } = obj;
return html`
<div id=${hash} class="transaction contract-creation">
<svg class="icon" viewBox="0 0 64 64"> <title>contract creation</title> <path d="M47.07,23.85V11"/> <path d="M3,47A7,7,0,0,0,.48,52.39a6.89,6.89,0,0,0,2.05,4.93,6.78,6.78,0,0,0,3.78,2,6.34,6.34,0,0,0,1.16.1H40.09a7,7,0,0,0,7-7V44"/> <path d="M6.31,53V11.61a7,7,0,0,1,7-7H45.91a6.26,6.26,0,0,1,1.16.1,6.74,6.74,0,0,1,3.78,1.95A7,7,0,0,1,50.37,17"/> <line x1="14.46" y1="23.85" x2="38.92" y2="23.85"/> <line x1="14.46" y1="32" x2="38.92" y2="32"/> <line x1="14.46" y1="40.15" x2="31.93" y2="40.15"/> <path d="M57.79,24.44l-2.88-2.9,3.79-3.79a1,1,0,0,1,1.39,0l3.11,3.11a1,1,0,0,1,0,1.39L40.34,45.1a1,1,0,0,1-.52.28L36,46A1,1,0,0,1,34.9,44.9l.67-3.77a1,1,0,0,1,.27-.52L52.65,23.8"/> </svg>
@ -962,6 +995,7 @@
<a href=${`#/token/${token}`} class="">${token}</a>
</div>
<div class="contract-info">
<time>${getFormattedTime(time)}</time>
<div class="flex flex-direction-column">
<h5 class="label">Contract name</h5>
<h4>${contractName}</h4>
@ -1018,16 +1052,18 @@
}
async function renderTransactions(container, transactions = []) {
let txFrag = getTxFrag(transactions);
let txFrag = parseTransactions(transactions);
const renderedTransactions = txFrag.map(tx => {
switch (tx.type) {
case 'tokentransfer':
case 'nfttransfer':
return render.tokenTransferCard(tx)
break;
case 'contracttransfer':
return render.contractTransferCard(tx);
break;
case 'tokenincorp':
case 'nftincorp':
return render.tokenCreationCard(tx);
break;
case 'contractincorp':
@ -1060,7 +1096,7 @@
renderElem(getRef('suggestions'), html`${renderedSuggestions}`)
}, 100))
async function getBannerData() {
const { systemTransactionCount, systemAddressCount } = await fetchJson(`${tokenApiUrl}/api/v1.0/getSystemData`)
const { systemTransactionCount, systemAddressCount } = await fetchJson(`${tokenApiUrl}/api/v2/info`)
return {
topToken: "RMT",
totalTransactions: systemTransactionCount,
@ -1076,123 +1112,20 @@
}
function getLatestTxs() {
return fetchJson(`${tokenApiUrl}/api/v1.0/getLatestTransactionDetails?numberOfLatestBlocks=4`)
.then(function (latestTxs) {
let latestTxArray = [];
for (const transactionKey in latestTxs.latestTransactions) {
const { transactionDetails: { txid, blockHeight, vin, vout }, parsedFloData: { type, tokenAmount, tokenIdentification, transferType, contractName, triggerCondition, userChoice } } = latestTxs.latestTransactions[transactionKey];
// determine txhash and blockHeight
let obj = {
hash: txid,
blockHeight,
};
if (type != "smartContractPays") {
// determine token
obj["token"] = tokenIdentification;
if (type == "transfer") {
if (transferType == "token") {
// 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 {
// 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;
});
}
function getLatestBlocks() {
return fetchJson(
`${tokenApiUrl}/api/v1.0/getLatestBlockDetails?numberOfLatestBlocks=4`
)
.then(function (latestBlocks) {
let obj = {};
return obj;
});
return new Promise((resolve, reject) => {
fetchJson(`${tokenApiUrl}/api/v2/latestTransactionDetails?limit=4`)
.then(function (latestTxs) {
resolve(latestTxs.latestTransactions)
}).catch((err) => {
reject(err)
});
})
}
function getTokenInfo(thisToken) {
return new Promise((resolve, reject) => {
fetchJson(
`${tokenApiUrl}/api/v1.0/getTokenInfo?token=${thisToken.toLowerCase()}`
`${tokenApiUrl}/api/v2/tokenInfo/${thisToken.toLowerCase()}`
).then(function (tokenInfo) {
if (tokenInfo.result === "error")
reject(tokenInfo.description);
@ -1214,17 +1147,17 @@
}
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
}
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
}
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
return {
blockHeight: height,
@ -1237,14 +1170,13 @@
}
}
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
}
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)
const { contractInfo: { contractType, status, expiryTime, payeeAddress, userChoice, tokenIdentification, contractAmount, minimumsubscriptionamount, maximumsubscriptionamount }, contractAddress, contractName } = info
return {
@ -1263,34 +1195,42 @@
}
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
}
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
}
function getTxFrag(txList) {
// Check if "txList" is array or object
if (Array.isArray(txList))
return txList;
// Object
function parseTransactions(txList) {
if (!Array.isArray(txList))
txList = Object.values(txList)
let latestTxArray = [];
for (const transactionKey in txList) {
const { transactionDetails: { txid, blockHeight, vin, vout }, parsedFloData: { contractAddress, contractType, expiryTime, contractAmount, type, tokenAmount, tokenIdentification, transferType, contractName, triggerCondition, userChoice } } = txList[transactionKey];
txList.forEach(tx => {
// console.log(transactionKey)
// if(transactionKey == '11571ce7e5eed0bce30e24de89bb1ba6cc432df7b5b40bbc9f0225b98968cb47'){
// //debugger
// }
const {
transactionDetails: {
txid, blockHeight, vin, vout, time },
parsedFloData: {
contractAddress, contractType, expiryTime, contractAmount, type, tokenAmount, tokenIdentification, transferType, contractName, triggerCondition, userChoice, nftHash
}
} = tx;
let obj = {
hash: txid,
blockHeight,
time
};
if (type != "smartContractPays") {
// determine token
obj["token"] = tokenIdentification;
switch (type) {
case 'transfer':
if (transferType == "token") {
if (transferType == "token" || transferType == 'nft') {
let receiverAddress = "";
for (const output of vout) {
if (output["scriptPubKey"]["addresses"][0] !== vin[0]["addr"]) {
@ -1303,7 +1243,7 @@
sender: vin[0]["addr"],
receiver: receiverAddress,
amount: tokenAmount,
type: "tokentransfer",
type: transferType == "token" ? "tokentransfer" : "nfttransfer",
});
latestTxArray.push(obj);
break;
@ -1338,7 +1278,6 @@
});
latestTxArray.push(obj);
break;
case 'smartContractIncorporation':
// smart contract incorporation
// todo : add checks to determine obj for different types of smart contract incorporation
@ -1353,6 +1292,16 @@
});
latestTxArray.push(obj);
break;
case 'nftIncorporation':
// nft incorporation
obj = Object.assign({}, obj, {
incAddress: vin[0]["addr"],
supply: tokenAmount,
type: "nftincorp",
nftHash
});
latestTxArray.push(obj);
break;
}
} else {
@ -1377,22 +1326,23 @@
});
latestTxArray.push(obj);
}
}
})
return latestTxArray;
}
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)
}
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
}
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
}
@ -1401,18 +1351,18 @@
}
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
}
async function getTxInfo(thisTx) {
try {
const transaction = await fetchJson(`${tokenApiUrl}/api/v1.0/getTransactionDetails/${thisTx}`)
const transaction = await fetchJson(`${tokenApiUrl}/api/v2/transactionDetails/${thisTx}`)
if (transaction.result === 'error') {
return [false, transaction.description]
} else {
let transactionHash = transaction.transactionHash,
{ flodata, tokenAmount, tokenIdentification, type } = transaction.parsedFloData,
{ flodata, tokenAmount, tokenIdentification, type, nftHash } = transaction.parsedFloData,
{ blockheight, vin, vout, confirmations } = transaction.transactionDetails;
let receiver = "",
sender = vin[0].addr;
@ -1422,7 +1372,7 @@
}
}
console.log(transaction)
// todo - temporary fixes below. Fix these on the Databse and API level
// todo - temporary fixes below. Fix these on the Database and API level
let transactionType = ''
if (type == 'transfer') {
transactionType = transaction.parsedFloData?.transferType
@ -1437,11 +1387,12 @@
name: tokenIdentification,
blockHeight: blockheight,
amount: tokenAmount,
sender: sender,
receiver: receiver,
sender,
receiver,
floData: flodata,
hash: transactionHash,
confirmations: confirmations
confirmations,
nftHash
}
]
}
@ -1493,9 +1444,9 @@
location.href = `#/contract/${text}`
resolve('contract')
} 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) {
console.log(`${window.tokenApiUrl}/api/v1.0/categoriseString/` + text)
console.log(`${window.tokenApiUrl}/api/v2/categoriseString/` + text)
if (myJson['type'] == 'transaction') {
//console.log('data entered is a transaction hash');
location.href = `#/transaction/${text}`
@ -1529,7 +1480,7 @@
async function getAllSuggestions() {
window.allSuggestions = [];
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');
ranchimallFlo.tokenList = tokens;
ranchimallFlo.smartContractList = smartContracts;
@ -1537,7 +1488,6 @@
ranchimallFlo.smartContractNameAddressList = [];
//console.log(ranchimallFlo.smartContractList.length);
ranchimallFlo.smartContractList.forEach(contract => {
console.log(contract.contractName);
allSuggestions.push(`${contract.contractName}-${contract.contractAddress}`);
ranchimallFlo.smartContractNameList.push(contract.contractName);
ranchimallFlo.smartContractNameAddressList.push(`${contract.contractName}-${contract.contractAddress}`);

1620
v1.html Normal file

File diff suppressed because one or more lines are too long

1867
v2.html Normal file

File diff suppressed because one or more lines are too long