model.go 662 B

123456789101112131415161718192021222324252627282930313233343536
  1. package token
  2. import (
  3. "github.com/ayn2op/tview"
  4. "github.com/ayn2op/tview/tabs"
  5. "github.com/gdamore/tcell/v3"
  6. )
  7. type Model struct {
  8. *tview.Form
  9. }
  10. func NewModel() *Model {
  11. form := tview.NewForm().
  12. AddPasswordField("Token", "", 0, 0, nil).
  13. AddButton("Login")
  14. return &Model{Form: form}
  15. }
  16. var _ tabs.Tab = (*Model)(nil)
  17. func (m *Model) Label() string {
  18. return "Token"
  19. }
  20. func (m *Model) HandleEvent(event tcell.Event) tview.Command {
  21. switch event.(type) {
  22. case *tview.FormSubmitEvent:
  23. token := m.GetFormItem(0).(*tview.InputField).GetText()
  24. if token == "" {
  25. return nil
  26. }
  27. return tokenCommand(token)
  28. }
  29. return m.Form.HandleEvent(event)
  30. }