commit
6a6bc50ca9
11
css/main.css
11
css/main.css
@ -1066,13 +1066,22 @@ theme-toggle {
|
|||||||
#participant_container,
|
#participant_container,
|
||||||
#deposits_container {
|
#deposits_container {
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: 2.5rem;
|
gap: 0.5rem;
|
||||||
|
background-color: transparent;
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.participant,
|
.participant,
|
||||||
.deposit-card {
|
.deposit-card {
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
gap: 2rem;
|
gap: 2rem;
|
||||||
|
background-color: rgba(var(--foreground-color), 1);
|
||||||
|
padding: max(1rem, 1.5vw);
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
}
|
||||||
|
.participant .address,
|
||||||
|
.deposit-card .address {
|
||||||
|
min-width: 12rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 640px) {
|
@media only screen and (min-width: 640px) {
|
||||||
|
|||||||
2
css/main.min.css
vendored
2
css/main.min.css
vendored
File diff suppressed because one or more lines are too long
@ -969,12 +969,20 @@ theme-toggle {
|
|||||||
#participant_container,
|
#participant_container,
|
||||||
#deposits_container {
|
#deposits_container {
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: 2.5rem;
|
gap: 0.5rem;
|
||||||
|
background-color: transparent;
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
.participant,
|
.participant,
|
||||||
.deposit-card {
|
.deposit-card {
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
gap: 2rem;
|
gap: 2rem;
|
||||||
|
background-color: rgba(var(--foreground-color), 1);
|
||||||
|
padding: max(1rem, 1.5vw);
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
.address {
|
||||||
|
min-width: 12rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@media only screen and (min-width: 640px) {
|
@media only screen and (min-width: 640px) {
|
||||||
.margin,
|
.margin,
|
||||||
|
|||||||
244
index.html
244
index.html
@ -144,7 +144,7 @@
|
|||||||
function formatAmount(amount = 0, currency = 'inr') {
|
function formatAmount(amount = 0, currency = 'inr') {
|
||||||
if (!amount)
|
if (!amount)
|
||||||
return '0';
|
return '0';
|
||||||
return amount.toLocaleString(currency === 'inr' ? `en-IN` : 'en-US', { currency, maximumFractionDigits: currency === 'inr' ? 2 : 8 })
|
return amount.toLocaleString(currency === 'inr' ? `en-IN` : 'en-US', { currency, maximumFractionDigits: 8 })
|
||||||
}
|
}
|
||||||
// fetch data and return json
|
// fetch data and return json
|
||||||
async function fetchJson(url, options = {}) {
|
async function fetchJson(url, options = {}) {
|
||||||
@ -429,8 +429,8 @@
|
|||||||
document.getElementById('participant_container'),
|
document.getElementById('participant_container'),
|
||||||
html`${Object.keys(contractParticipants)
|
html`${Object.keys(contractParticipants)
|
||||||
.map(participant => render.participantCard({
|
.map(participant => render.participantCard({
|
||||||
acceptingToken: acceptingToken,
|
acceptingToken,
|
||||||
sellingToken: sellingToken,
|
sellingToken,
|
||||||
...contractParticipants[participant]
|
...contractParticipants[participant]
|
||||||
}))
|
}))
|
||||||
}`
|
}`
|
||||||
@ -445,7 +445,7 @@
|
|||||||
document.getElementById('deposits_container'),
|
document.getElementById('deposits_container'),
|
||||||
html`${contractDeposits.map(deposit => render.depositCard({
|
html`${contractDeposits.map(deposit => render.depositCard({
|
||||||
...deposit,
|
...deposit,
|
||||||
acceptingToken: acceptingToken,
|
acceptingToken,
|
||||||
}))}`
|
}))}`
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
@ -771,12 +771,16 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex flex-direction-column">
|
<div class="flex flex-direction-column">
|
||||||
<h5 class="label">Sender</h5>
|
<h5 class="label">Sender</h5>
|
||||||
<a href=${`#/address/${sender}`} class="address wrap-around">${sender}</a>
|
<sm-copy value=${sender}>
|
||||||
|
<a href=${`#/address/${sender}`} class="address wrap-around">${sender}</a>
|
||||||
|
</sm-copy>
|
||||||
</div>
|
</div>
|
||||||
${receiver ? html`
|
${receiver ? html`
|
||||||
<div class="flex flex-direction-column">
|
<div class="flex flex-direction-column">
|
||||||
<h5 class="label">Receiver</h5>
|
<h5 class="label">Receiver</h5>
|
||||||
<a href=${`#/address/${receiver}`} class="address wrap-around">${receiver}</a>
|
<sm-copy value=${receiver}>
|
||||||
|
<a href=${`#/address/${receiver}`} class="address wrap-around">${receiver}</a>
|
||||||
|
</sm-copy>
|
||||||
</div>
|
</div>
|
||||||
`: ''
|
`: ''
|
||||||
}
|
}
|
||||||
@ -833,7 +837,11 @@
|
|||||||
<h5 class="label">Supply</h5>
|
<h5 class="label">Supply</h5>
|
||||||
<h4> ${supply ? formatAmount(supply, token.toLowerCase() === 'rupee' ? 'inr' : 'usd') : 'Infinite'} </h4>
|
<h4> ${supply ? formatAmount(supply, token.toLowerCase() === 'rupee' ? 'inr' : 'usd') : 'Infinite'} </h4>
|
||||||
<h5 class="label">Incorporation address</h5>
|
<h5 class="label">Incorporation address</h5>
|
||||||
<h4 class="wrap-around">${incAddress}</h4>
|
<sm-copy value=${incAddress}>
|
||||||
|
<h4 class="wrap-around">
|
||||||
|
<a href=${`#/address/${incAddress}`} class="address wrap-around">${incAddress}</a>
|
||||||
|
</h4>
|
||||||
|
</sm-copy>
|
||||||
</div>
|
</div>
|
||||||
<sm-chips data-target="token_views" onchange="changeView(event)">
|
<sm-chips data-target="token_views" onchange="changeView(event)">
|
||||||
<sm-chip value="0" selected>Transactions</sm-chip>
|
<sm-chip value="0" selected>Transactions</sm-chip>
|
||||||
@ -880,7 +888,7 @@
|
|||||||
<div id="contract_info" class="card">
|
<div id="contract_info" class="card">
|
||||||
<div class="flex info-row">
|
<div class="flex info-row">
|
||||||
<h5 class="label">Contract Type</h5>
|
<h5 class="label">Contract Type</h5>
|
||||||
<h4>${replaceDash(contractType)}</h4>
|
<h4>${replaceDash(contractType) === 'continuos event' ? 'continuous event' : replaceDash(contractType)}</h4>
|
||||||
</div>
|
</div>
|
||||||
${contractSubtype ? html`
|
${contractSubtype ? html`
|
||||||
<div class="flex info-row">
|
<div class="flex info-row">
|
||||||
@ -934,11 +942,11 @@
|
|||||||
`: ''}
|
`: ''}
|
||||||
${contractType === 'continuos-event' && contractSubtype === 'tokenswap' ? html`
|
${contractType === 'continuos-event' && contractSubtype === 'tokenswap' ? html`
|
||||||
<div class="flex info-row">
|
<div class="flex info-row">
|
||||||
<h5 class="label">Input token</h5>
|
<h5 class="label">deposit token</h5>
|
||||||
<h4>${acceptingToken}</h4>
|
<h4>${acceptingToken}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex info-row">
|
<div class="flex info-row">
|
||||||
<h5 class="label">Output token</h5>
|
<h5 class="label">participation token</h5>
|
||||||
<h4>${sellingToken}</h4>
|
<h4>${sellingToken}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex info-row">
|
<div class="flex info-row">
|
||||||
@ -1029,7 +1037,9 @@
|
|||||||
`;
|
`;
|
||||||
},
|
},
|
||||||
depositCard(details) {
|
depositCard(details) {
|
||||||
const { currentBalance, depositorAddress, originalBalance, status, time, transactionHash, acceptingToken } = details
|
const { currentBalance, depositorAddress, originalBalance, status, time, transactionHash, acceptingToken, sellingToken } = details
|
||||||
|
console.log("I'm at the debug point")
|
||||||
|
debugger
|
||||||
return html`
|
return html`
|
||||||
<li class="flex deposit-card">
|
<li class="flex deposit-card">
|
||||||
<div class="grid gap-0-5 flex-1">
|
<div class="grid gap-0-5 flex-1">
|
||||||
@ -1039,11 +1049,11 @@
|
|||||||
<div class="grid align-center gap-1 flex-1" style="grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr))">
|
<div class="grid align-center gap-1 flex-1" style="grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr))">
|
||||||
<div>
|
<div>
|
||||||
<h5 class="label">Deposited</h5>
|
<h5 class="label">Deposited</h5>
|
||||||
<b>${formatAmount(originalBalance, 'usd')} ${acceptingToken}</b>
|
<b>${formatAmount(originalBalance, 'usd')} ${sellingToken}</b>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h5 class="label">Current balance</h5>
|
<h5 class="label">Current balance</h5>
|
||||||
<b>${formatAmount(currentBalance, 'usd')} ${acceptingToken}</b>
|
<b>${formatAmount(currentBalance, 'usd')} ${sellingToken}</b>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h5 class="label">Status</h5>
|
<h5 class="label">Status</h5>
|
||||||
@ -1069,6 +1079,51 @@
|
|||||||
</li>
|
</li>
|
||||||
`;
|
`;
|
||||||
},
|
},
|
||||||
|
contractDepositCard(obj) {
|
||||||
|
const { hash, blockHeight, token, sender, receiver, amount, type, time, contractAddress, contractName } = obj;
|
||||||
|
let title = 'Contract deposit';
|
||||||
|
return html`
|
||||||
|
<li 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">${title}</h5>
|
||||||
|
<a href=${`#/token/${token}`} class="">${token}</a>
|
||||||
|
</div>
|
||||||
|
<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>
|
||||||
|
<sm-copy value=${sender}>
|
||||||
|
<a href=${`#/address/${sender}`} class="address wrap-around">${sender}</a>
|
||||||
|
</sm-copy>
|
||||||
|
</div>
|
||||||
|
<div class="flex flex-direction-column">
|
||||||
|
<h5 class="label">Receiver</h5>
|
||||||
|
<sm-copy value=${receiver}>
|
||||||
|
<a href=${`#/address/${receiver}`} class="address wrap-around">${receiver}</a>
|
||||||
|
</sm-copy>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex flex-direction-column">
|
||||||
|
<h5 class="label">Contract name</h5>
|
||||||
|
<h4>${contractName}</h4>
|
||||||
|
</div>
|
||||||
|
<div class="flex flex-direction-column">
|
||||||
|
<h5 class="label">Amount</h5>
|
||||||
|
<h4>${formatAmount(amount, token.toLowerCase() === 'rupee' ? 'inr' : 'usd')} ${token}</h4>
|
||||||
|
</div>
|
||||||
|
<div class="flex align-center space-between flex-wrap gap-1">
|
||||||
|
<div class="flex flex-direction-column">
|
||||||
|
<h5 class="label">Transaction ID</h5>
|
||||||
|
<sm-copy value=${hash} clip-text></sm-copy>
|
||||||
|
</div>
|
||||||
|
<a href=${`#/transaction/${hash}`} class="button button--small button--colored">View details</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
`;
|
||||||
|
},
|
||||||
contractTransferCard(obj) {
|
contractTransferCard(obj) {
|
||||||
const { hash, token, sender, receiver, amount, contractName, userChoice, time } = obj;
|
const { hash, token, sender, receiver, amount, contractName, userChoice, time } = obj;
|
||||||
return html`
|
return html`
|
||||||
@ -1115,11 +1170,15 @@
|
|||||||
<div class="flex flex-wrap gap-1">
|
<div class="flex flex-wrap gap-1">
|
||||||
<div class="flex flex-direction-column">
|
<div class="flex flex-direction-column">
|
||||||
<h5 class="label">Sender</h5>
|
<h5 class="label">Sender</h5>
|
||||||
<a href=${`#/address/${sender}`} class="address wrap-around">${sender}</a>
|
<sm-copy value=${sender}>
|
||||||
|
<a href=${`#/address/${sender}`} class="address wrap-around">${sender}</a>
|
||||||
|
</sm-copy>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-direction-column">
|
<div class="flex flex-direction-column">
|
||||||
<h5 class="label">Receiver</h5>
|
<h5 class="label">Receiver</h5>
|
||||||
<a href=${`#/address/${receiver}`} class="address wrap-around">${receiver}</a>
|
<sm-copy value=${receiver}>
|
||||||
|
<a href=${`#/address/${receiver}`} class="address wrap-around">${receiver}</a>
|
||||||
|
</sm-copy>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-direction-column">
|
<div class="flex flex-direction-column">
|
||||||
@ -1153,7 +1212,9 @@
|
|||||||
<time>${getFormattedTime(time)}</time>
|
<time>${getFormattedTime(time)}</time>
|
||||||
<div class="flex flex-direction-column">
|
<div class="flex flex-direction-column">
|
||||||
<h5 class="label">Incorporation address</h5>
|
<h5 class="label">Incorporation address</h5>
|
||||||
<a href=${`#/address/${incAddress}`} class="address wrap-around">${incAddress}</a>
|
<sm-copy value=${incAddress}>
|
||||||
|
<a href=${`#/address/${incAddress}`} class="address wrap-around">${incAddress}</a>
|
||||||
|
</sm-copy>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-direction-column">
|
<div class="flex flex-direction-column">
|
||||||
<h5 class="label">token name</h5>
|
<h5 class="label">token name</h5>
|
||||||
@ -1217,8 +1278,8 @@
|
|||||||
`;
|
`;
|
||||||
},
|
},
|
||||||
contractCreationCard(obj) {
|
contractCreationCard(obj) {
|
||||||
const { hash, blockHeight, token, contractName, incAddress, contractType, expiration, participationFees, availableChoices, time } = obj;
|
const { hash, blockHeight, token, contractName, incAddress, contractType, expiration, participationFees, availableChoices, time, acceptingToken, sellingToken, price } = obj;
|
||||||
console.log(obj);
|
console.log(obj)
|
||||||
return html`
|
return html`
|
||||||
<li id=${hash} class="transaction contract-creation">
|
<li 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>
|
<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>
|
||||||
@ -1234,25 +1295,51 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex flex-direction-column">
|
<div class="flex flex-direction-column">
|
||||||
<h5 class="label">Contract address</h5>
|
<h5 class="label">Contract address</h5>
|
||||||
<a href=${`#/address/${incAddress}`} class="address wrap-around">${incAddress}</a>
|
<sm-copy value=${incAddress}>
|
||||||
</div>
|
<a href=${`#/address/${incAddress}`} class="address wrap-around">${incAddress}</a>
|
||||||
<div class="flex flex-direction-column">
|
</sm-copy>
|
||||||
<h5 class="label">token used</h5>
|
|
||||||
<h4>${token}</h4>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-direction-column">
|
<div class="flex flex-direction-column">
|
||||||
<h5 class="label">contract type</h5>
|
<h5 class="label">contract type</h5>
|
||||||
<h4>${replaceDash(contractType)}</h4>
|
<h4>
|
||||||
|
${replaceDash(contractType) === 'continuos event' ? 'continuous event' : replaceDash(contractType)}
|
||||||
|
</h4>
|
||||||
</div>
|
</div>
|
||||||
|
${token ? html`
|
||||||
|
<div class="flex flex-direction-column">
|
||||||
|
<h5 class="label">token used</h5>
|
||||||
|
<h4>${token}</h4>
|
||||||
|
</div>
|
||||||
|
`: ''}
|
||||||
|
${acceptingToken ? html`
|
||||||
|
<div class="flex flex-direction-column">
|
||||||
|
<h5 class="label">deposit token</h5>
|
||||||
|
<h4>${acceptingToken}</h4>
|
||||||
|
</div>
|
||||||
|
`: ''}
|
||||||
|
${sellingToken ? html`
|
||||||
|
<div class="flex flex-direction-column">
|
||||||
|
<h5 class="label">participation token</h5>
|
||||||
|
<h4>${sellingToken}</h4>
|
||||||
|
</div>
|
||||||
|
`: ''}
|
||||||
${expiration ? html`
|
${expiration ? html`
|
||||||
<div class="flex flex-direction-column">
|
<div class="flex flex-direction-column">
|
||||||
<h5 class="label">expiration</h5>
|
<h5 class="label">expiration</h5>
|
||||||
<h4 class="capitalise">${getFormattedTime(new Date(expiration).getTime())}</h4>
|
<h4 class="capitalise">${getFormattedTime(new Date(expiration).getTime())}</h4>
|
||||||
</div>`: ''}
|
</div>`: ''}
|
||||||
<div class="flex flex-direction-column">
|
${participationFees ? html`
|
||||||
<h5 class="label">participation amount</h5>
|
<div class="flex flex-direction-column">
|
||||||
<h4>${participationFees} ${token}</h4>
|
<h5 class="label">participation amount</h5>
|
||||||
</div>
|
<h4>${participationFees} ${token}</h4>
|
||||||
|
</div>
|
||||||
|
`: ''}
|
||||||
|
${price ? html`
|
||||||
|
<div class="flex flex-direction-column">
|
||||||
|
<h5 class="label">price</h5>
|
||||||
|
<h4>1 ${sellingToken} = ${formatAmount(price, 'usd')} ${acceptingToken}</h4>
|
||||||
|
</div>
|
||||||
|
`: ''}
|
||||||
<div class="flex align-center space-between flex-wrap gap-1">
|
<div class="flex align-center space-between flex-wrap gap-1">
|
||||||
<div class="flex flex-direction-column">
|
<div class="flex flex-direction-column">
|
||||||
<h5 class="label">Transaction ID</h5>
|
<h5 class="label">Transaction ID</h5>
|
||||||
@ -1292,6 +1379,9 @@
|
|||||||
case 'nfttransfer':
|
case 'nfttransfer':
|
||||||
return render.tokenTransferCard(tx)
|
return render.tokenTransferCard(tx)
|
||||||
break;
|
break;
|
||||||
|
case 'contractdeposit':
|
||||||
|
return render.contractDepositCard(tx)
|
||||||
|
break;
|
||||||
case 'contracttransfer':
|
case 'contracttransfer':
|
||||||
return render.contractTransferCard(tx);
|
return render.contractTransferCard(tx);
|
||||||
break;
|
break;
|
||||||
@ -1475,6 +1565,9 @@
|
|||||||
const deposits = await fetchJson(`${floGlobals.tokenApiUrl}/api/v2/smartContractDeposits?contractName=${contract.name}&contractAddress=${contract.address}`)
|
const deposits = await fetchJson(`${floGlobals.tokenApiUrl}/api/v2/smartContractDeposits?contractName=${contract.name}&contractAddress=${contract.address}`)
|
||||||
return deposits.depositInfo
|
return deposits.depositInfo
|
||||||
}
|
}
|
||||||
|
function getReceiver(vin, vout) {
|
||||||
|
return vout.find(output => output.scriptPubKey.addresses.find(address => address !== vin[0].addr))?.scriptPubKey.addresses[0] || vin[0].addr
|
||||||
|
}
|
||||||
|
|
||||||
function parseTransactions(txList) {
|
function parseTransactions(txList) {
|
||||||
if (!Array.isArray(txList))
|
if (!Array.isArray(txList))
|
||||||
@ -1483,11 +1576,14 @@
|
|||||||
txList.forEach(tx => {
|
txList.forEach(tx => {
|
||||||
const {
|
const {
|
||||||
transactionDetails: {
|
transactionDetails: {
|
||||||
txid, blockHeight, vin, vout, time },
|
txid, blockHeight, vin, vout, time,
|
||||||
|
receiverAddress,
|
||||||
|
senderAddress,
|
||||||
|
},
|
||||||
parsedFloData: {
|
parsedFloData: {
|
||||||
contractAddress,
|
contractAddress,
|
||||||
contractType,
|
contractType,
|
||||||
contractConditions: { expiryTime } = {},
|
contractConditions: { expiryTime, accepting_token, selling_token, subtype, price } = {},
|
||||||
contractAmount,
|
contractAmount,
|
||||||
type,
|
type,
|
||||||
tokenAmount,
|
tokenAmount,
|
||||||
@ -1496,7 +1592,8 @@
|
|||||||
contractName,
|
contractName,
|
||||||
triggerCondition,
|
triggerCondition,
|
||||||
userChoice,
|
userChoice,
|
||||||
nftHash
|
nftHash,
|
||||||
|
depositAmount,
|
||||||
}
|
}
|
||||||
} = tx;
|
} = tx;
|
||||||
let obj = {
|
let obj = {
|
||||||
@ -1510,16 +1607,8 @@
|
|||||||
switch (type) {
|
switch (type) {
|
||||||
case 'transfer':
|
case 'transfer':
|
||||||
if (transferType == "token" || transferType == 'nft') {
|
if (transferType == "token" || transferType == 'nft') {
|
||||||
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, {
|
obj = Object.assign({}, obj, {
|
||||||
sender: vin[0]["addr"],
|
sender: senderAddress,
|
||||||
receiver: receiverAddress,
|
receiver: receiverAddress,
|
||||||
amount: tokenAmount,
|
amount: tokenAmount,
|
||||||
type: transferType == "token" ? "tokentransfer" : "nfttransfer",
|
type: transferType == "token" ? "tokentransfer" : "nfttransfer",
|
||||||
@ -1528,16 +1617,8 @@
|
|||||||
break;
|
break;
|
||||||
} else if (transferType == 'smartContract') {
|
} else if (transferType == 'smartContract') {
|
||||||
// smart contract transfer
|
// 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, {
|
obj = Object.assign({}, obj, {
|
||||||
sender: vin[0]["addr"],
|
sender: senderAddress,
|
||||||
receiver: receiverAddress,
|
receiver: receiverAddress,
|
||||||
amount: tokenAmount,
|
amount: tokenAmount,
|
||||||
contractName,
|
contractName,
|
||||||
@ -1551,7 +1632,7 @@
|
|||||||
// token incorporation
|
// token incorporation
|
||||||
// smart contract incorporation
|
// smart contract incorporation
|
||||||
obj = Object.assign({}, obj, {
|
obj = Object.assign({}, obj, {
|
||||||
incAddress: vin[0]["addr"],
|
incAddress: senderAddress,
|
||||||
supply: tokenAmount,
|
supply: tokenAmount,
|
||||||
type: "tokenincorp",
|
type: "tokenincorp",
|
||||||
});
|
});
|
||||||
@ -1560,47 +1641,68 @@
|
|||||||
case 'smartContractIncorporation':
|
case 'smartContractIncorporation':
|
||||||
// smart contract incorporation
|
// smart contract incorporation
|
||||||
// todo : add checks to determine obj for different types of smart contract incorporation
|
// todo : add checks to determine obj for different types of smart contract incorporation
|
||||||
obj = Object.assign({}, obj, {
|
switch (subtype) {
|
||||||
contractName,
|
case 'tokenswap':
|
||||||
incAddress: contractAddress,
|
obj = Object.assign({}, obj, {
|
||||||
contractType,
|
contractName,
|
||||||
expiration: expiryTime,
|
incAddress: contractAddress,
|
||||||
participationFees: contractAmount,
|
contractType,
|
||||||
availableChoices: "",
|
type: "contractincorp",
|
||||||
type: "contractincorp",
|
sellingToken: selling_token,
|
||||||
});
|
acceptingToken: accepting_token,
|
||||||
|
price,
|
||||||
|
});
|
||||||
|
delete obj["token"];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
obj = Object.assign({}, obj, {
|
||||||
|
contractName,
|
||||||
|
incAddress: contractAddress,
|
||||||
|
contractType,
|
||||||
|
expiration: expiryTime,
|
||||||
|
participationFees: contractAmount,
|
||||||
|
availableChoices: "",
|
||||||
|
type: "contractincorp",
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
latestTxArray.push(obj);
|
latestTxArray.push(obj);
|
||||||
break;
|
break;
|
||||||
case 'nftIncorporation':
|
case 'nftIncorporation':
|
||||||
// nft incorporation
|
// nft incorporation
|
||||||
obj = Object.assign({}, obj, {
|
obj = Object.assign({}, obj, {
|
||||||
incAddress: vin[0]["addr"],
|
incAddress: senderAddress,
|
||||||
supply: tokenAmount,
|
supply: tokenAmount,
|
||||||
type: "nftincorp",
|
type: "nftincorp",
|
||||||
nftHash
|
nftHash
|
||||||
});
|
});
|
||||||
latestTxArray.push(obj);
|
latestTxArray.push(obj);
|
||||||
break;
|
break;
|
||||||
|
case 'smartContractDeposit':
|
||||||
|
// smart contract deposit
|
||||||
|
obj = Object.assign({}, obj, {
|
||||||
|
contractName,
|
||||||
|
contractAddress,
|
||||||
|
contractType,
|
||||||
|
amount: depositAmount,
|
||||||
|
type: "contractdeposit",
|
||||||
|
sender: senderAddress,
|
||||||
|
receiver: receiverAddress,
|
||||||
|
});
|
||||||
|
latestTxArray.push(obj);
|
||||||
|
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'];
|
|
||||||
for (const output of vout) {
|
|
||||||
if (output["scriptPubKey"]["addresses"][0] !== vin[0]["addr"]) {
|
|
||||||
receiverAddress = output["scriptPubKey"]["addresses"][0];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
obj = Object.assign({}, obj, {
|
obj = Object.assign({}, obj, {
|
||||||
hash: txid,
|
hash: txid,
|
||||||
blockHeight,
|
blockHeight,
|
||||||
contractName,
|
contractName,
|
||||||
contractAddress: receiver,
|
contractAddress: receiverAddress,
|
||||||
winningChoice: triggerCondition,
|
winningChoice: triggerCondition,
|
||||||
committeeAddress: sender,
|
committeeAddress: senderAddress,
|
||||||
type: 'contracttrigger'
|
type: 'contracttrigger'
|
||||||
});
|
});
|
||||||
latestTxArray.push(obj);
|
latestTxArray.push(obj);
|
||||||
@ -1650,7 +1752,6 @@
|
|||||||
receiver = vout[i]["scriptPubKey"]["addresses"][0];
|
receiver = vout[i]["scriptPubKey"]["addresses"][0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(transaction)
|
|
||||||
// todo - temporary fixes below. Fix these on the Database and API level
|
// todo - temporary fixes below. Fix these on the Database and API level
|
||||||
let transactionType = ''
|
let transactionType = ''
|
||||||
if (type == 'transfer') {
|
if (type == 'transfer') {
|
||||||
@ -1682,7 +1783,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// THIS TAG CONTAINS CODE REQUIRED FOR THE NAVBAR TO FUNCTION
|
|
||||||
function returnHexNumber(s) {
|
function returnHexNumber(s) {
|
||||||
var regExp = /^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/;
|
var regExp = /^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/;
|
||||||
return (typeof s === 'string' && regExp.test(s));
|
return (typeof s === 'string' && regExp.test(s));
|
||||||
|
|||||||
8
scripts/components.min.js
vendored
8
scripts/components.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user