X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/40afb444ff58289700baa1eb07f3f92d4731436d..154adcc6b47b3cb278f655a9580311e14de7444d:/hotline/ui.go diff --git a/hotline/ui.go b/hotline/ui.go index e4dafd5..d0fd6c0 100644 --- a/hotline/ui.go +++ b/hotline/ui.go @@ -1,7 +1,6 @@ package hotline import ( - "errors" "fmt" "github.com/davecgh/go-spew/spew" "github.com/gdamore/tcell/v2" @@ -15,14 +14,13 @@ import ( ) type UI struct { - chatBox *tview.TextView - chatInput *tview.InputField - App *tview.Application - Pages *tview.Pages - userList *tview.TextView - agreeModal *tview.Modal - trackerList *tview.List - HLClient *Client + chatBox *tview.TextView + chatInput *tview.InputField + App *tview.Application + Pages *tview.Pages + userList *tview.TextView + trackerList *tview.List + HLClient *Client } // pages @@ -76,7 +74,6 @@ func NewUI(c *Client) *UI { chatInput: chatInput, userList: userList, trackerList: tview.NewList(), - agreeModal: tview.NewModal(), HLClient: c, } } @@ -126,10 +123,11 @@ func (ui *UI) getTrackerList() *tview.List { shortcut := 97 // rune for "a" for i, srv := range listing { addr := srv.Addr() + srvName := srv.Name list.AddItem(string(srv.Name), string(srv.Description), rune(shortcut+i), func() { ui.Pages.RemovePage("joinServer") - newJS := ui.renderJoinServerForm("", addr, GuestAccount, "", trackerListPage, false, true) + newJS := ui.renderJoinServerForm(string(srvName), addr, GuestAccount, "", trackerListPage, false, true) ui.Pages.AddPage("joinServer", newJS, true, true) ui.Pages.ShowPage("joinServer") @@ -196,7 +194,7 @@ func (ui *UI) joinServer(addr, login, password string) error { addr += ":5500" } if err := ui.HLClient.JoinServer(addr, login, password); err != nil { - return errors.New(fmt.Sprintf("Error joining server: %v\n", err)) + return fmt.Errorf("Error joining server: %v\n", err) } go func() { @@ -257,11 +255,18 @@ func (ui *UI) renderJoinServerForm(name, server, login, password, backPage strin ui.Pages.SwitchToPage(backPage) }). AddButton("Connect", func() { + srvAddr := joinServerForm.GetFormItem(0).(*tview.InputField).GetText() + loginInput := joinServerForm.GetFormItem(1).(*tview.InputField).GetText() err := ui.joinServer( - joinServerForm.GetFormItem(0).(*tview.InputField).GetText(), - joinServerForm.GetFormItem(1).(*tview.InputField).GetText(), + srvAddr, + loginInput, joinServerForm.GetFormItem(2).(*tview.InputField).GetText(), ) + if name == "" { + name = fmt.Sprintf("%s@%s", loginInput, srvAddr) + } + ui.HLClient.serverName = name + if err != nil { ui.HLClient.Logger.Errorw("login error", "err", err) loginErrModal := tview.NewModal(). @@ -332,7 +337,7 @@ func (ui *UI) renderServerUI() *tview.Flex { AddItem(ui.chatBox, 0, 8, false). AddItem(ui.chatInput, 3, 0, true), 0, 1, true). AddItem(ui.userList, 25, 1, false) - serverUI.SetBorder(true).SetTitle("| Mobius - Connected to " + "TODO" + " |").SetTitleAlign(tview.AlignLeft) + serverUI.SetBorder(true).SetTitle("| Mobius - Connected to " + ui.HLClient.serverName + " |").SetTitleAlign(tview.AlignLeft) serverUI.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey { if event.Key() == tcell.KeyEscape { ui.Pages.AddPage("modal", modal, false, true)