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
+3 -8
View File
@@ -11,16 +11,11 @@ import (
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/lipgloss"
"git.ohea.xyz/cursorius/tui/settings"
"git.ohea.xyz/cursorius/tui/widget"
)
type CursoriusServer struct {
Name string
Url string
Token string
}
func (s CursoriusServer) Login() tea.Msg {
func ServerLogin(s settings.CursoriusServer) tea.Msg {
dashboard, err := createDashboard(s)
if err != nil {
return err
@@ -156,7 +151,7 @@ func (d dashboardItemDelegate) Render(w io.Writer, m list.Model, index int, list
fmt.Fprint(w, fn(str))
}
func createDashboard(s CursoriusServer) (Dashboard, error) {
func createDashboard(s settings.CursoriusServer) (Dashboard, error) {
client := graphql.NewClient(s.Url, http.DefaultClient)
+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
+14 -10
View File
@@ -4,6 +4,9 @@ import (
"fmt"
"io"
"git.ohea.xyz/cursorius/tui/settings"
"git.ohea.xyz/golang/config"
"github.com/charmbracelet/bubbles/list"
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/lipgloss"
@@ -11,7 +14,7 @@ import (
type Login struct {
selected int
servers []CursoriusServer
config config.Config[settings.Config]
serverList list.Model
}
@@ -32,27 +35,28 @@ func (m Login) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
case tea.KeyMsg:
switch msg.String() {
case "e":
if m.serverList.Index() < len(m.servers) {
if m.serverList.Index() < len(m.config.Config.Servers) {
return m, func() tea.Msg {
return ScreenSwitchMsg{
NewScreen: createEditServer(
m.servers,
m.config,
m.serverList.Index(),
),
}
}
}
case "enter":
if m.serverList.Index() < len(m.servers) {
if m.serverList.Index() < len(m.config.Config.Servers) {
return m, func() tea.Msg {
return m.servers[m.serverList.Index()].Login()
return ServerLogin(m.config.Config.Servers[m.serverList.Index()])
}
} else {
return m, func() tea.Msg {
m.config.Config.Servers = append(m.config.Config.Servers, settings.CursoriusServer{})
return ScreenSwitchMsg{
NewScreen: createEditServer(
append(m.servers, CursoriusServer{}),
len(m.servers),
m.config,
len(m.config.Config.Servers)-1,
),
}
}
@@ -114,9 +118,9 @@ func (d loginItemDelegate) Render(w io.Writer, m list.Model, index int, listItem
fmt.Fprint(w, fn(str))
}
func CreateLogin(servers []CursoriusServer) Login {
func CreateLogin(conf config.Config[settings.Config]) Login {
items := []list.Item{}
for _, server := range servers {
for _, server := range conf.Config.Servers {
items = append(
items,
serverItem{
@@ -137,7 +141,7 @@ func CreateLogin(servers []CursoriusServer) Login {
return Login{
selected: 0,
servers: servers,
config: conf,
serverList: l,
}
}