Skip to content

Commit

Permalink
Resolve comment
Browse files Browse the repository at this point in the history
  • Loading branch information
HaoyangLiu committed Aug 8, 2019
1 parent 3882fdd commit 6b59134
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 23 deletions.
44 changes: 21 additions & 23 deletions plugins/account/client/cli/account_flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ import (
"github.com/spf13/viper"

clientFlags "github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/context"
authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli"

"github.com/binance-chain/node/common/client"
"github.com/binance-chain/node/common/types"
Expand Down Expand Up @@ -44,6 +42,21 @@ func setAccountFlagsCmd(cdc *wire.Codec) *cobra.Command {
if err != nil {
return err
}
if !viper.GetBool(clientFlags.FlagOffline) {
acc, err := cliCtx.GetAccount(from)
if err != nil {
return err
}
appAccount, ok := acc.(types.NamedAccount)
if !ok {
return fmt.Errorf("unexpected account type")
}
flags := appAccount.GetFlags()

if flags == accountFlags {
return fmt.Errorf("the specified account flags is identical to its current value")
}
}
// build message
msg := account.NewSetAccountFlagsMsg(from, accountFlags)
err = msg.ValidateBasic()
Expand Down Expand Up @@ -85,13 +98,6 @@ func enableMemoCheckFlagCmd(cdc *wire.Codec) *cobra.Command {
return err
}
} else {
cliCtx := context.NewCLIContext().
WithCodec(cdc).
WithAccountDecoder(authcmd.GetAccountDecoder(cdc))

if err := cliCtx.EnsureAccountExistsFromAddr(from); err != nil {
return err
}
acc, err := cliCtx.GetAccount(from)
if err != nil {
return err
Expand All @@ -102,10 +108,10 @@ func enableMemoCheckFlagCmd(cdc *wire.Codec) *cobra.Command {
}
flags = appAccount.GetFlags()
}
if flags == (flags | scripts.TransferMemoCheckerFlag) {
return fmt.Errorf("transfer memo checker flag has already been enabled")
flags, err = enableFlag(flags, scripts.TransferMemoCheckerFlag)
if err != nil {
return err
}
flags = flags | scripts.TransferMemoCheckerFlag
// build message
msg := account.NewSetAccountFlagsMsg(from, flags)
err = msg.ValidateBasic()
Expand Down Expand Up @@ -147,13 +153,6 @@ func disableMemoCheckFlagCmd(cdc *wire.Codec) *cobra.Command {
return err
}
} else {
cliCtx := context.NewCLIContext().
WithCodec(cdc).
WithAccountDecoder(authcmd.GetAccountDecoder(cdc))

if err := cliCtx.EnsureAccountExistsFromAddr(from); err != nil {
return err
}
acc, err := cliCtx.GetAccount(from)
if err != nil {
return err
Expand All @@ -164,11 +163,10 @@ func disableMemoCheckFlagCmd(cdc *wire.Codec) *cobra.Command {
}
flags = appAccount.GetFlags()
}
invMemoCheck := ^scripts.TransferMemoCheckerFlag
if flags == (flags & invMemoCheck) {
return fmt.Errorf("transfer memo checker flag has already been disabled")
flags, err = disableFlag(flags, scripts.TransferMemoCheckerFlag)
if err != nil {
return err
}
flags = flags & invMemoCheck
// build message
msg := account.NewSetAccountFlagsMsg(from, flags)
err = msg.ValidateBasic()
Expand Down
21 changes: 21 additions & 0 deletions plugins/account/client/cli/utils.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package cli

import "fmt"


func enableFlag(flags uint64, targetFlag uint64) (uint64, error) {
enabledFlags := flags | targetFlag
if flags == enabledFlags {
return 0, fmt.Errorf("flag %x has already been enabled", targetFlag)
}
return enabledFlags, nil
}

func disableFlag(flags uint64, targetFlag uint64) (uint64, error) {
inv := ^targetFlag
disabledFlags := flags & inv
if flags == disabledFlags {
return 0, fmt.Errorf("flag %x has already been disabled", targetFlag)
}
return disabledFlags, nil
}

0 comments on commit 6b59134

Please sign in to comment.