win_server_login.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // package win_server_login -- вход на бото-ферму
  2. package win_server_login
  3. import (
  4. "fmt"
  5. "github.com/charmbracelet/bubbles/textinput"
  6. tea "github.com/charmbracelet/bubbletea"
  7. "wartank/desktop/win_base"
  8. "wartank/pkg/alias"
  9. "wartank/pkg/cons"
  10. "wartank/pkg/types"
  11. )
  12. // WinServerLgin -- вход на бото-сервер вар-танк
  13. type WinServerLgin struct {
  14. *win_base.WinBase
  15. }
  16. // NewWinServerLogin -- возвращает новое окно для входа на бото-сервер вар-танк
  17. func NewWinServerLogin(desk types.IDesktop) (*WinServerLgin, error) {
  18. winBase, err := win_base.NewWinBase(desk, cons.WinServerLogin)
  19. if err != nil {
  20. return nil, fmt.Errorf("NewWinServerLogin(): in create WinBase, err=\n\t%w", err)
  21. }
  22. sf := &WinServerLgin{
  23. WinBase: winBase,
  24. }
  25. _ = tea.Model(sf)
  26. return sf, nil
  27. }
  28. // Init -- настраивает окно для бабл-теа
  29. func (sf *WinServerLgin) Init() tea.Cmd {
  30. return textinput.Blink
  31. }
  32. // Update -- обрабатывает команду цикла
  33. func (sf *WinServerLgin) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
  34. winName := alias.AWinName("")
  35. switch msg := msg.(type) {
  36. // Может клавиша нажата
  37. case tea.KeyMsg:
  38. switch msg.String() { // Да, нажато, а что именно?
  39. case "esc": // Нажатие "esc" прекращает логин на сервер
  40. winName = cons.WinConfig
  41. }
  42. }
  43. if winName != "" {
  44. sf.Desk().SetWin(winName)
  45. }
  46. return nil, nil
  47. }
  48. // View -- перерисовывание окна по требованию
  49. func (sf *WinServerLgin) View() string {
  50. s := "=Логин на бот-сервер вар-танк=\n\n"
  51. // err := desk.client.Login(desk.login, desk.pass)
  52. err := sf.Desk().MakeLogin()
  53. if err != nil {
  54. s += fmt.Sprintf("WinServerLgin.View(): err=\n\t%v", err)
  55. s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
  56. return s
  57. }
  58. s += "WinServerLgin.View(): login ok\n"
  59. // desk.isLogin = true
  60. s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
  61. return s
  62. }