1 Commits
Author SHA1 Message Date
clawbot 87d65552e3 Keep the connection state in the status bar on /query (closes #235)
check / check (push) Canceled after 0s
/query set the status bar to [connected] whatever the connection
state. Before /connect, it made the status bar say [connected] while
the client had no session.

/query now reads the connection state with the nick, as /window does,
and shows [connected] only while the client is connected,
[disconnected] otherwise. TestQueryConnectionState types /query bob,
connected and not, and checks the status bar. The two status texts
are now test constants, because the linter asks for one once a third
copy appears.

Model: opus-5-5
2026-11-02 04:42:48 +00:00
2 changed files with 2 additions and 39 deletions
-25
View File
@@ -799,31 +799,6 @@ func TestStatusBar(t *testing.T) {
}
}
// TestUnreadLine checks that a line added to a window that is not
// shown puts that window in the status bar's unread list at once,
// and that the status bar keeps the nick, target and connection
// state last set.
func TestUnreadLine(t *testing.T) {
t.Parallel()
ui := NewUI()
runUI(t, ui)
// Window 1, the one shown, is the channel's. The line goes to
// window 2 after SetStatus, so only AddLine can show it in the
// status bar.
ui.SwitchToBuffer(testChannel)
ui.SetStatus(testNick, testChannel, "connected")
ui.AddLine(testOtherNick, testText)
const want = " [connected] erin [1:#chan] #chan [Act: 2:bob(1)]"
got := statusBarText(ui)
if got != want {
t.Fatalf("status bar is %q, want %q", got, want)
}
}
// TestOwnEventFromOtherClient checks that a message, notice,
// join or part that the user's session makes from another
// client shows as one line in the buffer it belongs to.
+2 -14
View File
@@ -30,12 +30,6 @@ type UI struct {
buffers []*Buffer
currentBuffer int
// The nick, target and connection state last passed to
// SetStatus.
nick string
target string
connStatus string
onInput func(string)
// inputDone is closed once the line last passed to onInput
// has been handled. Only callOnInput, on the event loop, uses
@@ -185,11 +179,7 @@ func (ui *UI) SetStatus(
nick, target, connStatus string,
) {
ui.app.QueueUpdateDraw(func() {
ui.nick = nick
ui.target = target
ui.connStatus = connStatus
ui.refreshStatusBar()
ui.renderStatusBar(nick, target, connStatus)
})
}
@@ -310,10 +300,8 @@ func (ui *UI) callOnInput(text string) {
}()
}
// refreshStatusBar redraws the status bar with the nick, target
// and connection state last passed to SetStatus.
func (ui *UI) refreshStatusBar() {
ui.renderStatusBar(ui.nick, ui.target, ui.connStatus)
// Placeholder; full refresh needs nick/target context.
}
func (ui *UI) renderStatusBar(