You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.6 KiB

// ignore
// +build allcommands walletcmd
package main
import (
"fmt"
"math/rand"
"strings"
"time"
)
var walletConfirmationCode string
var walletConfirmationUser string
var walletTransactionAmnt string
func init() {
command := Command{
Cmd: []string{"wallet", "confirm"},
Description: "$user $amount / $user $confirmation - Send or confirm a wallet payment",
Help: "",
Exec: cmdWallet,
}
RegisterCommand(command)
}
func cmdWallet(cmd []string) {
if len(cmd) < 3 {
return
}
if cmd[0] == "wallet" {
rand.Seed(time.Now().UnixNano())
chars := []rune("ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
"abcdefghijklmnopqrstuvwxyz" +
"0123456789")
length := 8
var b strings.Builder
for i := 0; i < length; i++ {
b.WriteRune(chars[rand.Intn(len(chars))])
}
walletConfirmationCode = b.String()
walletConfirmationUser = cmd[1]
walletTransactionAmnt = cmd[2]
printInfo(fmt.Sprintf("To confirm sending %s to %s, type /confirm %s %s", cmd[2], cmd[1], cmd[1], walletConfirmationCode))
} else if cmd[0] == "confirm" {
if cmd[1] == walletConfirmationUser && cmd[2] == walletConfirmationCode {
txWallet := k.NewWallet()
wAPI, err := txWallet.SendXLM(walletConfirmationUser, walletTransactionAmnt, "")
if err != nil {
printError(fmt.Sprintf("There was an error with your wallet tx:\n\t%+v", err))
} else {
printInfo(fmt.Sprintf("You have sent %sXLM to %s with tx ID: %s", wAPI.Result.Amount, wAPI.Result.ToUsername, wAPI.Result.TxID))
}
} else {
printError("There was an error validating your confirmation. Your wallet has been untouched.")
}
}
}