Show errors in login view. Fixes #14
This commit is contained in:
parent
ee4b0be953
commit
9308f4cb47
@ -17,6 +17,7 @@
|
||||
package ui
|
||||
|
||||
import (
|
||||
"maunium.net/go/gomatrix"
|
||||
"maunium.net/go/gomuks/config"
|
||||
"maunium.net/go/gomuks/debug"
|
||||
"maunium.net/go/gomuks/interface"
|
||||
@ -30,6 +31,7 @@ type LoginView struct {
|
||||
homeserver *widget.AdvancedInputField
|
||||
username *widget.AdvancedInputField
|
||||
password *widget.AdvancedInputField
|
||||
error *widget.FormTextView
|
||||
|
||||
matrix ifc.MatrixContainer
|
||||
config *config.Config
|
||||
@ -65,7 +67,15 @@ func (ui *GomuksUI) NewLoginView() tview.Primitive {
|
||||
|
||||
ui.loginView = view
|
||||
|
||||
return widget.Center(45, 11, ui.loginView)
|
||||
return widget.Center(45, 13, ui.loginView)
|
||||
}
|
||||
|
||||
func (view *LoginView) Error(err string) {
|
||||
if view.error == nil {
|
||||
view.error = &widget.FormTextView{TextView: tview.NewTextView()}
|
||||
view.AddFormItem(view.error)
|
||||
}
|
||||
view.error.SetText(err)
|
||||
}
|
||||
|
||||
func (view *LoginView) Login() {
|
||||
@ -75,6 +85,19 @@ func (view *LoginView) Login() {
|
||||
|
||||
debug.Printf("Logging into %s as %s...", hs, mxid)
|
||||
view.config.HS = hs
|
||||
debug.Print("Connect result:", view.matrix.InitClient())
|
||||
debug.Print("Login result:", view.matrix.Login(mxid, password))
|
||||
err := view.matrix.InitClient()
|
||||
debug.Print("Init error:", err)
|
||||
err = view.matrix.Login(mxid, password)
|
||||
if err != nil {
|
||||
if httpErr, ok := err.(gomatrix.HTTPError); ok {
|
||||
if respErr, ok := httpErr.WrappedError.(gomatrix.RespError); ok {
|
||||
view.Error(respErr.Err)
|
||||
} else {
|
||||
view.Error(httpErr.Message)
|
||||
}
|
||||
} else {
|
||||
view.Error("Failed to connect to server.")
|
||||
}
|
||||
debug.Print("Login error:", err)
|
||||
}
|
||||
}
|
||||
|
44
ui/widget/form-text-view.go
Normal file
44
ui/widget/form-text-view.go
Normal file
@ -0,0 +1,44 @@
|
||||
// gomuks - A terminal Matrix client written in Go.
|
||||
// Copyright (C) 2018 Tulir Asokan
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
package widget
|
||||
|
||||
import (
|
||||
"maunium.net/go/tcell"
|
||||
"maunium.net/go/tview"
|
||||
)
|
||||
|
||||
type FormTextView struct {
|
||||
*tview.TextView
|
||||
}
|
||||
|
||||
func (ftv *FormTextView) GetLabel() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (ftv *FormTextView) SetFormAttributes(label string, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) tview.FormItem {
|
||||
return ftv
|
||||
}
|
||||
|
||||
func (ftv *FormTextView) GetFieldWidth() int {
|
||||
_, _, w, _ := ftv.TextView.GetRect()
|
||||
return w
|
||||
}
|
||||
|
||||
func (ftv *FormTextView) SetFinishedFunc(handler func(key tcell.Key)) tview.FormItem {
|
||||
ftv.SetDoneFunc(handler)
|
||||
return ftv
|
||||
}
|
Loading…
Reference in New Issue
Block a user