feat: add entry

This commit is contained in:
Adrien Waksberg 2019-10-20 12:30:23 +02:00
parent d4dee06902
commit d2de75a47b

View file

@ -13,21 +13,26 @@ type Cli struct {
Wallet Wallet Wallet Wallet
} }
func (c *Cli) ErrorBox(msg string) { func (c *Cli) NotificationBox(msg string, error bool) {
p := widgets.NewParagraph() p := widgets.NewParagraph()
p.SetRect(25, 20, 80, 23)
if error {
p.Title = "Error"
p.Text = fmt.Sprintf("[%s](fg:red) ", msg)
} else {
p.Title = "Notification" p.Title = "Notification"
p.SetRect(10, 0, 70, 5) p.Text = fmt.Sprintf("[%s](fg:green) ", msg)
p.Text = fmt.Sprintf("[ERROR: %s](fg:red) ", msg) }
ui.Render(p) ui.Render(p)
} }
func (c *Cli) InputBox(msg string, hidden bool) string { func (c *Cli) InputBox(title string, hidden bool) string {
var input, secret string var input, secret string
p := widgets.NewParagraph() p := widgets.NewParagraph()
p.SetRect(10, 10, 70, 5) p.SetRect(10, 10, 70, 5)
p.Text = fmt.Sprintf("%s ", msg) p.Title = title
ui.Render(p) ui.Render(p)
@ -54,9 +59,9 @@ func (c *Cli) InputBox(msg string, hidden bool) string {
for i := 1; i <= int(float64(len(input)) * 1.75); i++ { for i := 1; i <= int(float64(len(input)) * 1.75); i++ {
secret = secret + "*" secret = secret + "*"
} }
p.Text = fmt.Sprintf("%s %s", msg, secret) p.Text = secret
} else { } else {
p.Text = fmt.Sprintf("%s %s", msg, input) p.Text = input
} }
ui.Render(p) ui.Render(p)
} }
@ -65,7 +70,7 @@ func (c *Cli) InputBox(msg string, hidden bool) string {
func (c *Cli) EntryBox(entry Entry) { func (c *Cli) EntryBox(entry Entry) {
p := widgets.NewParagraph() p := widgets.NewParagraph()
p.Title = "Entry" p.Title = "Entry"
p.SetRect(25, 0, 80, 23) p.SetRect(25, 0, 80, 20)
p.Text = fmt.Sprintf("%s[Name:](fg:yellow) %s\n", p.Text, entry.Name) p.Text = fmt.Sprintf("%s[Name:](fg:yellow) %s\n", p.Text, entry.Name)
p.Text = fmt.Sprintf("%s[URI:](fg:yellow) %s\n", p.Text, entry.URI) p.Text = fmt.Sprintf("%s[URI:](fg:yellow) %s\n", p.Text, entry.URI)
p.Text = fmt.Sprintf("%s[User:](fg:yellow) %s\n", p.Text, entry.User) p.Text = fmt.Sprintf("%s[User:](fg:yellow) %s\n", p.Text, entry.User)
@ -96,13 +101,13 @@ func (c *Cli) UnlockWallet(wallet string) error {
} }
for i := 0; i < 3; i++ { for i := 0; i < 3; i++ {
c.Wallet.Passphrase = c.InputBox("Enter the passphrase to unlock the wallet:\n", true) c.Wallet.Passphrase = c.InputBox("Passphrase to unlock the wallet", true)
err = c.Wallet.Load() err = c.Wallet.Load()
if err == nil { if err == nil {
return nil return nil
} }
c.ErrorBox(fmt.Sprintf("%s", err)) c.NotificationBox(fmt.Sprintf("%s", err), true)
} }
return err return err
@ -138,6 +143,30 @@ func (c *Cli) GroupsBox() string {
} }
} }
func (c *Cli) AddEntry() error {
entry := Entry{}
entry.GenerateID()
entry.Name = c.InputBox("Name", false)
entry.Group = c.InputBox("Group", false)
entry.URI = c.InputBox("URI", false)
entry.User = c.InputBox("Username", false)
entry.Password = c.InputBox("Password", true)
entry.OTP = c.InputBox("OTP Key", false)
entry.Comment = c.InputBox("Comment", false)
err := c.Wallet.AddEntry(entry)
if err != nil {
return err
}
err = c.Wallet.Save()
if err != nil {
return err
}
return nil
}
func (c *Cli) ListEntries() { func (c *Cli) ListEntries() {
var pattern, group string var pattern, group string
var entries []Entry var entries []Entry
@ -180,6 +209,13 @@ func (c *Cli) ListEntries() {
case "<Escape>": case "<Escape>":
pattern = "" pattern = ""
refresh = true refresh = true
case "n":
err := c.AddEntry()
if err == nil {
refresh = true
} else {
c.NotificationBox(fmt.Sprintf("%s", err), true)
}
case "/": case "/":
pattern = c.InputBox("Search", false) pattern = c.InputBox("Search", false)
refresh = true refresh = true