Skip to content

Commit

Permalink
fix wallet delete address where address is default
Browse files Browse the repository at this point in the history
  • Loading branch information
zgfzgf authored and codefather-filestar committed Jun 17, 2021
1 parent 771a76e commit 727eb16
Showing 1 changed file with 14 additions and 10 deletions.
24 changes: 14 additions & 10 deletions chain/wallet/wallet.go
Original file line number Diff line number Diff line change
Expand Up @@ -306,23 +306,27 @@ func (w *LocalWallet) walletDelete(ctx context.Context, addr address.Address) er
return nil
}

func (w *LocalWallet) deleteDefault() error {
w.lk.Lock()
defer w.lk.Unlock()
if err := w.keystore.Delete(KDefault); err != nil {
if !xerrors.Is(err, types.ErrKeyInfoNotFound) {
log.Warnf("failed to unregister current default key: %s", err)
}
}
return nil
}

func (w *LocalWallet) WalletDelete(ctx context.Context, addr address.Address) error {
if err := w.walletDelete(ctx, addr); err != nil {
return xerrors.Errorf("wallet delete: %w", err)
}

def, err := w.GetDefault()
if err != nil {
return xerrors.Errorf("getting default address: %w", err)
}

if def == addr {
err = w.SetDefault(address.Undef)
if err != nil {
return xerrors.Errorf("unsetting default address: %w", err)
if def, err := w.GetDefault(); err == nil {
if def == addr {
w.deleteDefault()
}
}

return nil
}

Expand Down

0 comments on commit 727eb16

Please sign in to comment.