X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/7152b7e59b6e30d3025cf5c6386eb2e54b95c139..c2f62e9d34248432ee31144378ba9c6900ac974a:/hotline/ui.go diff --git a/hotline/ui.go b/hotline/ui.go index 45c452c..e3e2fab 100644 --- a/hotline/ui.go +++ b/hotline/ui.go @@ -102,12 +102,7 @@ func (ui *UI) showBookmarks() *tview.List { return list } -func (ui *UI) getTrackerList() *tview.List { - listing, err := GetListing(ui.HLClient.Pref.Tracker) - if err != nil { - // TODO - } - +func (ui *UI) getTrackerList(servers []ServerRecord) *tview.List { list := tview.NewList() list.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey { if event.Key() == tcell.KeyEsc { @@ -117,14 +112,12 @@ func (ui *UI) getTrackerList() *tview.List { }) list.Box.SetBorder(true).SetTitle("| Servers |") - shortcut := 97 // rune for "a" - for i, srv := range listing { - addr := srv.Addr() - srvName := srv.Name + const shortcut = 97 // rune for "a" + for i, srv := range servers { list.AddItem(string(srv.Name), string(srv.Description), rune(shortcut+i), func() { ui.Pages.RemovePage("joinServer") - newJS := ui.renderJoinServerForm(string(srvName), addr, GuestAccount, "", trackerListPage, false, true) + newJS := ui.renderJoinServerForm(string(srv.Name), srv.Addr(), GuestAccount, "", trackerListPage, false, true) ui.Pages.AddPage("joinServer", newJS, true, true) ui.Pages.ShowPage("joinServer") @@ -219,17 +212,17 @@ func (ui *UI) joinServer(addr, login, password string) error { func (ui *UI) renderJoinServerForm(name, server, login, password, backPage string, save, defaultConnect bool) *tview.Flex { joinServerForm := tview.NewForm() joinServerForm. - // AddInputField("Name", server, 0, func(textToCheck string, lastChar rune) bool { - // return false - // }, nil). AddInputField("Server", server, 0, nil, nil). AddInputField("Login", login, 0, nil, nil). AddPasswordField("Password", password, 0, '*', nil). AddCheckbox("Save", save, func(checked bool) { - ui.HLClient.Logger.Infow("saving bookmark") - // TODO: Implement bookmark saving + ui.HLClient.Pref.AddBookmark( + joinServerForm.GetFormItem(0).(*tview.InputField).GetText(), + joinServerForm.GetFormItem(0).(*tview.InputField).GetText(), + joinServerForm.GetFormItem(1).(*tview.InputField).GetText(), + joinServerForm.GetFormItem(2).(*tview.InputField).GetText(), + ) - ui.HLClient.Pref.AddBookmark(joinServerForm.GetFormItem(0).(*tview.InputField).GetText(), joinServerForm.GetFormItem(0).(*tview.InputField).GetText(), joinServerForm.GetFormItem(1).(*tview.InputField).GetText(), joinServerForm.GetFormItem(2).(*tview.InputField).GetText()) out, err := yaml.Marshal(ui.HLClient.Pref) if err != nil { panic(err) @@ -239,7 +232,6 @@ func (ui *UI) renderJoinServerForm(name, server, login, password, backPage strin if err != nil { panic(err) } - // Pref := ui.HLClient.Pref }). AddButton("Cancel", func() { ui.Pages.SwitchToPage(backPage) @@ -350,7 +342,6 @@ func (ui *UI) renderServerUI() *tview.Flex { // Post news if event.Key() == tcell.KeyCtrlP { - newsFlex := tview.NewFlex() newsFlex.SetBorderPadding(0, 0, 1, 1) newsPostTextArea := tview.NewTextView() @@ -413,7 +404,7 @@ func (ui *UI) renderServerUI() *tview.Flex { newsPostTextArea.SetText(curTxt) } default: - _, _ = fmt.Fprintf(newsPostTextArea, string(event.Rune())) + _, _ = fmt.Fprint(newsPostTextArea, string(event.Rune())) } } @@ -470,7 +461,20 @@ func (ui *UI) Start() { ui.Pages.AddAndSwitchToPage("bookmarks", ui.showBookmarks(), true) }). AddItem("Browse Tracker", "", 't', func() { - ui.trackerList = ui.getTrackerList() + listing, err := GetListing(ui.HLClient.Pref.Tracker) + if err != nil { + errMsg := fmt.Sprintf("Error fetching tracker results:\n%v", err) + errModal := tview.NewModal() + errModal.SetText(errMsg) + errModal.AddButtons([]string{"Cancel"}) + errModal.SetDoneFunc(func(buttonIndex int, buttonLabel string) { + ui.Pages.RemovePage("errModal") + }) + ui.Pages.RemovePage("joinServer") + ui.Pages.AddPage("errModal", errModal, false, true) + return + } + ui.trackerList = ui.getTrackerList(listing) ui.Pages.AddAndSwitchToPage("trackerList", ui.trackerList, true) }). AddItem("Settings", "", 's', func() {