1+ import invariant from 'tiny-invariant' ;
12import {
23 FC ,
34 createContext ,
@@ -8,10 +9,11 @@ import {
89} from 'react' ;
910import { useRouter } from 'next/router' ;
1011import { Address , isAddress } from 'viem' ;
11- import invariant from 'tiny-invariant' ;
12+ import type { QueryObserverResult } from '@tanstack/react-query' ;
13+
1214import { useSingleVaultData } from 'modules/vaults/hooks/use-vault-data' ;
13- import { VaultInfo } from 'types' ;
14- import { QueryObserverResult } from '@tanstack/react-query ' ;
15+
16+ import type { VaultInfo } from 'types ' ;
1517
1618type VaultContextType = {
1719 vaultAddress : Address | undefined ;
@@ -23,11 +25,18 @@ type VaultContextType = {
2325const VaultContext = createContext < VaultContextType | null > ( null ) ;
2426VaultContext . displayName = 'VaultContext' ;
2527
28+ export class VaultAddressError extends Error {
29+ constructor ( vaultAddress : string ) {
30+ super ( `Vault address is not valid: ${ vaultAddress } ` ) ;
31+ this . name = 'VaultAddressError' ;
32+ }
33+ }
34+
2635export const VaultProvider : FC < PropsWithChildren > = ( { children } ) => {
2736 const router = useRouter ( ) ;
2837 const { vaultAddress = '' } = router . query as { vaultAddress ?: Address } ;
29- const sanitizedVaultAddress = isAddress ( vaultAddress )
30- ? vaultAddress
38+ const sanitizedVaultAddress = isAddress ( vaultAddress . toLowerCase ( ) )
39+ ? ( vaultAddress . toLowerCase ( ) as Address )
3140 : undefined ;
3241 const { data, error, refetch, isPending, isRefetching } = useSingleVaultData (
3342 sanitizedVaultAddress ,
@@ -43,12 +52,26 @@ export const VaultProvider: FC<PropsWithChildren> = ({ children }) => {
4352 vaultAddress : sanitizedVaultAddress ,
4453 activeVault : data ,
4554 isLoadingVault : isPending ,
46- error : error ,
55+
56+ error :
57+ error ||
58+ ( vaultAddress &&
59+ ! sanitizedVaultAddress &&
60+ new VaultAddressError ( vaultAddress ) ) ||
61+ null ,
4762 refetchVaultInfo : ( ) =>
4863 refetch ( { cancelRefetch : true , throwOnError : false } ) ,
4964 isRefetching : isRefetching ,
5065 } ;
51- } , [ sanitizedVaultAddress , data , isPending , error , isRefetching , refetch ] ) ;
66+ } , [
67+ sanitizedVaultAddress ,
68+ data ,
69+ isPending ,
70+ error ,
71+ vaultAddress ,
72+ isRefetching ,
73+ refetch ,
74+ ] ) ;
5275
5376 return (
5477 < VaultContext . Provider value = { contextValue } >
0 commit comments