diff options
Diffstat (limited to 'http-client/main.go')
| -rw-r--r-- | http-client/main.go | 47 |
1 files changed, 43 insertions, 4 deletions
diff --git a/http-client/main.go b/http-client/main.go index 7d32e9b..0af8efa 100644 --- a/http-client/main.go +++ b/http-client/main.go @@ -12,9 +12,11 @@ import ( "fyne.io/fyne/v2/layout" "fyne.io/fyne/v2/widget" "image/color" + "strings" ) type UserData struct { + ServerUrl string Username string ServerKey []byte UserKey []byte @@ -36,7 +38,7 @@ func chatLayout(window fyne.Window, user UserData) { entry := widget.NewEntry() submit := widget.NewButton("Отправить", func() { - go sendMessage(user, entry.Text, user.ParsedUserKey) + go sendMessage(user, entry.Text) entry.SetText("") storage.RLock() @@ -62,6 +64,9 @@ func loginLayout(window fyne.Window, user UserData) { label := canvas.NewText("Chat", color.White) label.TextSize = 40 + urlLabel := widget.NewLabel("URL: ") + urlEntry := widget.NewEntry() + loginLabel := widget.NewLabel("Логин: ") loginEntry := widget.NewEntry() @@ -105,9 +110,21 @@ func loginLayout(window fyne.Window, user UserData) { dialog.ShowInformation("Ошибка", "Логин не может быть пустым", window) return } - user.Username = loginEntry.Text - _, err := tryAuth(user, user.ParsedUserKey) + + if len(urlEntry.Text) == 0 { + dialog.ShowInformation("Ошибка", "URL не может быть пустым", window) + return + } + user.ServerUrl = strings.TrimRight(urlEntry.Text, "/") + + err := pingServer(user) + if err != nil { + dialog.ShowInformation("Ошибка", "Нет связи с сервером", window) + return + } + + _, err = tryAuth(user) if err != nil { dialog.ShowInformation("Ошибка", fmt.Sprint(err), window) return @@ -122,6 +139,7 @@ func loginLayout(window fyne.Window, user UserData) { mainContainer := container.NewCenter(container.NewVBox( container.NewCenter(label), layout.NewSpacer(), + container.NewBorder(nil, nil, urlLabel, nil, urlEntry), container.NewBorder(nil, nil, loginLabel, nil, loginEntry), chooseKey, loginButton, @@ -138,6 +156,9 @@ func registerLayout(window fyne.Window, user UserData) { label := canvas.NewText("Chat", color.White) label.TextSize = 40 + urlLabel := widget.NewLabel("URL: ") + urlEntry := widget.NewEntry() + loginLabel := widget.NewLabel("Логин: ") loginEntry := widget.NewEntry() @@ -168,8 +189,25 @@ func registerLayout(window fyne.Window, user UserData) { return } + if len(loginEntry.Text) == 0 { + dialog.ShowInformation("Ошибка", "Логин не может быть пустым", window) + return + } user.Username = loginEntry.Text - _, err := register(user, string(user.ServerKey), user.ParsedUserKey) + + if len(urlEntry.Text) == 0 { + dialog.ShowInformation("Ошибка", "URL не может быть пустым", window) + return + } + user.ServerUrl = strings.TrimRight(urlEntry.Text, "/") + + err := pingServer(user) + if err != nil { + dialog.ShowInformation("Ошибка", "Нет связи с сервером", window) + return + } + + _, err = register(user, string(user.ServerKey)) if err != nil { dialog.ShowInformation("Ошибка", fmt.Sprint(err), window) return @@ -184,6 +222,7 @@ func registerLayout(window fyne.Window, user UserData) { window.SetContent(container.NewCenter(container.NewVBox( container.NewCenter(label), layout.NewSpacer(), + container.NewBorder(nil, nil, urlLabel, nil, urlEntry), container.NewBorder(nil, nil, loginLabel, nil, loginEntry), generateKeysBtn, registerButton, |