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