// package win_server_connect -- подключение к бото-ферме package win_server_connect import ( "fmt" "github.com/charmbracelet/bubbles/textinput" tea "github.com/charmbracelet/bubbletea" "wartank/desktop/win_base" "wartank/pkg/alias" "wartank/pkg/cons" "wartank/pkg/types" ) // WinServerConnect -- конфигурация для подключения к бото-серверу вар-танк type WinServerConnect struct { *win_base.WinBase } // NewWinServerConnect -- возвращает новое окно для подключения к бото-серверу вар-танк func NewWinServerConnect(desk types.IDesktop) (*WinServerConnect, error) { winBase, err := win_base.NewWinBase(desk, cons.WinServerConnect) if err != nil { return nil, fmt.Errorf("NewWinServerConnect(): in create WinBase, err=\n\t%w", err) } sf := &WinServerConnect{ WinBase: winBase, } _ = tea.Model(sf) return sf, nil } // Init -- настраивает окно для бабл-теа func (sf *WinServerConnect) Init() tea.Cmd { return textinput.Blink } // Update -- обрабатывает команду цикла func (sf *WinServerConnect) Update(msg tea.Msg) (tea.Model, tea.Cmd) { winName := alias.AWinName("") switch msg := msg.(type) { // Может клавиша нажата case tea.KeyMsg: switch msg.String() { // Да, нажато, а что именно? case "esc": // Нажатие "esc" прекращает подключение к серверу winName = cons.WinConfigServer } } if winName != "" { sf.Desk().SetWin(winName) } return nil, nil } // View -- перерисовывание окна по требованию func (sf *WinServerConnect) View() string { s := "=Подключение к бот-серверу вар-танк=\n\n" if !sf.Desk().IsConnect() { // err := desk.client.Connect(desk.host) err := sf.Desk().Connect() if err != nil { s += fmt.Sprintf("WinServerConnect.View(): in connect to server, err=\n\t%v", err) s += "\n\n[ctrl+q]-выход [esc]-отмена\n" return s } } s += "Desktop.winConnectServer(): ok\n" s += "\n\n[ctrl+q]-выход [esc]-отмена\n" return s }