@@ -5324,6 +5324,10 @@ func (c *Core) Send(pw []byte, assetID uint32, value uint64, address string, sub
53245324 return nil , err
53255325 }
53265326
5327+ if err = wallet .checkPeersAndSyncStatus (); err != nil {
5328+ return nil , err
5329+ }
5330+
53275331 var coin asset.Coin
53285332 feeSuggestion := c .feeSuggestionAny (assetID )
53295333 if ! subtract {
@@ -5379,6 +5383,11 @@ func (c *Core) ApproveToken(appPW []byte, assetID uint32, dexAddr string, onConf
53795383 return "" , err
53805384 }
53815385
5386+ err = wallet .checkPeersAndSyncStatus ()
5387+ if err != nil {
5388+ return "" , err
5389+ }
5390+
53825391 dex , connected , err := c .dex (dexAddr )
53835392 if err != nil {
53845393 return "" , err
@@ -5424,6 +5433,11 @@ func (c *Core) UnapproveToken(appPW []byte, assetID uint32, version uint32) (str
54245433 return "" , err
54255434 }
54265435
5436+ err = wallet .checkPeersAndSyncStatus ()
5437+ if err != nil {
5438+ return "" , err
5439+ }
5440+
54275441 onConfirm := func () {
54285442 go c .notify (newTokenApprovalNote (wallet .state ()))
54295443 }
@@ -10358,15 +10372,24 @@ func (c *Core) saveDisabledRateSources() {
1035810372 }
1035910373}
1036010374
10361- func (c * Core ) shieldedWallet (assetID uint32 ) (asset.ShieldedWallet , error ) {
10375+ func (c * Core ) shieldedWallet (assetID uint32 , forFundTransfer ... bool ) (asset.ShieldedWallet , error ) {
1036210376 w , found := c .wallet (assetID )
1036310377 if ! found {
1036410378 return nil , fmt .Errorf ("no %s wallet" , unbip (assetID ))
1036510379 }
10380+
1036610381 sw , is := w .Wallet .(asset.ShieldedWallet )
1036710382 if ! is {
1036810383 return nil , fmt .Errorf ("%s wallet is not a shielded wallet" , unbip (assetID ))
1036910384 }
10385+
10386+ // Check if this wallet can send funds at the moment.
10387+ if len (forFundTransfer ) > 0 && forFundTransfer [0 ] {
10388+ if err := w .checkPeersAndSyncStatus (); err != nil {
10389+ return nil , err
10390+ }
10391+ }
10392+
1037010393 return sw , nil
1037110394}
1037210395
@@ -10393,7 +10416,7 @@ func (c *Core) NewShieldedAddress(assetID uint32) (string, error) {
1039310416
1039410417// ShieldFunds moves funds from the transparent account to the shielded account.
1039510418func (c * Core ) ShieldFunds (assetID uint32 , amt uint64 ) ([]byte , error ) {
10396- sw , err := c .shieldedWallet (assetID )
10419+ sw , err := c .shieldedWallet (assetID , true )
1039710420 if err != nil {
1039810421 return nil , err
1039910422 }
@@ -10403,7 +10426,7 @@ func (c *Core) ShieldFunds(assetID uint32, amt uint64) ([]byte, error) {
1040310426// UnshieldFunds moves funds from the shielded account to the transparent
1040410427// account.
1040510428func (c * Core ) UnshieldFunds (assetID uint32 , amt uint64 ) ([]byte , error ) {
10406- sw , err := c .shieldedWallet (assetID )
10429+ sw , err := c .shieldedWallet (assetID , true )
1040710430 if err != nil {
1040810431 return nil , err
1040910432 }
@@ -10419,7 +10442,7 @@ func (c *Core) SendShielded(appPW []byte, assetID uint32, toAddr string, amt uin
1041910442 return nil , fmt .Errorf ("password error: %w" , err )
1042010443 }
1042110444
10422- sw , err := c .shieldedWallet (assetID )
10445+ sw , err := c .shieldedWallet (assetID , true )
1042310446 if err != nil {
1042410447 return nil , err
1042510448 }
0 commit comments