2023-02-24 20:55:16 +00:00
|
|
|
package main
|
|
|
|
|
2023-02-26 08:57:46 +00:00
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
|
|
|
|
"github.com/gdamore/tcell/v2"
|
|
|
|
"github.com/rivo/tview"
|
|
|
|
|
|
|
|
_ "embed"
|
|
|
|
)
|
|
|
|
|
|
|
|
//go:embed welcome.txt
|
|
|
|
var welcomeArt string
|
|
|
|
|
|
|
|
// TODO remove ConnectDB abstraction in favor of just connecting directly to sqliteh
|
|
|
|
// TODO move magic key machine to static page
|
|
|
|
|
|
|
|
type newUserData struct {
|
|
|
|
Username string
|
|
|
|
DisplayName string
|
|
|
|
Email string
|
|
|
|
PubKey string
|
|
|
|
}
|
|
|
|
|
|
|
|
func _main() error {
|
|
|
|
app := tview.NewApplication()
|
|
|
|
//data := &newUserData{}
|
|
|
|
|
|
|
|
help := tview.NewTextView()
|
|
|
|
help.SetText("tab+enter or mouse to submit. ctrl+c to quit.")
|
|
|
|
help.SetTextColor(tcell.ColorGray)
|
|
|
|
|
|
|
|
artView := tview.NewTextView()
|
|
|
|
artView.SetText(welcomeArt)
|
|
|
|
artView.SetDynamicColors(true)
|
|
|
|
artView.SetBackgroundColor(tcell.ColorBlack)
|
|
|
|
artView.SetTextColor(tcell.ColorPurple)
|
|
|
|
|
|
|
|
// TODO colors wacky
|
|
|
|
tokenInput := tview.NewInputField()
|
|
|
|
tokenInput.SetLabel("invite code:")
|
|
|
|
tokenInput.SetFieldWidth(40)
|
|
|
|
|
|
|
|
tokenForm := tview.NewForm()
|
|
|
|
tokenForm.SetButtonBackgroundColor(tcell.ColorPurple)
|
|
|
|
tokenForm.SetButtonTextColor(tcell.ColorBlack)
|
|
|
|
tokenForm.SetButtonActivatedStyle(tcell.StyleDefault.Foreground(tcell.ColorWhite).Background(tcell.ColorPurple))
|
|
|
|
|
|
|
|
tokenForm.SetLabelColor(tcell.ColorPurple)
|
|
|
|
tokenForm.SetFieldBackgroundColor(tcell.ColorPurple)
|
|
|
|
tokenForm.AddFormItem(tokenInput)
|
|
|
|
tokenForm.AddButton("submit", func() {
|
|
|
|
app.Stop()
|
|
|
|
// TODO
|
|
|
|
})
|
|
|
|
|
|
|
|
tokenPage := tview.NewFlex()
|
|
|
|
tokenPage.SetDirection(tview.FlexRow)
|
|
|
|
tokenPage.AddItem(artView, 17, -1, false)
|
|
|
|
tokenPage.AddItem(tokenForm, 5, -1, true)
|
|
|
|
tokenPage.AddItem(help, 1, -1, false)
|
|
|
|
|
|
|
|
pages := tview.NewPages()
|
|
|
|
pages.AddPage("start", tokenPage, true, true)
|
|
|
|
|
|
|
|
app.SetRoot(pages, true)
|
|
|
|
|
|
|
|
/*
|
|
|
|
TODO multi-page flow:
|
|
|
|
- page 1: accept invite token
|
|
|
|
- page 2: username, display name, email
|
|
|
|
- page 3: public key
|
|
|
|
- page 4: next steps
|
|
|
|
*/
|
|
|
|
|
|
|
|
return app.EnableMouse(true).Run()
|
|
|
|
}
|
2023-02-24 20:55:16 +00:00
|
|
|
|
|
|
|
func main() {
|
2023-02-26 08:57:46 +00:00
|
|
|
err := _main()
|
|
|
|
if err != nil {
|
|
|
|
fmt.Fprintln(os.Stderr, err)
|
|
|
|
os.Exit(1)
|
|
|
|
}
|
2023-02-24 20:55:16 +00:00
|
|
|
}
|