package hotline
import (
+ "context"
"fmt"
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
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 {
})
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, _ := range servers {
+ srv := servers[i]
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")
}
go func() {
- if err := ui.HLClient.HandleTransactions(); err != nil {
+ if err := ui.HLClient.HandleTransactions(context.TODO()); err != nil {
ui.Pages.SwitchToPage("home")
}
ui.HLClient.serverName = name
if err != nil {
- ui.HLClient.Logger.Errorw("login error", "err", err)
+ ui.HLClient.Logger.Error("login error", "err", err)
loginErrModal := tview.NewModal().
AddButtons([]string{"Oh no"}).
SetText(err.Error()).
// List files
if event.Key() == tcell.KeyCtrlF {
if err := ui.HLClient.Send(*NewTransaction(TranGetFileNameList, nil)); err != nil {
- ui.HLClient.Logger.Errorw("err", "err", err)
+ ui.HLClient.Logger.Error("err", "err", err)
}
}
// Show News
if event.Key() == tcell.KeyCtrlN {
if err := ui.HLClient.Send(*NewTransaction(TranGetMsgs, nil)); err != nil {
- ui.HLClient.Logger.Errorw("err", "err", err)
+ ui.HLClient.Logger.Error("err", "err", err)
}
}
),
)
if err != nil {
- ui.HLClient.Logger.Errorw("Error posting news", "err", err)
+ ui.HLClient.Logger.Error("Error posting news", "err", err)
// TODO: display errModal to user
}
ui.Pages.RemovePage("newsInput")
newsPostTextArea.SetText(curTxt)
}
default:
- _, _ = fmt.Fprintf(newsPostTextArea, string(event.Rune()))
+ _, _ = fmt.Fprint(newsPostTextArea, string(event.Rune()))
}
}
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() {
// App level input capture
ui.App.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
if event.Key() == tcell.KeyCtrlC {
- ui.HLClient.Logger.Infow("Exiting")
+ ui.HLClient.Logger.Info("Exiting")
ui.App.Stop()
os.Exit(0)
}