repos / pico

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

commit
6246268
parent
8b58c73
author
Eric Bower
date
2025-03-21 13:53:24 -0400 EDT
fix(tui): dont fetch user info when creating a page

fix(tui): dont panic
3 files changed,  +16, -15
M pkg/apps/pico/ssh.go
+1, -2
 1@@ -31,8 +31,7 @@ func createTui(shrd *tui.SharedModel) pssh.SSHServerMiddleware {
 2 			opts := vaxis.Options{
 3 				WithConsole: vty,
 4 			}
 5-			tui.NewTui(opts, shrd)
 6-			return nil
 7+			return tui.NewTui(opts, shrd)
 8 		}
 9 	}
10 }
M pkg/tui/tuns.go
+4, -4
 1@@ -109,10 +109,6 @@ func NewTunsPage(shrd *SharedModel) *TunsPage {
 2 	m.leftPane = list.Dynamic{DrawCursor: true, Builder: m.getLeftWidget}
 3 	m.logList = list.Dynamic{DrawCursor: true, Builder: m.getLogWidget}
 4 	m.eventLogList = list.Dynamic{DrawCursor: true, Builder: m.getEventLogWidget}
 5-	ff, _ := shrd.Dbpool.FindFeatureForUser(m.shared.User.ID, "admin")
 6-	if ff != nil {
 7-		m.isAdmin = true
 8-	}
 9 	return m
10 }
11 
12@@ -225,6 +221,10 @@ func (m *TunsPage) HandleEvent(ev vaxis.Event, ph vxfw.EventPhase) (vxfw.Command
13 	switch msg := ev.(type) {
14 	case PageIn:
15 		m.loading = true
16+		ff, _ := m.shared.Dbpool.FindFeatureForUser(m.shared.User.ID, "admin")
17+		if ff != nil {
18+			m.isAdmin = true
19+		}
20 		go m.fetchTuns()
21 		go func() {
22 			_ = m.connectToLogs()
M pkg/tui/ui.go
+11, -9
 1@@ -250,10 +250,10 @@ func (m *FooterWdgt) Draw(ctx vxfw.DrawContext) (vxfw.Surface, error) {
 2 	return wdgt.Draw(ctx)
 3 }
 4 
 5-func initData(shrd *SharedModel) {
 6+func initData(shrd *SharedModel) error {
 7 	user, err := FindUser(shrd)
 8 	if err != nil {
 9-		panic(err)
10+		return err
11 	}
12 	shrd.User = user
13 
14@@ -262,6 +262,7 @@ func initData(shrd *SharedModel) {
15 
16 	bff, _ := FindFeatureFlag(shrd, "bouncer")
17 	shrd.BouncerFeatureFlag = bff
18+	return nil
19 }
20 
21 func FindUser(shrd *SharedModel) (*db.User, error) {
22@@ -318,11 +319,15 @@ func FindFeatureFlag(shrd *SharedModel, name string) (*db.FeatureFlag, error) {
23 	return ff, nil
24 }
25 
26-func NewTui(opts vaxis.Options, shrd *SharedModel) {
27-	initData(shrd)
28+func NewTui(opts vaxis.Options, shrd *SharedModel) error {
29+	err := initData(shrd)
30+	if err != nil {
31+		return err
32+	}
33+
34 	app, err := vxfw.NewApp(opts)
35 	if err != nil {
36-		panic(err)
37+		return err
38 	}
39 
40 	shrd.App = app
41@@ -344,8 +349,5 @@ func NewTui(opts vaxis.Options, shrd *SharedModel) {
42 		pages:  pages,
43 	}
44 
45-	err = app.Run(root)
46-	if err != nil {
47-		panic(err)
48-	}
49+	return app.Run(root)
50 }