@@ -5,6 +5,7 @@ import { stakingTokenConfig } from '../contracts/stakingToken';
55import { stakingService } from '../services/stakingService' ;
66import { VaultService } from '../services/vaultService' ;
77import { useEthereumDerivedIdentity } from './useEthereumDerivedIdentity' ;
8+ import { filterUserStakingVaults } from '../utils/vaultFiltering' ;
89import type { StakingStats , Stake } from '../types/staking' ;
910import type { Vault } from '../declarations/btc_vault_backend' ;
1011import { ETHEREUM_CHAIN_ID } from '../lib/env' ;
@@ -59,14 +60,17 @@ export function useStakingData(address?: `0x${string}`) {
5960 . filter ( ( result ) : result is PromiseFulfilledResult < Vault > => result . status === 'fulfilled' )
6061 . map ( result => result . value ) ;
6162
63+ // 🔑 NEW: Filter to only include staking vaults (authorized by staking contract)
64+ const stakingVaults = filterUserStakingVaults ( successfulVaults ) ;
65+
6266 // Calculate actual statistics
6367 let totalStaked = 0n ; // Sum of all active vault balances (funded vaults)
6468 let totalRewards = 0n ; // Sum of all pending rewards from stakes
6569 let activeStakes = 0 ;
6670
67- // Check vault registration status for all vaults in batch
71+ // Check vault registration status for staking vaults only
6872 const registrationChecks = await Promise . allSettled (
69- successfulVaults . map ( async ( vault ) => {
73+ stakingVaults . map ( async ( vault ) => {
7074 try {
7175 // Use wagmi's readContract functionality via stakingService
7276 const isRegistered = await stakingService . checkVaultRegistration ( BigInt ( vault . id ) ) ;
@@ -85,8 +89,8 @@ export function useStakingData(address?: `0x${string}`) {
8589 }
8690 } ) ;
8791
88- // Sum actual vault balances for total staked (only active vaults: funded, not withdrawn, and registered)
89- for ( const vault of successfulVaults ) {
92+ // Sum actual vault balances for total staked (only active staking vaults: funded, not withdrawn, and registered)
93+ for ( const vault of stakingVaults ) {
9094 const isFunded = hasVaultState ( vault , 'Funded' ) ;
9195 const isWithdrawn = hasVaultState ( vault , 'Withdrawn' ) ;
9296 const isRegistered = registrationResults . get ( vault . id ) ?? false ;
@@ -101,8 +105,8 @@ export function useStakingData(address?: `0x${string}`) {
101105 }
102106 }
103107
104- // Calculate rewards for each active vault using thin layer approach
105- for ( const vault of successfulVaults ) {
108+ // Calculate rewards for each active staking vault using thin layer approach
109+ for ( const vault of stakingVaults ) {
106110 const isFunded = hasVaultState ( vault , 'Funded' ) ;
107111 const isWithdrawn = hasVaultState ( vault , 'Withdrawn' ) ;
108112 const isRegistered = registrationResults . get ( vault . id ) ?? false ;
@@ -192,14 +196,15 @@ export function useTokenBalance(address?: `0x${string}`) {
192196}
193197
194198/**
195- * Hook to fetch user's created vaults from the IC backend
199+ * Hook to fetch user's staking vaults from the IC backend
200+ * Only returns vaults that are authorized by the staking contract
196201 */
197202export function useUserVaults ( ) {
198203 const { createIdentity, createAgent } = useEthereumDerivedIdentity ( ) ;
199204 const { address : userAddress } = useAccount ( ) ;
200205
201206 return useQuery < Vault [ ] > ( {
202- queryKey : [ 'user-vaults' , userAddress ] ,
207+ queryKey : [ 'user-staking- vaults' , userAddress ] , // Updated key to reflect filtering
203208 queryFn : async ( ) : Promise < Vault [ ] > => {
204209 if ( ! userAddress ) return [ ] ;
205210
@@ -220,12 +225,15 @@ export function useUserVaults() {
220225 vaultIds . map ( ( vaultId ) => vaultService . getVaultInfoPublic ( vaultId ) )
221226 ) ;
222227
223- return vaultDetails
228+ const successfulVaults = vaultDetails
224229 . filter ( ( result ) : result is PromiseFulfilledResult < Vault > => result . status === 'fulfilled' )
225230 . map ( result => result . value ) ;
226231
232+ // 🔑 NEW: Filter to only return staking vaults
233+ return filterUserStakingVaults ( successfulVaults ) ;
234+
227235 } catch ( error ) {
228- console . error ( 'Error fetching user vaults:' , error ) ;
236+ console . error ( 'Error fetching user staking vaults:' , error ) ;
229237 return [ ] ;
230238 }
231239 } ,
0 commit comments