github.com/lino-network/lino@v0.6.11/x/developer/handler.go (about)

     1  package developer
     2  
     3  import (
     4  	"fmt"
     5  	"reflect"
     6  
     7  	sdk "github.com/cosmos/cosmos-sdk/types"
     8  
     9  	linotypes "github.com/lino-network/lino/types"
    10  	"github.com/lino-network/lino/x/developer/types"
    11  )
    12  
    13  // NewHandler - Handle all "developer" type messages.
    14  func NewHandler(dm DeveloperKeeper) sdk.Handler {
    15  	return func(ctx sdk.Context, msg sdk.Msg) sdk.Result {
    16  		switch msg := msg.(type) {
    17  		case types.DeveloperRegisterMsg:
    18  			return handleDeveloperRegisterMsg(ctx, dm, msg)
    19  		case types.DeveloperUpdateMsg:
    20  			return handleDeveloperUpdateMsg(ctx, dm, msg)
    21  		// case types.DeveloperRevokeMsg:
    22  		// 	return handleDeveloperRevokeMsg(ctx, dm, am, gm, msg)
    23  		case types.IDAIssueMsg:
    24  			return handleIDAIssueMsg(ctx, dm, msg)
    25  		case types.IDAMintMsg:
    26  			return handleIDAMintMsg(ctx, dm, msg)
    27  		case types.IDATransferMsg:
    28  			return handleIDATransferMsg(ctx, dm, msg)
    29  		case types.IDAAuthorizeMsg:
    30  			return handleIDAAuthorizeMsg(ctx, dm, msg)
    31  		case types.UpdateAffiliatedMsg:
    32  			return handleUpdateAffiliatedMsg(ctx, dm, msg)
    33  		case types.IDAConvertFromLinoMsg:
    34  			if ctx.BlockHeight() >= linotypes.Upgrade5Update2 {
    35  				return handleIDAConvertFromLinoMsg(ctx, dm, msg)
    36  			} else {
    37  				errMsg := fmt.Sprintf(
    38  					"Unrecognized developer msg type: %v", reflect.TypeOf(msg).Name())
    39  				return sdk.ErrUnknownRequest(errMsg).Result()
    40  			}
    41  		default:
    42  			errMsg := fmt.Sprintf("Unrecognized developer msg type: %v", reflect.TypeOf(msg).Name())
    43  			return sdk.ErrUnknownRequest(errMsg).Result()
    44  		}
    45  	}
    46  }
    47  
    48  func handleDeveloperRegisterMsg(
    49  	ctx sdk.Context, dm DeveloperKeeper, msg types.DeveloperRegisterMsg) sdk.Result {
    50  	if err := dm.RegisterDeveloper(
    51  		ctx, msg.Username, msg.Website, msg.Description, msg.AppMetaData); err != nil {
    52  		return err.Result()
    53  	}
    54  	return sdk.Result{}
    55  }
    56  
    57  func handleDeveloperUpdateMsg(
    58  	ctx sdk.Context, dm DeveloperKeeper, msg types.DeveloperUpdateMsg) sdk.Result {
    59  	if err := dm.UpdateDeveloper(
    60  		ctx, msg.Username, msg.Website, msg.Description, msg.AppMetaData); err != nil {
    61  		return err.Result()
    62  	}
    63  	return sdk.Result{}
    64  }
    65  
    66  func handleUpdateAffiliatedMsg(
    67  	ctx sdk.Context, dm DeveloperKeeper, msg types.UpdateAffiliatedMsg) sdk.Result {
    68  	if err := dm.UpdateAffiliated(ctx, msg.App, msg.Username, msg.Activate); err != nil {
    69  		return err.Result()
    70  	}
    71  	return sdk.Result{}
    72  }
    73  
    74  func handleIDAIssueMsg(
    75  	ctx sdk.Context, dm DeveloperKeeper, msg types.IDAIssueMsg) sdk.Result {
    76  	if err := dm.IssueIDA(ctx, msg.Username, string(msg.Username), msg.IDAPrice); err != nil {
    77  		return err.Result()
    78  	}
    79  	return sdk.Result{}
    80  }
    81  
    82  func handleIDAMintMsg(
    83  	ctx sdk.Context, dm DeveloperKeeper, msg types.IDAMintMsg) sdk.Result {
    84  	amount, err := linotypes.LinoToCoin(msg.Amount)
    85  	if err != nil {
    86  		return err.Result()
    87  	}
    88  	if err := dm.MintIDA(ctx, msg.Username, amount); err != nil {
    89  		return err.Result()
    90  	}
    91  	return sdk.Result{}
    92  }
    93  
    94  func handleIDAConvertFromLinoMsg(
    95  	ctx sdk.Context, dm DeveloperKeeper, msg types.IDAConvertFromLinoMsg) sdk.Result {
    96  	amount, err := linotypes.LinoToCoin(msg.Amount)
    97  	if err != nil {
    98  		return err.Result()
    99  	}
   100  	if err := dm.IDAConvertFromLino(ctx, msg.Username, msg.App, amount); err != nil {
   101  		return err.Result()
   102  	}
   103  	return sdk.Result{}
   104  }
   105  
   106  func handleIDATransferMsg(
   107  	ctx sdk.Context, dm DeveloperKeeper, msg types.IDATransferMsg) sdk.Result {
   108  	amount, err := msg.Amount.ToMiniIDA()
   109  	if err != nil {
   110  		return err.Result()
   111  	}
   112  	if err := dm.AppTransferIDA(ctx, msg.App, msg.Signer, amount, msg.From, msg.To); err != nil {
   113  		return err.Result()
   114  	}
   115  	return sdk.Result{}
   116  }
   117  
   118  func handleIDAAuthorizeMsg(ctx sdk.Context, dm DeveloperKeeper, msg types.IDAAuthorizeMsg) sdk.Result {
   119  	if err := dm.UpdateIDAAuth(ctx, msg.App, msg.Username, msg.Activate); err != nil {
   120  		return err.Result()
   121  	}
   122  	return sdk.Result{}
   123  }
   124  
   125  // func handleDeveloperRevokeMsg(
   126  // 	ctx sdk.Context, dm DeveloperManager, am acc.AccountManager,
   127  // 	gm *global.GlobalManager, msg types.DeveloperRevokeMsg) sdk.Result {
   128  // 	if !dm.DoesDeveloperExist(ctx, msg.Username) {
   129  // 		return types.ErrDeveloperNotFound().Result()
   130  // 	}
   131  
   132  // 	if err := dm.RemoveFromDeveloperList(ctx, msg.Username); err != nil {
   133  // 		return err.Result()
   134  // 	}
   135  
   136  // 	coin, withdrawErr := dm.WithdrawAll(ctx, msg.Username)
   137  // 	if withdrawErr != nil {
   138  // 		return withdrawErr.Result()
   139  // 	}
   140  
   141  // 	param, err := dm.paramHolder.GetDeveloperParam(ctx)
   142  // 	if err != nil {
   143  // 		return err.Result()
   144  // 	}
   145  
   146  // 	if err := returnCoinTo(
   147  // 		ctx, msg.Username, gm, am, param.DeveloperCoinReturnTimes, param.DeveloperCoinReturnIntervalSec, coin); err != nil {
   148  // 		return err.Result()
   149  // 	}
   150  // 	return sdk.Result{}
   151  // }