@@ -11,6 +11,8 @@ import { ReactComponent as SolanaToken } from './assets/solana-token.svg';
1111import { ReactComponent as SpToken } from './assets/sp-token.svg' ;
1212import PassportInfo from '../PassportInfo' ;
1313import SelectActivePassportPopup from '../SelectActivePassportPopup' ;
14+ import { refreshSolanaBalances } from '../../services/wallets' ;
15+ import { CoNET_Data } from '../../utils/globals' ;
1416
1517interface AccountListProps {
1618 showMainWallet ?: boolean ;
@@ -21,11 +23,12 @@ interface AccountListProps {
2123
2224export default function AccountList ( { showMainWallet = true , simplifiedView = false , spInUsd = 0 , solInUsd = 0 } : AccountListProps ) {
2325 const [ openAccountList , setOpenAccountList ] = useState < string [ ] > ( [ ] ) ;
24- const { profiles, activePassport } = useDaemonContext ( ) ;
26+ const { profiles, activePassport, setProfiles } = useDaemonContext ( ) ;
2527
2628 const [ mainAccountAddressCopied , setMainAccountAddressCopied ] = useState ( false ) ;
2729 const [ solanaAccountAddressCopied , setSolanaAccountAddressCopied ] = useState ( false ) ;
2830 const [ passportToChange , setPassportToChange ] = useState ( ) ;
31+ const [ isRefreshingSolanaBalances , setIsRefreshingSolanaBalances ] = useState ( false ) ;
2932
3033 const { isSelectPassportPopupOpen, setIsSelectPassportPopupOpen } = useDaemonContext ( ) ;
3134
@@ -39,12 +42,12 @@ export default function AccountList({ showMainWallet = true, simplifiedView = fa
3942 e . preventDefault ( ) ;
4043
4144 if ( account === 'main' ) {
42- navigator . clipboard . writeText ( profiles ?. [ 0 ] . keyID ) ;
45+ navigator . clipboard . writeText ( profiles ?. [ 0 ] ? .keyID ) ;
4346 setMainAccountAddressCopied ( true ) ;
4447 }
4548
4649 if ( account === 'solana' ) {
47- navigator . clipboard . writeText ( profiles ?. [ 1 ] . keyID ) ;
50+ navigator . clipboard . writeText ( profiles ?. [ 1 ] ? .keyID ) ;
4851 setSolanaAccountAddressCopied ( true ) ;
4952 }
5053
@@ -54,6 +57,40 @@ export default function AccountList({ showMainWallet = true, simplifiedView = fa
5457 } , 2000 )
5558 }
5659
60+ async function handleRefreshSolanaBalances ( ) {
61+ setIsRefreshingSolanaBalances ( true ) ;
62+
63+ try {
64+ await refreshSolanaBalances ( profiles ?. [ 1 ] ) ;
65+
66+ const tmpData = CoNET_Data ;
67+
68+ if ( ! tmpData ) {
69+ return ;
70+ }
71+
72+ tmpData . profiles [ 1 ] = profiles ?. [ 1 ] ;
73+
74+ setProfiles ( tmpData . profiles ) ;
75+ } catch ( ex ) {
76+ console . log ( ex ) ;
77+ }
78+
79+ setTimeout ( ( ) => setIsRefreshingSolanaBalances ( false ) , 2000 ) ;
80+ }
81+
82+ const renderRefreshButton = ( ) => {
83+ if ( ! profiles ?. [ 1 ] ?. keyID ) {
84+ return < p className = 'refresh disabled' > Refresh</ p >
85+ }
86+
87+ if ( isRefreshingSolanaBalances ) {
88+ return < p className = 'refresh' > Refreshing...</ p >
89+ }
90+
91+ return < p className = 'refresh' onClick = { handleRefreshSolanaBalances } > Refresh</ p >
92+ }
93+
5794 return (
5895 < div className = "account-list" >
5996 { showMainWallet &&
@@ -88,7 +125,9 @@ export default function AccountList({ showMainWallet = true, simplifiedView = fa
88125 </ div >
89126 < div className = "info-card" >
90127 < div className = "info-wrapper" >
91- < p > Token assets</ p >
128+ < div className = 'token-assets-title' >
129+ < p className = 'title' > Token assets</ p >
130+ </ div >
92131 < div >
93132 < div style = { { display : 'flex' , alignItems : 'center' , gap : '4px' } } >
94133 < ConetToken />
@@ -193,7 +232,10 @@ export default function AccountList({ showMainWallet = true, simplifiedView = fa
193232
194233 < div className = "info-card" >
195234 < div className = "info-wrapper" >
196- < p > Token assets</ p >
235+ < div className = 'token-assets-title' >
236+ < p className = 'title' > Token assets</ p >
237+ { renderRefreshButton ( ) }
238+ </ div >
197239 < div >
198240 < div style = { { display : 'flex' , alignItems : 'center' , gap : '4px' } } >
199241 < SpToken />
@@ -216,6 +258,7 @@ export default function AccountList({ showMainWallet = true, simplifiedView = fa
216258 )
217259 }
218260 </ div >
261+
219262 < div >
220263 < div style = { { display : 'flex' , alignItems : 'center' , gap : '4px' } } >
221264 < SolanaToken />
0 commit comments