decred.org/dcrwallet/v3@v3.1.0/wallet/stakepool.go (about)

     1  // Copyright (c) 2016 The Decred developers
     2  // Use of this source code is governed by an ISC
     3  // license that can be found in the LICENSE file.
     4  
     5  package wallet
     6  
     7  import (
     8  	"context"
     9  
    10  	"decred.org/dcrwallet/v3/errors"
    11  	"decred.org/dcrwallet/v3/wallet/udb"
    12  	"decred.org/dcrwallet/v3/wallet/walletdb"
    13  	"github.com/decred/dcrd/txscript/v4/stdaddr"
    14  )
    15  
    16  // StakePoolUserInfo returns the stake pool user information for a user
    17  // identified by their voting address.
    18  func (w *Wallet) StakePoolUserInfo(ctx context.Context, userAddress stdaddr.StakeAddress) (*udb.StakePoolUser, error) {
    19  	const op errors.Op = "wallet.StakePoolUserInfo"
    20  
    21  	if !w.stakePoolEnabled {
    22  		return nil, errors.E(op, errors.Invalid, "VSP features are disabled")
    23  	}
    24  
    25  	var user *udb.StakePoolUser
    26  	err := walletdb.View(ctx, w.db, func(tx walletdb.ReadTx) error {
    27  		stakemgrNs := tx.ReadBucket(wstakemgrNamespaceKey)
    28  		var err error
    29  		user, err = w.stakeMgr.StakePoolUserInfo(stakemgrNs, userAddress)
    30  		return err
    31  	})
    32  	if err != nil {
    33  		return nil, errors.E(op, err)
    34  	}
    35  	return user, nil
    36  }