|
@@ -6,56 +6,17 @@ import (
|
|
|
|
|
|
|
|
"github.com/ayntgl/discordo/config"
|
|
"github.com/ayntgl/discordo/config"
|
|
|
"github.com/diamondburned/arikawa/v3/api"
|
|
"github.com/diamondburned/arikawa/v3/api"
|
|
|
- "github.com/gdamore/tcell/v2"
|
|
|
|
|
"github.com/rivo/tview"
|
|
"github.com/rivo/tview"
|
|
|
"github.com/zalando/go-keyring"
|
|
"github.com/zalando/go-keyring"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-const (
|
|
|
|
|
- emailViewPageName = "email"
|
|
|
|
|
- tokenViewPageName = "token"
|
|
|
|
|
-)
|
|
|
|
|
-
|
|
|
|
|
-func NewLoginView(c *Core) *tview.Pages {
|
|
|
|
|
- v := tview.NewPages()
|
|
|
|
|
-
|
|
|
|
|
- v.AddPage(emailViewPageName, newEmailView(c), true, true)
|
|
|
|
|
- v.AddPage(tokenViewPageName, newTokenView(c), true, true)
|
|
|
|
|
- // Since the recommended method to login is using the email and password, it is displayed on the screen first.
|
|
|
|
|
- v.SwitchToPage(emailViewPageName)
|
|
|
|
|
-
|
|
|
|
|
- v.SetTitle("Login")
|
|
|
|
|
- v.SetTitleAlign(tview.AlignLeft)
|
|
|
|
|
- v.SetBorder(true)
|
|
|
|
|
- v.SetBorderPadding(0, 0, 1, 1)
|
|
|
|
|
- v.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
|
|
|
|
|
- if event.Key() == tcell.KeyCtrlSpace {
|
|
|
|
|
- name, _ := v.GetFrontPage()
|
|
|
|
|
-
|
|
|
|
|
- switch name {
|
|
|
|
|
- case emailViewPageName:
|
|
|
|
|
- name = tokenViewPageName
|
|
|
|
|
- case tokenViewPageName:
|
|
|
|
|
- name = emailViewPageName
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- v.SwitchToPage(name)
|
|
|
|
|
- return nil
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- return event
|
|
|
|
|
- })
|
|
|
|
|
-
|
|
|
|
|
- return v
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-type EmailView struct {
|
|
|
|
|
|
|
+type LoginView struct {
|
|
|
*tview.Form
|
|
*tview.Form
|
|
|
core *Core
|
|
core *Core
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func newEmailView(c *Core) *EmailView {
|
|
|
|
|
- v := &EmailView{
|
|
|
|
|
|
|
+func NewLoginView(c *Core) *LoginView {
|
|
|
|
|
+ v := &LoginView{
|
|
|
Form: tview.NewForm(),
|
|
Form: tview.NewForm(),
|
|
|
core: c,
|
|
core: c,
|
|
|
}
|
|
}
|
|
@@ -65,10 +26,15 @@ func newEmailView(c *Core) *EmailView {
|
|
|
v.AddPasswordField("Code (optional)", "", 0, 0, nil)
|
|
v.AddPasswordField("Code (optional)", "", 0, 0, nil)
|
|
|
v.AddButton("Login", v.onLoginButtonSelected)
|
|
v.AddButton("Login", v.onLoginButtonSelected)
|
|
|
|
|
|
|
|
|
|
+ v.SetTitle("Login")
|
|
|
|
|
+ v.SetTitleAlign(tview.AlignLeft)
|
|
|
|
|
+ v.SetBorder(true)
|
|
|
|
|
+ v.SetBorderPadding(1, 1, 1, 1)
|
|
|
|
|
+
|
|
|
return v
|
|
return v
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (v *EmailView) onLoginButtonSelected() {
|
|
|
|
|
|
|
+func (v *LoginView) onLoginButtonSelected() {
|
|
|
email := v.GetFormItem(0).(*tview.InputField).GetText()
|
|
email := v.GetFormItem(0).(*tview.InputField).GetText()
|
|
|
password := v.GetFormItem(1).(*tview.InputField).GetText()
|
|
password := v.GetFormItem(1).(*tview.InputField).GetText()
|
|
|
if email == "" || password == "" {
|
|
if email == "" || password == "" {
|
|
@@ -105,35 +71,3 @@ func (v *EmailView) onLoginButtonSelected() {
|
|
|
v.core.Draw()
|
|
v.core.Draw()
|
|
|
go keyring.Set(config.Name, "token", l.Token)
|
|
go keyring.Set(config.Name, "token", l.Token)
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-type TokenView struct {
|
|
|
|
|
- *tview.Form
|
|
|
|
|
- core *Core
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func newTokenView(c *Core) *TokenView {
|
|
|
|
|
- v := &TokenView{
|
|
|
|
|
- Form: tview.NewForm(),
|
|
|
|
|
- core: c,
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- v.AddPasswordField("Token", "", 0, 0, nil)
|
|
|
|
|
- v.AddButton("Login", v.onLoginButtonSelected)
|
|
|
|
|
-
|
|
|
|
|
- return v
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func (v *TokenView) onLoginButtonSelected() {
|
|
|
|
|
- token := v.GetFormItem(0).(*tview.InputField).GetText()
|
|
|
|
|
- if token == "" {
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- err := v.core.Run(token)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- log.Fatal(err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- v.core.Draw()
|
|
|
|
|
- go keyring.Set(config.Name, "token", token)
|
|
|
|
|
-}
|
|
|