github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/farm/keeper/proposal.go (about) 1 package keeper 2 3 import ( 4 "fmt" 5 "time" 6 7 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 8 "github.com/fibonacci-chain/fbc/x/farm/types" 9 sdkGov "github.com/fibonacci-chain/fbc/x/gov" 10 govKeeper "github.com/fibonacci-chain/fbc/x/gov/keeper" 11 govTypes "github.com/fibonacci-chain/fbc/x/gov/types" 12 ) 13 14 var _ govKeeper.ProposalHandler = (*Keeper)(nil) 15 16 // GetMinDeposit returns min deposit 17 func (k Keeper) GetMinDeposit(ctx sdk.Context, content sdkGov.Content) (minDeposit sdk.SysCoins) { 18 if _, ok := content.(types.ManageWhiteListProposal); ok { 19 minDeposit = k.govKeeper.GetDepositParams(ctx).MinDeposit 20 } 21 22 return 23 } 24 25 // GetMaxDepositPeriod returns max deposit period 26 func (k Keeper) GetMaxDepositPeriod(ctx sdk.Context, content sdkGov.Content) (maxDepositPeriod time.Duration) { 27 if _, ok := content.(types.ManageWhiteListProposal); ok { 28 maxDepositPeriod = k.govKeeper.GetDepositParams(ctx).MaxDepositPeriod 29 } 30 31 return 32 } 33 34 // GetVotingPeriod returns voting period 35 func (k Keeper) GetVotingPeriod(ctx sdk.Context, content sdkGov.Content) (votingPeriod time.Duration) { 36 if _, ok := content.(types.ManageWhiteListProposal); ok { 37 votingPeriod = k.govKeeper.GetVotingParams(ctx).VotingPeriod 38 } 39 40 return 41 } 42 43 // CheckMsgSubmitProposal validates MsgSubmitProposal 44 func (k Keeper) CheckMsgSubmitProposal(ctx sdk.Context, msg govTypes.MsgSubmitProposal) sdk.Error { 45 switch content := msg.Content.(type) { 46 case types.ManageWhiteListProposal: 47 return k.CheckMsgManageWhiteListProposal(ctx, content) 48 default: 49 return sdk.ErrUnknownRequest(fmt.Sprintf("unrecognized dex proposal content type: %T", content)) 50 } 51 } 52 53 // nolint 54 func (k Keeper) AfterSubmitProposalHandler(_ sdk.Context, _ govTypes.Proposal) {} 55 func (k Keeper) AfterDepositPeriodPassed(_ sdk.Context, _ govTypes.Proposal) {} 56 func (k Keeper) RejectedHandler(_ sdk.Context, _ govTypes.Content) {} 57 func (k Keeper) VoteHandler(_ sdk.Context, _ govTypes.Proposal, _ govTypes.Vote) (string, sdk.Error) { 58 return "", nil 59 } 60 61 // CheckMsgManageWhiteListProposal checks msg manage white list proposal 62 func (k Keeper) CheckMsgManageWhiteListProposal(ctx sdk.Context, proposal types.ManageWhiteListProposal) sdk.Error { 63 if proposal.IsAdded { 64 // add pool name into white list 65 // 1. check the existence 66 pool, found := k.GetFarmPool(ctx, proposal.PoolName) 67 if !found { 68 return types.ErrNoFarmPoolFound(proposal.PoolName) 69 } 70 // 2. check the swap token pair 71 if sdkErr := k.satisfyWhiteListAdmittance(ctx, pool); sdkErr != nil { 72 return sdkErr 73 } 74 75 return nil 76 } 77 78 // delete the pool name from the white list 79 // 1. check the existence of the pool name in whitelist 80 if !k.isPoolNameExistedInWhiteList(ctx, proposal.PoolName) { 81 return types.ErrPoolNameNotExistedInWhiteList(proposal.PoolName) 82 } 83 84 return nil 85 }