win_server_connect.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // package win_server_connect -- подключение к бото-ферме
  2. package win_server_connect
  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. // WinServerConnect -- конфигурация для подключения к бото-серверу вар-танк
  13. type WinServerConnect struct {
  14. *win_base.WinBase
  15. }
  16. // NewWinServerConnect -- возвращает новое окно для подключения к бото-серверу вар-танк
  17. func NewWinServerConnect(desk types.IDesktop) (*WinServerConnect, error) {
  18. winBase, err := win_base.NewWinBase(desk, cons.WinServerConnect)
  19. if err != nil {
  20. return nil, fmt.Errorf("NewWinServerConnect(): in create WinBase, err=\n\t%w", err)
  21. }
  22. sf := &WinServerConnect{
  23. WinBase: winBase,
  24. }
  25. _ = tea.Model(sf)
  26. return sf, nil
  27. }
  28. // Init -- настраивает окно для бабл-теа
  29. func (sf *WinServerConnect) Init() tea.Cmd {
  30. return textinput.Blink
  31. }
  32. // Update -- обрабатывает команду цикла
  33. func (sf *WinServerConnect) 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.WinConfigServer
  41. }
  42. }
  43. if winName != "" {
  44. sf.Desk().SetWin(winName)
  45. }
  46. return nil, nil
  47. }
  48. // View -- перерисовывание окна по требованию
  49. func (sf *WinServerConnect) View() string {
  50. s := "=Подключение к бот-серверу вар-танк=\n\n"
  51. if !sf.Desk().IsConnect() {
  52. // err := desk.client.Connect(desk.host)
  53. err := sf.Desk().Connect()
  54. if err != nil {
  55. s += fmt.Sprintf("WinServerConnect.View(): in connect to server, err=\n\t%v", err)
  56. s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
  57. return s
  58. }
  59. }
  60. s += "Desktop.winConnectServer(): ok\n"
  61. s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
  62. return s
  63. }