@@ -20,7 +20,7 @@ import { handleCreateWallet } from './helpers/walletHandlers';
2020import { handleSendToUntrustedWallets } from './helpers/sendTokenHandlers' ;
2121import apiClient from '../../utils/apiClient' ;
2222import { getTrustedWallets } from '../../api/trust_relationships' ;
23- import { getPendingTransfers } from '../../api/wallets' ;
23+ import { getPendingTransfers , getWalletById } from '../../api/wallets' ;
2424
2525
2626
@@ -41,6 +41,10 @@ const SendTokens = () => {
4141
4242 const handleTabChange = ( event , newValue ) => {
4343 setTabValue ( newValue ) ;
44+ setSenderWalletName ( null ) ;
45+ setSenderWalletTokens ( null ) ;
46+ setSenderWalletId ( null ) ;
47+ setPendingTransfers ( 0 ) ;
4448 } ;
4549
4650 useEffect ( ( ) => {
@@ -53,7 +57,10 @@ const SendTokens = () => {
5357 try {
5458 setIsLoading ( true ) ;
5559 const wallets = await getTrustedWallets ( authContext . token ) ;
56- setTrustedWallets ( wallets ) ;
60+ const uniqueWallets = wallets . filter ( ( wallet , index , self ) =>
61+ index === self . findIndex ( ( w ) => w . id === wallet . id )
62+ ) ;
63+ setTrustedWallets ( uniqueWallets ) ;
5764 } catch ( error ) {
5865 console . error ( error ) ;
5966 setErrorMessage ( 'An error occurred while fetching trusted wallets.' ) ;
@@ -72,6 +79,21 @@ const SendTokens = () => {
7279 }
7380 } ;
7481
82+ const refreshWalletData = async ( walletId ) => {
83+ try {
84+ const walletData = await getWalletById ( authContext . token , walletId ) ;
85+ const pendingAmount = await fetchPendingTransfers ( walletId ) ;
86+
87+ setSenderWalletTokens ( walletData . tokensInWallet ) ;
88+ setPendingTransfers ( pendingAmount ) ;
89+
90+ return walletData ;
91+ } catch ( error ) {
92+ console . error ( 'Error refreshing wallet data:' , error ) ;
93+ setErrorMessage ( 'An error occurred while refreshing wallet data.' ) ;
94+ }
95+ } ;
96+
7597 const handleWalletSelection = async ( wallet ) => {
7698 if ( ! wallet ) {
7799 setSenderWalletName ( null ) ;
@@ -133,18 +155,14 @@ const SendTokens = () => {
133155 receiver_wallet : data . receiverWallet ,
134156 claim : false ,
135157 } )
136- . then ( ( response ) => {
158+ . then ( async ( response ) => {
137159 console . log (
138160 'Tokens transfer completed. Response: ' + JSON . stringify ( response )
139161 ) ;
140162
141- // update tokens amount: total and sender's wallet token
142- // TODO: uncomment when API is ready: is should have a totalTokens value
143- // getTotalTokensAmount();
144- setSenderWalletTokens ( ( prev ) => prev - data . tokensAmount ) ;
145-
163+ // Refresh wallet data from backend to get accurate token information
146164 if ( senderWalletId ) {
147- fetchPendingTransfers ( senderWalletId ) . then ( setPendingTransfers ) ;
165+ await refreshWalletData ( senderWalletId ) ;
148166 }
149167
150168 setErrorMessage ( '' ) ;
@@ -176,7 +194,9 @@ const SendTokens = () => {
176194 setSenderWalletTokens,
177195 setCreatedWalletName,
178196 setPendingTransfers,
179- fetchPendingTransfers
197+ fetchPendingTransfers,
198+ refreshWalletData,
199+ senderWalletId
180200 } ;
181201
182202 return (
@@ -231,12 +251,14 @@ const SendTokens = () => {
231251 walletType = "managed"
232252 availableTokens = { ( senderWalletTokens || 0 ) - pendingTransfers }
233253 />
234- < TokenInfoBlock
235- inWallet = { senderWalletTokens || 0 }
236- pendingTransfer = { pendingTransfers }
237- available = { ( senderWalletTokens || 0 ) - pendingTransfers }
238- senderWalletName = { senderWalletName }
239- />
254+ { senderWalletName && (
255+ < TokenInfoBlock
256+ inWallet = { senderWalletTokens || 0 }
257+ pendingTransfer = { pendingTransfers }
258+ available = { ( senderWalletTokens || 0 ) - pendingTransfers }
259+ senderWalletName = { senderWalletName }
260+ />
261+ ) }
240262 </ div >
241263 </ TabPanel >
242264
@@ -249,12 +271,14 @@ const SendTokens = () => {
249271 trustedWallets = { trustedWallets }
250272 availableTokens = { ( senderWalletTokens || 0 ) - pendingTransfers }
251273 />
252- < TokenInfoBlock
253- inWallet = { senderWalletTokens || 0 }
254- pendingTransfer = { pendingTransfers }
255- available = { ( senderWalletTokens || 0 ) - pendingTransfers }
256- senderWalletName = { senderWalletName }
257- />
274+ { senderWalletName && (
275+ < TokenInfoBlock
276+ inWallet = { senderWalletTokens || 0 }
277+ pendingTransfer = { pendingTransfers }
278+ available = { ( senderWalletTokens || 0 ) - pendingTransfers }
279+ senderWalletName = { senderWalletName }
280+ />
281+ ) }
258282 </ div >
259283 </ TabPanel >
260284
@@ -265,12 +289,14 @@ const SendTokens = () => {
265289 onSenderWalletSelected = { handleWalletSelection }
266290 availableTokens = { ( senderWalletTokens || 0 ) - pendingTransfers }
267291 />
268- < TokenInfoBlock
269- inWallet = { senderWalletTokens || 0 }
270- pendingTransfer = { pendingTransfers }
271- available = { ( senderWalletTokens || 0 ) - pendingTransfers }
272- senderWalletName = { senderWalletName }
273- />
292+ { senderWalletName && (
293+ < TokenInfoBlock
294+ inWallet = { senderWalletTokens || 0 }
295+ pendingTransfer = { pendingTransfers }
296+ available = { ( senderWalletTokens || 0 ) - pendingTransfers }
297+ senderWalletName = { senderWalletName }
298+ />
299+ ) }
274300 </ div >
275301 </ TabPanel >
276302 </ Paper >
0 commit comments