From e5cdd95733dae83abfd497221c03451d4220f712 Mon Sep 17 00:00:00 2001 From: "jaakko.jokinen" Date: Wed, 22 Jan 2025 13:51:26 +0200 Subject: [PATCH] login works --- tui/view-login.go | 55 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 48 insertions(+), 7 deletions(-) diff --git a/tui/view-login.go b/tui/view-login.go index bc69a07..5b31b94 100644 --- a/tui/view-login.go +++ b/tui/view-login.go @@ -1,9 +1,13 @@ package tui import ( + "math" + + "github.com/mattn/go-runewidth" + + "context" "github.com/gdamore/tcell/v2" "go.mau.fi/mauview" - "maunium.net/go/gomuks/config" ) type LoginView struct { @@ -12,11 +16,11 @@ type LoginView struct { container *mauview.Centerer homeserverLabel *mauview.TextField - idLabel *mauview.TextField + idLabel *mauview.TextField passwordLabel *mauview.TextField homeserver *mauview.InputField - id *mauview.InputField + id *mauview.InputField password *mauview.InputField error *mauview.TextView @@ -25,7 +29,6 @@ type LoginView struct { loading bool - config *config.Config parent *GomuksTUI } @@ -33,11 +36,11 @@ func (gt *GomuksTUI) NewLoginView() mauview.Component { view := &LoginView{ Form: mauview.NewForm(), - idLabel: mauview.NewTextField().SetText("User ID"), + idLabel: mauview.NewTextField().SetText("User ID"), passwordLabel: mauview.NewTextField().SetText("Password"), homeserverLabel: mauview.NewTextField().SetText("Homeserver"), - id: mauview.NewInputField(), + id: mauview.NewInputField(), password: mauview.NewInputField(), homeserver: mauview.NewInputField(), @@ -57,6 +60,7 @@ func (gt *GomuksTUI) NewLoginView() mauview.Component { SetForegroundColor(tcell.ColorWhite). SetFocusedForegroundColor(tcell.ColorWhite) view.loginButton. + SetOnClick(view.Login). SetBackgroundColor(tcell.ColorDarkCyan). SetForegroundColor(tcell.ColorWhite). SetFocusedForegroundColor(tcell.ColorWhite) @@ -79,5 +83,42 @@ func (gt *GomuksTUI) NewLoginView() mauview.Component { view.container = mauview.Center(mauview.NewBox(view).SetTitle("Log in to Matrix"), 45, 13) view.container.SetAlwaysFocusChild(true) return view.container - +} +func (view *LoginView) Error(err string) { + if len(err) == 0 && view.error != nil { + view.RemoveComponent(view.error) + view.container.SetHeight(13) + view.SetRows([]int{1, 1, 1, 1, 1, 1, 1, 1, 1}) + view.error = nil + } else if len(err) > 0 { + if view.error == nil { + view.error = mauview.NewTextView().SetTextColor(tcell.ColorRed) + view.AddComponent(view.error, 1, 11, 3, 1) + } + view.error.SetText(err) + errorHeight := int(math.Ceil(float64(runewidth.StringWidth(err)) / 41)) + view.container.SetHeight(14 + errorHeight) + view.SetRow(11, errorHeight) + } + + view.parent.App.Redraw() +} + +func (view *LoginView) Login() { + if view.loading { + return + } + hs := view.homeserver.GetText() + mxid := view.id.GetText() + password := view.password.GetText() + ctx := context.TODO() + + view.loading = true + view.loginButton.SetText("Logging in...") + err := view.parent.Client.LoginPassword(ctx, hs, mxid, password) + if err == nil { + view.loginButton.SetText("it woked") + } else { + view.Error(err.Error()) + } }