Parcourir la source

d01 Добавление окна для логина на сервер

SVI il y a 2 ans
Parent
commit
478eb48176

+ 12 - 23
desktop/desktop.go

@@ -163,15 +163,6 @@ func (sf *Desktop) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 		return mod_, cmd_
 	}
 	/*
-		 case ModeLoginServer:
-			switch msg := msg.(type) {
-			// Может клавиша нажата
-			case tea.KeyMsg:
-				switch msg.String() { // Да, нажато, а что именно?
-				case "esc": // Нажатие "esc" прекращает логин на сервер
-					desk.winName = ModeConfig
-				}
-			}
 		 case ModeServerMakeAdmin:
 			switch msg := msg.(type) {
 			// Может клавиша нажата
@@ -201,9 +192,6 @@ func (sf *Desktop) View() string {
 	s += fmt.Sprintf("\tХост=%q\tЛогин=%q\tПароль=%q\tПодключено=%v\tЛогин=%v\tЕстьАдмин=%v\n\n", desk.host, desk.login, desk.pass, desk.isConnect, desk.isLogin, desk.isMakeAdmin)
 	s += desk.dictWin[desk.winName].View()
 	/*
-		switch desk.winName {
-		case ModeLoginServer: // Режим логина на сервер
-			s += desk.winServerLogin()
 		case ModeServerMakeAdmin: // Режим содания админа на бот-сервере
 			s += desk.winServerMakeAdmin()
 		case ModeShowMenuBot: // Меню бото-фермы
@@ -240,17 +228,7 @@ func (sf *Desktop) winServerMakeAdmin() string {
 }
 
 func (sf *Desktop) winServerLogin() string {
-	s := "=Логин на бот-сервер вар-танк=\n\n"
-	err := desk.client.Login(desk.login, desk.pass)
-	if err != nil {
-		s += fmt.Sprintf("Desktop.winServerLogin(): err=\n\t%v", err)
-		s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
-		return s
-	}
-	s += "Desktop.winServerLogin(): ok\n"
-	desk.isLogin = true
-	s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
-	return s
+
 }
 
 */
@@ -290,3 +268,14 @@ func (sf *Desktop) Connect() error {
 	sf.isConnect = true
 	return nil
 }
+
+// MakeLogin -- выполняет вход на бото-ферму
+func (sf *Desktop) MakeLogin() error {
+	err := sf.client.Login(sf.login, sf.pass)
+	sf.isLogin = false
+	if err != nil {
+		return fmt.Errorf("Desktop.MakeLogin(): in login to server, err=\n\t%v", err)
+	}
+	sf.isLogin = true
+	return nil
+}

+ 1 - 1
desktop/win_config/win_config.go

@@ -47,7 +47,7 @@ func (sf *WinConfig) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 			}
 		case "3": // Логин на сервер
 			if !sf.Desk().IsLogin() {
-				winName = cons.WinLoginServer
+				winName = cons.WinServerLogin
 			}
 		case "4": // Создать админа
 			winName = cons.WinServerMakeAdmin

+ 70 - 0
desktop/win_server_login/win_server_login.go

@@ -0,0 +1,70 @@
+// package win_server_login -- вход на бото-ферму
+package win_server_login
+
+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"
+)
+
+// WinServerLgin -- вход на бото-сервер вар-танк
+type WinServerLgin struct {
+	*win_base.WinBase
+}
+
+// NewWinServerLogin -- возвращает новое окно для входа на бото-сервер вар-танк
+func NewWinServerLogin(desk types.IDesktop) (*WinServerLgin, error) {
+	winBase, err := win_base.NewWinBase(desk, cons.WinServerLogin)
+	if err != nil {
+		return nil, fmt.Errorf("NewWinServerLogin(): in create WinBase, err=\n\t%w", err)
+	}
+	sf := &WinServerLgin{
+		WinBase: winBase,
+	}
+	_ = tea.Model(sf)
+	return sf, nil
+}
+
+// Init -- настраивает окно для бабл-теа
+func (sf *WinServerLgin) Init() tea.Cmd {
+	return textinput.Blink
+}
+
+// Update -- обрабатывает команду цикла
+func (sf *WinServerLgin) 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.WinConfig
+		}
+	}
+	if winName != "" {
+		sf.Desk().SetWin(winName)
+	}
+	return nil, nil
+}
+
+// View -- перерисовывание окна по требованию
+func (sf *WinServerLgin) View() string {
+	s := "=Логин на бот-сервер вар-танк=\n\n"
+	// err := desk.client.Login(desk.login, desk.pass)
+	err := sf.Desk().MakeLogin()
+	if err != nil {
+		s += fmt.Sprintf("WinServerLgin.View(): err=\n\t%v", err)
+		s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
+		return s
+	}
+	s += "WinServerLgin.View(): login ok\n"
+	// desk.isLogin = true
+	s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
+	return s
+}

+ 1 - 1
pkg/cons/cons.go

@@ -27,7 +27,7 @@ const (
 	WinConfigServerLoginInput alias.AWinName = "winConfigServerLoginInput" // Режим ввода логина на сервер
 	WinConfigServerPassInput  alias.AWinName = "winConfigServerPassInput"  // Режим ввода пароля входа на сервер
 	WinServerConnect          alias.AWinName = "winServerConnect"          // Режим подключения к серверу
-	WinLoginServer                                                         // Режим логина на сервер
+	WinServerLogin            alias.AWinName = "winServerLogin"            // Режим логина на сервер
 	WinServerMakeAdmin                                                     // Создать админа для бот-сервера
 	WinServerMakeUser                                                      // Создать пользователя для бот-сервера
 	WinShowMenuBot                                                         // Показать меню ботов

+ 4 - 2
pkg/types/idesktop.go

@@ -12,10 +12,12 @@ type IDesktop interface {
 	Connect() error
 	// IsLogin -- возвращает признак логина на сервере ботов
 	IsLogin() bool
-	// SetHost -- устанавливает имя хоста бото-фермы
-	SetHost(host string)
 	// SetLogin -- устанавливает логин для входа на бото-ферму
 	SetLogin(login string)
+	// MakeLogin -- выпонляет логин на сервер
+	MakeLogin()error
+	// SetHost -- устанавливает имя хоста бото-фермы
+	SetHost(host string)
 	// SetPass -- устанавливает пароль для входа на бото-ферму
 	SetPass(password string)
 }