Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions public/address_ui.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
<p class="text-gray-700 text-md font-bold mb-2">Total balance: <span class="font-normal"><%= locals?.total_balance %></span></p>
<p class="text-gray-700 text-md font-bold mb-2">Transferrable balance: <span class="font-normal"><%= locals?.transferrable_balance %></span></p>
<p class="text-gray-700 text-md font-bold mb-2">Vesting lock: <span class="font-normal"><%= locals?.vesting_lock %></span></p>
<p class="text-gray-700 text-md font-bold mb-2">Vestable: <span class="font-normal"><%= locals?.vestable %></span></p>
</div>
<div class="flex items-center justify-center">
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded focus:outline-none focus:shadow-outline" type="submit">
Expand Down
2 changes: 1 addition & 1 deletion src/get-carousel-data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ const findAllValidPotentialAssets = async (storageBag?: StorageBag, assetId?: st
for (let { operators } of storageBag.distributionBuckets) {
if (operators.length === 0) continue;

const nodeEndpoint = operators[0].metadata.nodeEndpoint;
const nodeEndpoint = operators[0]?.metadata?.nodeEndpoint;
const url = `${nodeEndpoint}api/v1/assets/${assetId}`;

try {
Expand Down
19 changes: 17 additions & 2 deletions src/joyApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,13 @@ type NetworkStatus = {
}

type Address = {
recorded_at_block: number;
recorded_at_time: string;
recorded_at_block: number
recorded_at_time: string
total_balance: number
transferrable_balance: number
locked_balance: number
vesting_lock: number
vestable: number
}

export class JoyApi {
Expand Down Expand Up @@ -425,6 +426,7 @@ export class JoyApi {

const lockData = await finalizedApi.query.balances.locks.entries();
const systemAccounts = await finalizedApi.query.system.account.entries();
const vestingLockAddresses: string[] = [];
const resultData = systemAccounts.reduce((acc, [key, account]) => {
const address = key.args[0].toString();

Expand All @@ -437,6 +439,7 @@ export class JoyApi {
transferrable_balance: 0,
locked_balance: 0,
vesting_lock: 0,
vestable: 0
};

return acc;
Expand Down Expand Up @@ -470,11 +473,17 @@ export class JoyApi {
}

if (biggestVestingLock.gt(new BN(0))) {
vestingLockAddresses.push(address);
resultData[address].vesting_lock = this.toJOY(biggestVestingLock);
resultData[address].tempAmount2 = biggestVestingLock;
}
}

const vestableAddressData = (await Promise.all(
vestingLockAddresses.map((address) => this.api.derive.balances.all(address))))
.map((derivedBalance) => derivedBalance.vestedClaimable
);

systemAccounts.forEach(([key, account]) => {
const address = key.args[0].toString();

Expand All @@ -488,6 +497,12 @@ export class JoyApi {
resultData[address].vesting_lock = this.toJOY(
BN.min(resultData[address].tempAmount2, BN.min(account.data.free, account.data.miscFrozen))
);

const vestingAddressIndex = vestingLockAddresses.findIndex((vestingAddress) => vestingAddress === address);

if(vestingAddressIndex >= 0) {
resultData[address].vestable = this.toJOY(vestableAddressData[vestingAddressIndex]);
}
});

Object.keys(resultData).forEach((address) => { delete (resultData[address] as any).tempAmount; });
Expand Down