// package win_bots_add_pass -- окно добавления пароля бота на бото-ферму package win_bots_add_pass 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" ) // WinBotsAddPass -- конфигурация для добавления пароля бота на бото-ферму вар-танк type WinBotsAddPass struct { *win_base.WinBase textInput textinput.Model } // NewWinBotsAddPass -- возвращает новое окно для ввода пароля бота при добавлению на бото-ферму вар-танк func NewWinBotsAddPass(desk types.IDesktop) (*WinBotsAddPass, error) { winBase, err := win_base.NewWinBase(desk, cons.WinBotsAddPass) if err != nil { return nil, fmt.Errorf("NewWinBotsAddPass(): in create WinBase, err=\n\t%w", err) } sf := &WinBotsAddPass{ WinBase: winBase, textInput: textinput.New(), } sf.textInput.Placeholder = "wartank" sf.textInput.Focus() sf.textInput.Width = 30 _ = tea.Model(sf) return sf, nil } // Init -- настраивает окно для бабл-теа func (sf *WinBotsAddPass) Init() tea.Cmd { return textinput.Blink } // Update -- обрабатывает команду цикла func (sf *WinBotsAddPass) Update(msg tea.Msg) (tea.Model, tea.Cmd) { winName := alias.AWinName("") switch msg := msg.(type) { // Может клавиша нажата case tea.KeyMsg: switch msg.String() { // Да, нажато, а что именно? case "esc": // Вернуться на шаг назад winName = cons.WinBotsMenu case "enter": // Нажатие "enter" вводит фактическое значение sf.Desk().SetBotPass(sf.textInput.Value()) winName = cons.WinBotsMenu default: sf.textInput, _ = sf.textInput.Update(msg) } } if winName != "" { sf.Desk().SetWin(winName) } return nil, nil } // View -- перерисовывание окна по требованию func (sf *WinBotsAddPass) View() string { s := "=Добавление пароля бота на бото-ферму вар-танк=\n\n" s += fmt.Sprintf(">%v\n", sf.textInput.View()) s += "\n\n[ctrl+q]-выход [esc]-назад\n" return s }