diff --git a/dapp/src/hooks/usePositionStats.ts b/dapp/src/hooks/usePositionStats.ts index e2425e685..87a6ff93b 100644 --- a/dapp/src/hooks/usePositionStats.ts +++ b/dapp/src/hooks/usePositionStats.ts @@ -1,32 +1,39 @@ -import { useAcreContext } from "#/acre-react/hooks" -import { queryKeysFactory } from "#/constants" -import { useQuery } from "@tanstack/react-query" +import { useMemo } from "react" +import useActivities from "./useActivities" +import useBitcoinPosition from "./useBitcoinPosition" export default function usePositionStats() { - const { acre, isInitialized, isConnected } = useAcreContext() + const { data, isLoading } = useActivities() + const { data: position, isLoading: isLoadingBitcoinPosition } = + useBitcoinPosition() - return useQuery({ - queryKey: [...queryKeysFactory.userKeys.positionStats()], - queryFn: async () => { - if (!acre) throw new Error("Acre SDK not available") + const positionStats = useMemo(() => { + if (!data || !position) return undefined - const currentBalance = await acre.account.estimatedBitcoinBalance() - const withdrawals = await acre.account.getWithdrawals() - const deposits = await acre.account.getDeposits() + const currentBalance = position.estimatedBitcoinBalance + const withdrawals = data.filter((activity) => activity.type === "withdraw") + const deposits = data.filter((activity) => activity.type === "deposit") - const sumOfWithdrawals = withdrawals.reduce( - (sum, withdrawal) => sum + withdrawal.amount, - 0n, - ) - const sumOfDeposits = deposits.reduce( - (sum, deposit) => sum + deposit.amount, - 0n, - ) + const sumOfWithdrawals = withdrawals.reduce( + (sum, withdrawal) => sum + withdrawal.amount, + 0n, + ) + const sumOfDeposits = deposits.reduce( + (sum, deposit) => sum + deposit.amount, + 0n, + ) - const earned = currentBalance + sumOfWithdrawals - sumOfDeposits + const earned = currentBalance + sumOfWithdrawals - sumOfDeposits + const deposited = sumOfDeposits - sumOfWithdrawals - return { deposited: currentBalance, earned: earned < 0n ? 0n : earned } - }, - enabled: isInitialized && isConnected && !!acre, - }) + return { + deposited: deposited < 0n ? 0n : deposited, + earned: earned < 0n ? 0n : earned, + } + }, [data, position]) + + return { + data: positionStats, + isLoading: isLoading || isLoadingBitcoinPosition, + } } diff --git a/dapp/src/pages/DashboardPage/BTCDepositedCard.tsx b/dapp/src/pages/DashboardPage/BTCDepositedCard.tsx index b58d7131a..38d02ffc5 100644 --- a/dapp/src/pages/DashboardPage/BTCDepositedCard.tsx +++ b/dapp/src/pages/DashboardPage/BTCDepositedCard.tsx @@ -13,7 +13,7 @@ function BTCDepositedCard(props: BTCDepositedCardProps) { return ( ) diff --git a/dapp/src/pages/DashboardPage/PositionDetails.tsx b/dapp/src/pages/DashboardPage/PositionDetails.tsx index cb050919a..31e34d44a 100644 --- a/dapp/src/pages/DashboardPage/PositionDetails.tsx +++ b/dapp/src/pages/DashboardPage/PositionDetails.tsx @@ -23,7 +23,7 @@ import { featureFlags } from "#/constants" import { IconClockHour5Filled } from "@tabler/icons-react" import TooltipIcon from "#/components/shared/TooltipIcon" import { activitiesUtils } from "#/utils" -import CurrencyBalance from "#/components/shared/CurrencyBalance" +import CurrencyBalanceWithConversion from "#/components/shared/CurrencyBalanceWithConversion" import AcreTVLMessage from "./AcreTVLMessage" const isWithdrawalFlowEnabled = featureFlags.WITHDRAWALS_ENABLED @@ -40,7 +40,7 @@ const buttonStyles: ButtonProps = { export default function PositionDetails() { const { data: bitcoinPosition } = useBitcoinPosition() - const shares = bitcoinPosition?.sharesBalance ?? 0n + const bitcoinAmount = bitcoinPosition?.estimatedBitcoinBalance ?? 0n const openDepositModal = useTransactionModal(ACTION_FLOW_TYPES.STAKE) const openWithdrawModal = useTransactionModal(ACTION_FLOW_TYPES.UNSTAKE) @@ -62,7 +62,7 @@ export default function PositionDetails() { {/* TODO: Component should be moved to `CardHeader` */} - Your Acre balance + Account Summary {activitiesUtils.hasPendingDeposits(activities ?? []) && ( -