From 325dc7d0e48de5bf37e3b44d12cf07940cd6719c Mon Sep 17 00:00:00 2001 From: Evgenii Stratonikov Date: Fri, 13 Mar 2020 17:15:39 +0300 Subject: [PATCH] cli: implement `wallet nep5 remove` Remove unused tokens from the wallet. --- cli/wallet/nep5.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/cli/wallet/nep5.go b/cli/wallet/nep5.go index 5961db31e..746df9796 100644 --- a/cli/wallet/nep5.go +++ b/cli/wallet/nep5.go @@ -66,6 +66,20 @@ func newNEP5Commands() []cli.Command { }, }, }, + { + Name: "remove", + Usage: "remove NEP5 token from the wallet", + UsageText: "remove --path ", + Action: removeNEP5Token, + Flags: []cli.Flag{ + walletPathFlag, + cli.StringFlag{ + Name: "token", + Usage: "Token name or hash", + }, + forceFlag, + }, + }, { Name: "transfer", Usage: "transfer NEP5 tokens", @@ -260,6 +274,34 @@ func printNEP5Info(ctx *cli.Context) error { return nil } +func removeNEP5Token(ctx *cli.Context) error { + wall, err := openWallet(ctx.String("path")) + if err != nil { + return cli.NewExitError(err, 1) + } + defer wall.Close() + + name := ctx.Args().First() + if name == "" { + return cli.NewExitError("token must be specified", 1) + } + token, err := getMatchingToken(wall, name) + if err != nil { + return cli.NewExitError(err, 1) + } + if !ctx.Bool("force") { + if ok := askForConsent(); !ok { + return nil + } + } + if err := wall.RemoveToken(token.Hash); err != nil { + return cli.NewExitError(fmt.Errorf("can't remove token: %v", err), 1) + } else if err := wall.Save(); err != nil { + return cli.NewExitError(fmt.Errorf("error while saving wallet: %v", err), 1) + } + return nil +} + func transferNEP5(ctx *cli.Context) error { wall, err := openWallet(ctx.String("path")) if err != nil {