Persist server configuration to config file

This commit is contained in:
2023-02-25 01:24:22 -07:00
parent a41c12d20c
commit 3fef157f6a
7 changed files with 110 additions and 53 deletions
+12 -9
View File
@@ -4,6 +4,8 @@ import (
"fmt"
"io"
"git.ohea.xyz/cursorius/tui/settings"
"git.ohea.xyz/golang/config"
"github.com/charmbracelet/bubbles/list"
"github.com/charmbracelet/bubbles/textinput"
tea "github.com/charmbracelet/bubbletea"
@@ -11,7 +13,7 @@ import (
type EditServer struct {
entries list.Model
servers []CursoriusServer
config config.Config[settings.Config]
pos int
}
@@ -77,15 +79,16 @@ func (m EditServer) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
token = e.field.Value()
}
newServer := CursoriusServer{
newServer := settings.CursoriusServer{
Name: name,
Url: url,
Token: token,
}
m.servers[m.pos] = newServer
m.config.Config.Servers[m.pos] = newServer
m.config.Write()
return m, func() tea.Msg {
return ScreenSwitchMsg{
NewScreen: CreateLogin(m.servers),
NewScreen: CreateLogin(m.config),
}
}
}
@@ -113,21 +116,21 @@ func (m EditServer) View() string {
return m.entries.View()
}
func createEditServer(s []CursoriusServer, pos int) EditServer {
func createEditServer(conf config.Config[settings.Config], pos int) EditServer {
nameField := textinput.New()
nameField.Focus()
nameField.Width = 20
nameField.Prompt = "Name: "
nameField.Placeholder = "Nickname"
nameField.SetValue(s[pos].Name)
nameField.SetValue(conf.Config.Servers[pos].Name)
urlField := textinput.New()
urlField.Prompt = "Url: "
urlField.Placeholder = "https://ci.cursorius.ohea/"
urlField.SetValue(s[pos].Url)
urlField.SetValue(conf.Config.Servers[pos].Url)
tokenField := textinput.New()
tokenField.Prompt = "Token: "
tokenField.Placeholder = "1234567890"
tokenField.SetValue(s[pos].Token)
tokenField.SetValue(conf.Config.Servers[pos].Token)
tokenField.EchoMode = textinput.EchoPassword
items := []list.Item{
entryItem{field: nameField},
@@ -145,7 +148,7 @@ func createEditServer(s []CursoriusServer, pos int) EditServer {
l.KeyMap.Quit.SetEnabled(false)
e := EditServer{
entries: l,
servers: s,
config: conf,
pos: pos,
}
return e