github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/token/querier_v2.go (about) 1 package token 2 3 import ( 4 "fmt" 5 6 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 7 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 8 abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types" 9 "github.com/fibonacci-chain/fbc/x/common" 10 "github.com/fibonacci-chain/fbc/x/token/types" 11 ) 12 13 func queryAccountV2(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper) ([]byte, sdk.Error) { 14 addr, err := sdk.AccAddressFromBech32(path[0]) 15 if err != nil { 16 return nil, sdk.ErrInvalidAddress(fmt.Sprintf("invalid address:%s", path[0])) 17 } 18 19 //var queryPage QueryPage 20 var accountParam types.AccountParamV2 21 //var symbol string 22 err = codec.Cdc.UnmarshalJSON(req.Data, &accountParam) 23 if err != nil { 24 return nil, sdk.ErrUnknownRequest(err.Error()) 25 } 26 27 coinsInfo := keeper.GetCoinsInfo(ctx, addr) 28 coinsInfoChosen := make([]CoinInfo, 0) 29 if accountParam.Currency == "" { 30 coinsInfoChosen = coinsInfo 31 32 // hide_zero yes or no 33 if accountParam.HideZero == "no" { 34 tokens := keeper.GetTokensInfo(ctx) 35 36 for _, token := range tokens { 37 found := false 38 for _, coinInfo := range coinsInfo { 39 if coinInfo.Symbol == token.Symbol { 40 found = true 41 break 42 } 43 } 44 // not found 45 if !found { 46 ci := types.NewCoinInfo(token.Symbol, "0", "0") 47 coinsInfoChosen = append(coinsInfoChosen, *ci) 48 } 49 } 50 } 51 } else { 52 for _, coinInfo := range coinsInfo { 53 if coinInfo.Symbol == accountParam.Currency { 54 coinsInfoChosen = append(coinsInfoChosen, coinInfo) 55 } 56 } 57 } 58 59 res, err := common.JSONMarshalV2(coinsInfoChosen) 60 if err != nil { 61 return nil, sdk.ErrInternal(err.Error()) 62 } 63 return res, nil 64 } 65 66 func queryTokensV2(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper) ([]byte, sdk.Error) { 67 tokens := keeper.GetTokensInfo(ctx) 68 69 var tokensResp types.Tokens 70 for _, token := range tokens { 71 tokenResp := types.GenTokenResp(token) 72 tokenResp.TotalSupply = keeper.GetTokenTotalSupply(ctx, token.Symbol) 73 tokensResp = append(tokensResp, tokenResp) 74 } 75 res, err := common.JSONMarshalV2(tokensResp) 76 if err != nil { 77 return nil, sdk.ErrInternal(err.Error()) 78 } 79 return res, nil 80 } 81 82 func queryTokenV2(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper) ([]byte, sdk.Error) { 83 name := path[0] 84 85 token := keeper.GetTokenInfo(ctx, name) 86 if token.Symbol == "" { 87 return nil, sdk.ErrInvalidCoins("unknown token") 88 } 89 90 tokenResp := types.GenTokenResp(token) 91 tokenResp.TotalSupply = keeper.GetTokenTotalSupply(ctx, name) 92 res, err := common.JSONMarshalV2(tokenResp) 93 if err != nil { 94 return nil, sdk.ErrInternal(err.Error()) 95 } 96 return res, nil 97 }