github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/farm/proposal_handler.go (about)

     1  package farm
     2  
     3  import (
     4  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     5  	"github.com/fibonacci-chain/fbc/x/common"
     6  	"github.com/fibonacci-chain/fbc/x/farm/types"
     7  	govTypes "github.com/fibonacci-chain/fbc/x/gov/types"
     8  )
     9  
    10  // NewManageWhiteListProposalHandler handles "gov" type message in "farm"
    11  func NewManageWhiteListProposalHandler(k *Keeper) govTypes.Handler {
    12  	return func(ctx sdk.Context, proposal *govTypes.Proposal) (err sdk.Error) {
    13  		switch content := proposal.Content.(type) {
    14  		case types.ManageWhiteListProposal:
    15  			return handleManageWhiteListProposal(ctx, k, content)
    16  		default:
    17  			return common.ErrUnknownProposalType(DefaultCodespace, content.ProposalType())
    18  		}
    19  	}
    20  }
    21  
    22  func handleManageWhiteListProposal(ctx sdk.Context, k *Keeper, p types.ManageWhiteListProposal) sdk.Error {
    23  	if sdkErr := k.CheckMsgManageWhiteListProposal(ctx, p); sdkErr != nil {
    24  		return sdkErr
    25  	}
    26  
    27  	if p.IsAdded {
    28  		// add pool name into whitelist
    29  		k.SetWhitelist(ctx, p.PoolName)
    30  		return nil
    31  	}
    32  
    33  	// remove pool name from whitelist
    34  	k.DeleteWhiteList(ctx, p.PoolName)
    35  	return nil
    36  }