Show errors in login view. Fixes #14
This commit is contained in:
		| @@ -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 | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user