repos / pico

pico services mono repo
git clone https://github.com/picosh/pico.git

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
M pkg/tui/signup.go
+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