github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/mint/internal/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/libs/cosmos-sdk/x/mint/internal/types" 9 10 sdkGov "github.com/fibonacci-chain/fbc/x/gov" 11 govKeeper "github.com/fibonacci-chain/fbc/x/gov/keeper" 12 govTypes "github.com/fibonacci-chain/fbc/x/gov/types" 13 ) 14 15 var _ govKeeper.ProposalHandler = (*Keeper)(nil) 16 17 // GetMinDeposit returns min deposit 18 func (k Keeper) GetMinDeposit(ctx sdk.Context, content sdkGov.Content) (minDeposit sdk.SysCoins) { 19 switch content.(type) { 20 case types.ManageTreasuresProposal, types.ModifyNextBlockUpdateProposal: 21 minDeposit = k.govKeeper.GetDepositParams(ctx).MinDeposit 22 } 23 24 return 25 } 26 27 // GetMaxDepositPeriod returns max deposit period 28 func (k Keeper) GetMaxDepositPeriod(ctx sdk.Context, content sdkGov.Content) (maxDepositPeriod time.Duration) { 29 switch content.(type) { 30 case types.ManageTreasuresProposal, types.ModifyNextBlockUpdateProposal: 31 maxDepositPeriod = k.govKeeper.GetDepositParams(ctx).MaxDepositPeriod 32 } 33 34 return 35 } 36 37 // GetVotingPeriod returns voting period 38 func (k Keeper) GetVotingPeriod(ctx sdk.Context, content sdkGov.Content) (votingPeriod time.Duration) { 39 switch content.(type) { 40 case types.ManageTreasuresProposal, types.ModifyNextBlockUpdateProposal: 41 votingPeriod = k.govKeeper.GetVotingParams(ctx).VotingPeriod 42 } 43 44 return 45 } 46 47 // CheckMsgSubmitProposal validates MsgSubmitProposal 48 func (k Keeper) CheckMsgSubmitProposal(ctx sdk.Context, msg govTypes.MsgSubmitProposal) sdk.Error { 49 switch content := msg.Content.(type) { 50 case types.ManageTreasuresProposal: 51 if !k.sk.IsValidator(ctx, msg.Proposer) { 52 return types.ErrProposerMustBeValidator 53 } 54 treasures := k.GetTreasures(ctx) 55 if content.IsAdded { 56 result := types.InsertAndUpdateTreasures(treasures, content.Treasures) 57 if err := types.ValidateTreasures(result); err != nil { 58 return types.ErrTreasuresInternal(err) 59 } 60 } else { 61 result, err := types.DeleteTreasures(treasures, content.Treasures) 62 if err != nil { 63 return types.ErrTreasuresInternal(err) 64 } 65 if err := types.ValidateTreasures(result); err != nil { 66 return types.ErrTreasuresInternal(err) 67 } 68 } 69 return nil 70 case types.ModifyNextBlockUpdateProposal: 71 if !k.sk.IsValidator(ctx, msg.Proposer) { 72 return types.ErrProposerMustBeValidator 73 } 74 return nil 75 default: 76 return sdk.ErrUnknownRequest(fmt.Sprintf("unrecognized %s proposal content type: %T", types.DefaultCodespace, content)) 77 } 78 } 79 80 // nolint 81 func (k Keeper) AfterSubmitProposalHandler(_ sdk.Context, _ govTypes.Proposal) {} 82 func (k Keeper) AfterDepositPeriodPassed(_ sdk.Context, _ govTypes.Proposal) {} 83 func (k Keeper) RejectedHandler(_ sdk.Context, _ govTypes.Content) {} 84 func (k Keeper) VoteHandler(_ sdk.Context, _ govTypes.Proposal, _ govTypes.Vote) (string, sdk.Error) { 85 return "", nil 86 }