diff --git a/apps/web/src/composables/contracts.ts b/apps/web/src/composables/contracts.ts index edd9ee877..e4e3d50ba 100644 --- a/apps/web/src/composables/contracts.ts +++ b/apps/web/src/composables/contracts.ts @@ -224,14 +224,21 @@ export default function useContracts() { } async function setUserContractTotals(eventTotals: any) { - const exchangeCurrentStaked = eventTotals.StakeDeposited - eventTotals.WithdrawalInitiated - const usdCurrentStaked = exchangeCurrentStaked * (await getCurrentPrice({ coin: 'ETH', currency: 'USD' })) - const exchangeCurrentStakedRounded = Math.round(exchangeCurrentStaked * 100) / 100 - const usdCurrentStakedRounded = Math.round(usdCurrentStaked * 100) / 100 - currentStaked.value = { - exchange: exchangeCurrentStakedRounded.toString() + ' ETH', - usd: '$ ' + usdCurrentStakedRounded + /* CurrentStaked */ + if (eventTotals.StakeDeposited > 0) { + const exchangeCurrentStaked = eventTotals.StakeDeposited - eventTotals.WithdrawalInitiated + const usdCurrentStaked = exchangeCurrentStaked * (await getCurrentPrice({ coin: 'ETH', currency: 'USD' })) + const exchangeCurrentStakedRounded = Math.round(exchangeCurrentStaked * 100) / 100 + const usdCurrentStakedRounded = Math.round(usdCurrentStaked * 100) / 100 + currentStaked.value = { + exchange: exchangeCurrentStakedRounded.toString() + ' ETH', + usd: '$ ' + usdCurrentStakedRounded + } } + + /* Staking Rewards */ + + /* TotalDeposited */ } // TODO: Add listener / subscription "StakeRebalanced(uint256 amount)" (to composable somewhere) diff --git a/apps/web/src/composables/ethers.ts b/apps/web/src/composables/ethers.ts index 4d3b8a002..9c1497924 100644 --- a/apps/web/src/composables/ethers.ts +++ b/apps/web/src/composables/ethers.ts @@ -158,11 +158,25 @@ export default function useEthers() { const promises = [] as Array> transactions.map((tx) => { if (addresses.includes(tx.from.toLowerCase())) { - promises.push(getUserContractEventsTotals(tx.from as string)) + // TODO: Replace this with a method called RefreshUserContractTotals + user.value?.accounts?.forEach((account: Account) => { + const { address } = account + promises.push(getUserContractEventsTotals(address)) + }) + } + }) + const userEventTotals = (await Promise.all(promises)).reduce((acc, curr) => { + return { + StakeDeposited: acc.StakeDeposited + curr.StakeDeposited, + StakeRebalanced: acc.StakeRebalanced + curr.StakeRebalanced, + WithdrawalInitiated: acc.WithdrawalInitiated + curr.WithdrawalInitiated, } + }, { + StakeDeposited: 0, + StakeRebalanced: 0, + WithdrawalInitiated: 0, }) - const userEventTotals = await Promise.all(promises) - if (userEventTotals.length > 0) await setUserContractTotals(userEventTotals[0]) + await setUserContractTotals(userEventTotals) }) await new Promise(() => { // Wait indefinitely using a Promise that never resolves