From f0e2f02b400dedcc2afaa1d410250099f41ff39c Mon Sep 17 00:00:00 2001 From: ayn2op Date: Mon, 23 Sep 2024 23:45:10 +0530 Subject: [PATCH] Refactor login_form.go --- cmd/application.go | 2 +- cmd/login_form.go | 44 ++++++++++++++++---------------------------- cmd/main_flex.go | 1 + 3 files changed, 18 insertions(+), 29 deletions(-) diff --git a/cmd/application.go b/cmd/application.go index 2c3f9bb..8f68953 100644 --- a/cmd/application.go +++ b/cmd/application.go @@ -35,7 +35,7 @@ func (app *Application) onInputCapture(event *tcell.EventKey) *tcell.EventKey { func (app *Application) Show(token string) error { if token == "" { - loginForm := NewLoginForm(func(token string, err error) { + loginForm := newLoginForm(func(token string, err error) { if err != nil { slog.Error("failed to login", "err", err) return diff --git a/cmd/login_form.go b/cmd/login_form.go index 86cb95d..1473e54 100644 --- a/cmd/login_form.go +++ b/cmd/login_form.go @@ -10,15 +10,19 @@ import ( "github.com/zalando/go-keyring" ) -type DoneFn func(token string, err error) +type doneFn func(token string, err error) -type LoginForm struct { +type loginForm struct { *tview.Form - done DoneFn + done doneFn } -func NewLoginForm(done DoneFn) *LoginForm { - lf := &LoginForm{ +func newLoginForm(done doneFn) *loginForm { + if done == nil { + done = func(_ string, _ error) {} + } + + lf := &loginForm{ Form: tview.NewForm(), done: done, } @@ -41,7 +45,7 @@ func NewLoginForm(done DoneFn) *LoginForm { return lf } -func (lf *LoginForm) login() { +func (lf *loginForm) login() { email := lf.GetFormItem(0).(*tview.InputField).GetText() password := lf.GetFormItem(1).(*tview.InputField).GetText() if email == "" || password == "" { @@ -53,10 +57,7 @@ func (lf *LoginForm) login() { // Log in using the provided email and password. lr, err := apiClient.Login(email, password) if err != nil { - if lf.done != nil { - lf.done("", err) - } - + lf.done("", err) return } @@ -64,28 +65,19 @@ func (lf *LoginForm) login() { if lr.MFA && lr.Token == "" { code := lf.GetFormItem(2).(*tview.InputField).GetText() if code == "" { - if lf.done != nil { - lf.done("", errors.New("code required")) - } - + lf.done("", errors.New("code required")) return } lr, err = apiClient.TOTP(code, lr.Ticket) if err != nil { - if lf.done != nil { - lf.done("", err) - } - + lf.done("", err) return } } if lr.Token == "" { - if lf.done != nil { - lf.done("", errors.New("missing token")) - } - + lf.done("", errors.New("missing token")) return } @@ -93,14 +85,10 @@ func (lf *LoginForm) login() { if rememberMe { go func() { if err := keyring.Set(constants.Name, "token", lr.Token); err != nil { - if lf.done != nil { - lf.done("", err) - } + lf.done("", err) } }() } - if lf.done != nil { - lf.done(lr.Token, nil) - } + lf.done(lr.Token, nil) } diff --git a/cmd/main_flex.go b/cmd/main_flex.go index e46161b..d49ddad 100644 --- a/cmd/main_flex.go +++ b/cmd/main_flex.go @@ -67,6 +67,7 @@ func (mf *MainFlex) onInputCapture(event *tcell.EventKey) *tcell.EventKey { // The guilds tree is visible if the numbers of items is two. if mf.GetItemCount() == 2 { mf.RemoveItem(mf.guildsTree) + if mf.guildsTree.HasFocus() { app.SetFocus(mf) }