Show errors in login view. Fixes #14
This commit is contained in:
parent
ee4b0be953
commit
9308f4cb47
@ -17,6 +17,7 @@
|
|||||||
package ui
|
package ui
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"maunium.net/go/gomatrix"
|
||||||
"maunium.net/go/gomuks/config"
|
"maunium.net/go/gomuks/config"
|
||||||
"maunium.net/go/gomuks/debug"
|
"maunium.net/go/gomuks/debug"
|
||||||
"maunium.net/go/gomuks/interface"
|
"maunium.net/go/gomuks/interface"
|
||||||
@ -30,6 +31,7 @@ type LoginView struct {
|
|||||||
homeserver *widget.AdvancedInputField
|
homeserver *widget.AdvancedInputField
|
||||||
username *widget.AdvancedInputField
|
username *widget.AdvancedInputField
|
||||||
password *widget.AdvancedInputField
|
password *widget.AdvancedInputField
|
||||||
|
error *widget.FormTextView
|
||||||
|
|
||||||
matrix ifc.MatrixContainer
|
matrix ifc.MatrixContainer
|
||||||
config *config.Config
|
config *config.Config
|
||||||
@ -65,7 +67,15 @@ func (ui *GomuksUI) NewLoginView() tview.Primitive {
|
|||||||
|
|
||||||
ui.loginView = view
|
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() {
|
func (view *LoginView) Login() {
|
||||||
@ -75,6 +85,19 @@ func (view *LoginView) Login() {
|
|||||||
|
|
||||||
debug.Printf("Logging into %s as %s...", hs, mxid)
|
debug.Printf("Logging into %s as %s...", hs, mxid)
|
||||||
view.config.HS = hs
|
view.config.HS = hs
|
||||||
debug.Print("Connect result:", view.matrix.InitClient())
|
err := view.matrix.InitClient()
|
||||||
debug.Print("Login result:", view.matrix.Login(mxid, password))
|
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