From 8b99036acf3e4c358b106bf39dd9a8d9cc448ed9 Mon Sep 17 00:00:00 2001 From: ayn2op Date: Sat, 14 Mar 2026 20:28:54 -0400 Subject: [PATCH] refactor(ui): inline command event literals --- internal/ui/chat/events.go | 14 ++------- internal/ui/login/qr/events.go | 52 ++++++++----------------------- internal/ui/login/token/events.go | 4 +-- internal/ui/root/events.go | 12 ++----- internal/ui/root/model.go | 6 ++-- 5 files changed, 22 insertions(+), 66 deletions(-) diff --git a/internal/ui/chat/events.go b/internal/ui/chat/events.go index fb47d6f..ab765c4 100644 --- a/internal/ui/chat/events.go +++ b/internal/ui/chat/events.go @@ -11,20 +11,12 @@ type LogoutEvent struct{ tcell.EventTime } func (v *Model) logout() tview.Command { return func() tcell.Event { - event := &LogoutEvent{} - event.SetEventNow() - return event + return &LogoutEvent{} } } type QuitEvent struct{ tcell.EventTime } -func NewQuitEvent() *QuitEvent { - event := &QuitEvent{} - event.SetEventNow() - return event -} - func (v *Model) closeState() tview.Command { return func() tcell.Event { if err := v.CloseState(); err != nil { @@ -42,8 +34,6 @@ type closeLayerEvent struct { func closeLayer(name string) tview.Command { return func() tcell.Event { - event := &closeLayerEvent{name: name} - event.SetEventNow() - return event + return &closeLayerEvent{name: name} } } diff --git a/internal/ui/login/qr/events.go b/internal/ui/login/qr/events.go index 7af2b82..0affd0d 100644 --- a/internal/ui/login/qr/events.go +++ b/internal/ui/login/qr/events.go @@ -41,9 +41,7 @@ func (m *Model) connect() tview.Command { if err != nil { return tcell.NewEventError(err) } - event := &connCreateEvent{conn: conn} - event.SetEventNow() - return event + return &connCreateEvent{conn: conn} } } @@ -54,9 +52,7 @@ func (m *Model) close() tview.Command { return tcell.NewEventError(err) } } - event := &connCloseEvent{} - event.SetEventNow() - return event + return &connCloseEvent{} } } @@ -115,9 +111,7 @@ func (m *Model) listen() tview.Command { if err := json.Unmarshal(data, &payload); err != nil { return tcell.NewEventError(err) } - event := &helloEvent{heartbeatInterval: payload.HeartbeatInterval, timeoutMS: payload.TimeoutMS} - event.SetEventNow() - return event + return &helloEvent{heartbeatInterval: payload.HeartbeatInterval, timeoutMS: payload.TimeoutMS} case "nonce_proof": var payload struct { EncryptedNonce string `json:"encrypted_nonce"` @@ -125,9 +119,7 @@ func (m *Model) listen() tview.Command { if err := json.Unmarshal(data, &payload); err != nil { return tcell.NewEventError(err) } - event := &nonceProofEvent{encryptedNonce: payload.EncryptedNonce} - event.SetEventNow() - return event + return &nonceProofEvent{encryptedNonce: payload.EncryptedNonce} case "pending_remote_init": var payload struct { Fingerprint string `json:"fingerprint"` @@ -135,9 +127,7 @@ func (m *Model) listen() tview.Command { if err := json.Unmarshal(data, &payload); err != nil { return tcell.NewEventError(err) } - event := &pendingRemoteInitEvent{fingerprint: payload.Fingerprint} - event.SetEventNow() - return event + return &pendingRemoteInitEvent{fingerprint: payload.Fingerprint} case "pending_ticket": var payload struct { EncryptedUserPayload string `json:"encrypted_user_payload"` @@ -145,13 +135,9 @@ func (m *Model) listen() tview.Command { if err := json.Unmarshal(data, &payload); err != nil { return tcell.NewEventError(err) } - event := &pendingTicketEvent{encryptedUserPayload: payload.EncryptedUserPayload} - event.SetEventNow() - return event + return &pendingTicketEvent{encryptedUserPayload: payload.EncryptedUserPayload} case "cancel": - event := &cancelEvent{} - event.SetEventNow() - return event + return &cancelEvent{} case "pending_login": var payload struct { Ticket string `json:"ticket"` @@ -159,9 +145,7 @@ func (m *Model) listen() tview.Command { if err := json.Unmarshal(data, &payload); err != nil { return tcell.NewEventError(err) } - event := &pendingLoginEvent{ticket: payload.Ticket} - event.SetEventNow() - return event + return &pendingLoginEvent{ticket: payload.Ticket} default: return nil } @@ -173,9 +157,7 @@ type heartbeatTickEvent struct{ tcell.EventTime } func (m *Model) heartbeat() tview.Command { return func() tcell.Event { time.Sleep(m.heartbeatInterval) - event := &heartbeatTickEvent{} - event.SetEventNow() - return event + return &heartbeatTickEvent{} } } @@ -205,9 +187,7 @@ func (m *Model) generatePrivateKey() tview.Command { if err != nil { return tcell.NewEventError(err) } - event := &privateKeyEvent{privateKey: privateKey} - event.SetEventNow() - return event + return &privateKeyEvent{privateKey: privateKey} } } @@ -269,9 +249,7 @@ func (m *Model) generateQRCode(fingerprint string) tview.Command { return tcell.NewEventError(err) } qrCode.DisableBorder = true - event := &qrCodeEvent{qrCode: qrCode} - event.SetEventNow() - return event + return &qrCodeEvent{qrCode: qrCode} } } @@ -298,9 +276,7 @@ func (m *Model) decryptUserPayload(encryptedPayload string) tview.Command { return tcell.NewEventError(errors.New("invalid user payload")) } - event := &userEvent{discriminator: parts[1], username: parts[3]} - event.SetEventNow() - return event + return &userEvent{discriminator: parts[1], username: parts[3]} } } @@ -329,8 +305,6 @@ func (m *Model) exchangeTicket(ticket string) tview.Command { if err != nil { return tcell.NewEventError(err) } - event := &TokenEvent{Token: string(decryptedToken)} - event.SetEventNow() - return event + return &TokenEvent{Token: string(decryptedToken)} } } diff --git a/internal/ui/login/token/events.go b/internal/ui/login/token/events.go index 3e772f8..e321018 100644 --- a/internal/ui/login/token/events.go +++ b/internal/ui/login/token/events.go @@ -12,8 +12,6 @@ type TokenEvent struct { func tokenCommand(token string) tview.Command { return func() tcell.Event { - event := &TokenEvent{Token: token} - event.SetEventNow() - return event + return &TokenEvent{Token: token} } } diff --git a/internal/ui/root/events.go b/internal/ui/root/events.go index bf6bcda..7051a5d 100644 --- a/internal/ui/root/events.go +++ b/internal/ui/root/events.go @@ -16,9 +16,7 @@ type tokenEvent struct { func tokenCommand(token string) tview.Command { return func() tcell.Event { - event := &tokenEvent{token: token} - event.SetEventNow() - return event + return &tokenEvent{token: token} } } @@ -29,13 +27,9 @@ func getToken() tview.Command { token, err := keyring.GetToken() if err != nil { slog.Info("failed to retrieve token from keyring", "err", err) - event := &loginEvent{} - event.SetEventNow() - return event + return &loginEvent{} } - event := &tokenEvent{token: token} - event.SetEventNow() - return event + return &tokenEvent{token: token} } } diff --git a/internal/ui/root/model.go b/internal/ui/root/model.go index 532654e..1e81c6b 100644 --- a/internal/ui/root/model.go +++ b/internal/ui/root/model.go @@ -55,13 +55,13 @@ func NewModel(cfg *config.Config, app *tview.Application) *Model { func (m *Model) showLogin() tview.Command { m.inner = login.NewModel(m.cfg) m.buildLayout() - return tview.Batch(m.inner.HandleEvent(tview.NewInitEvent()), tview.SetFocus(m)) + return tview.Batch(m.inner.HandleEvent(&tview.InitEvent{}), tview.SetFocus(m)) } func (m *Model) showChat(token string) tview.Command { m.inner = chat.NewView(m.app, m.cfg, token) m.buildLayout() - return tview.Batch(m.inner.HandleEvent(tview.NewInitEvent()), tview.SetFocus(m)) + return tview.Batch(m.inner.HandleEvent(&tview.InitEvent{}), tview.SetFocus(m)) } func (m *Model) buildLayout() { @@ -122,7 +122,7 @@ func (m *Model) HandleEvent(event tcell.Event) tview.Command { case keybind.Matches(event, m.cfg.Keybinds.Quit.Keybind): var innerCmd tview.Command if m.inner != nil { - innerCmd = m.inner.HandleEvent(chat.NewQuitEvent()) + innerCmd = m.inner.HandleEvent(&chat.QuitEvent{}) } return tview.Batch(innerCmd, tview.Quit()) }