@@ -25,6 +25,7 @@ export type UseTokenMetainfoReturn = {
2525 tokenMetainfos : TokenModel [ ] ;
2626 allTokenMetainfos : TokenModel [ ] ;
2727 currentTokenMetainfos : TokenModel [ ] ;
28+ tokenLogoMap : Record < string , string | null > ;
2829 getTokenAmount : ( amount : { value : string ; denom : string } ) => { value : string ; denom : string } ;
2930 initTokenMetainfos : ( ) => Promise < void > ;
3031 updateTokenMetainfos : ( account : Account , tokenMetainfos : TokenModel [ ] ) => Promise < void > ;
@@ -67,7 +68,6 @@ function makeTokenKey(token: TokenModel): string {
6768export const useTokenMetainfo = ( ) : UseTokenMetainfoReturn => {
6869 const { balanceService, tokenService } = useAdenaContext ( ) ;
6970 const [ tokenMetainfos , setTokenMetainfo ] = useRecoilState ( TokenState . tokenMetainfos ) ;
70- const [ tokenLogoMap , setTokenLogoMap ] = useRecoilState ( TokenState . tokenLogoMap ) ;
7171 const { currentAccount } = useCurrentAccount ( ) ;
7272 const { currentNetwork } = useNetwork ( ) ;
7373 const { data : grc20Tokens } = useGRC20Tokens ( ) ;
@@ -105,21 +105,19 @@ export const useTokenMetainfo = (): UseTokenMetainfoReturn => {
105105 } , { } ) ;
106106 } , [ allTokenMetainfos ] ) ;
107107
108+ const tokenLogoMap = useMemo ( ( ) => {
109+ return currentTokenMetainfos . reduce < Record < string , string | null > > ( ( accum , current ) => {
110+ const key = makeTokenKey ( current ) ;
111+ accum [ key ] = current . image || null ;
112+ return accum ;
113+ } , { } ) ;
114+ } , [ currentTokenMetainfos ] ) ;
115+
108116 const initTokenMetainfos = async ( ) : Promise < void > => {
109117 if ( currentAccount ) {
110118 await tokenService . initAccountTokenMetainfos ( currentAccount . id ) ;
111119 const tokenMetainfos = await tokenService . getTokenMetainfosByAccountId ( currentAccount . id ) ;
112120 setTokenMetainfo ( [ ...tokenMetainfos ] ) ;
113-
114- const tokenLogoMap = tokenMetainfos . reduce < Record < string , string | null > > (
115- ( accum , current ) => {
116- const key = makeTokenKey ( current ) ;
117- accum [ key ] = current . image || null ;
118- return accum ;
119- } ,
120- { } ,
121- ) ;
122- setTokenLogoMap ( tokenLogoMap ) ;
123121 }
124122 } ;
125123
@@ -174,20 +172,30 @@ export const useTokenMetainfo = (): UseTokenMetainfoReturn => {
174172 [ tokenMetaMap ] ,
175173 ) ;
176174
177- const getTokenImage = ( token : TokenModel ) : string | null => {
178- const key = makeTokenKey ( token ) ;
179- return tokenLogoMap [ key ] || null ;
180- } ;
175+ const getTokenImage = useCallback (
176+ ( token : TokenModel ) : string | null => {
177+ const key = makeTokenKey ( token ) ;
178+ return tokenLogoMap [ key ] || null ;
179+ } ,
180+ [ tokenLogoMap ] ,
181+ ) ;
181182
182- const getTokenImageByDenom = ( denom : string ) : string | null => {
183- const key = makeTokenKeyByDenom ( denom ) ;
184- return tokenLogoMap [ key ] || null ;
185- } ;
183+ const getTokenImageByDenom = useCallback (
184+ ( denom : string ) : string | null => {
185+ const key = makeTokenKeyByDenom ( denom ) ;
186+ console . log ( key , tokenLogoMap ) ;
187+ return tokenLogoMap [ key ] || null ;
188+ } ,
189+ [ tokenLogoMap ] ,
190+ ) ;
186191
187- const getTokenImageByPkgPath = ( denom : string ) : string | null => {
188- const key = makeTokenKeyByPackagePath ( denom ) ;
189- return tokenLogoMap [ key ] || null ;
190- } ;
192+ const getTokenImageByPkgPath = useCallback (
193+ ( packagePath : string ) : string | null => {
194+ const key = makeTokenKeyByPackagePath ( packagePath ) ;
195+ return tokenLogoMap [ key ] || null ;
196+ } ,
197+ [ tokenLogoMap ] ,
198+ ) ;
191199
192200 const addTokenMetainfo = async ( tokenMetainfo : GRC20TokenModel ) : Promise < boolean > => {
193201 if ( ! currentAccount ) {
@@ -236,13 +244,14 @@ export const useTokenMetainfo = (): UseTokenMetainfoReturn => {
236244 type : 'grc20' ,
237245 name,
238246 decimals,
239- image : '' ,
247+ image : getTokenImageByPkgPath ( path ) || '' ,
240248 display : true ,
241249 } ;
242250 return addTokenMetainfo ( tokenMetainfo ) ;
243251 } ;
244252
245253 return {
254+ tokenLogoMap,
246255 tokenMetainfos,
247256 allTokenMetainfos,
248257 currentTokenMetainfos,
0 commit comments