- commit
- 839a270
- parent
- 0516828
- author
- Eric Bower
- date
- 2025-03-27 16:26:10 -0400 EDT
fix(tui.signup): when focus is on input and use presses enter, submit form
1 files changed,
+23,
-11
+23,
-11
1@@ -32,6 +32,13 @@ func NewSignupPage(shrd *SharedModel) *SignupPage {
2 return &SignupPage{shared: shrd, btn: btn, input: input}
3 }
4
5+func (m *SignupPage) Footer() []Shortcut {
6+ return []Shortcut{
7+ {Shortcut: "tab", Text: "focus"},
8+ {Shortcut: "enter", Text: "create user"},
9+ }
10+}
11+
12 func (m *SignupPage) createAccount(name string) (*db.User, error) {
13 if name == "" {
14 return nil, fmt.Errorf("name cannot be empty")
15@@ -40,6 +47,22 @@ func (m *SignupPage) createAccount(name string) (*db.User, error) {
16 return m.shared.Dbpool.RegisterUser(name, key, "")
17 }
18
19+func (m *SignupPage) CaptureEvent(ev vaxis.Event) (vxfw.Command, error) {
20+ switch msg := ev.(type) {
21+ case vaxis.Key:
22+ if msg.Matches(vaxis.KeyEnter) {
23+ user, err := m.createAccount(m.input.GetValue())
24+ if err != nil {
25+ m.err = err
26+ return vxfw.RedrawCmd{}, nil
27+ }
28+ m.shared.User = user
29+ m.shared.App.PostEvent(Navigate{To: HOME})
30+ }
31+ }
32+ return nil, nil
33+}
34+
35 func (m *SignupPage) HandleEvent(ev vaxis.Event, phase vxfw.EventPhase) (vxfw.Command, error) {
36 switch msg := ev.(type) {
37 case PageIn:
38@@ -57,17 +80,6 @@ func (m *SignupPage) HandleEvent(ev vaxis.Event, phase vxfw.EventPhase) (vxfw.Co
39 vxfw.FocusWidgetCmd(m.btn),
40 }), nil
41 }
42- if msg.Matches(vaxis.KeyEnter) {
43- if m.focus == "button" {
44- user, err := m.createAccount(m.input.GetValue())
45- if err != nil {
46- m.err = err
47- return vxfw.RedrawCmd{}, nil
48- }
49- m.shared.User = user
50- m.shared.App.PostEvent(Navigate{To: HOME})
51- }
52- }
53 }
54
55 return nil, nil