Переглянути джерело

feat: add keybinding to logout (#421)

Kieran O'Sullivan 1 рік тому
батько
коміт
c8f82fa825
2 змінених файлів з 14 додано та 0 видалено
  1. 10 0
      cmd/main_flex.go
  2. 4 0
      internal/config/keys.go

+ 10 - 0
cmd/main_flex.go

@@ -1,8 +1,12 @@
 package cmd
 
 import (
+	"log"
+
+	"github.com/ayn2op/discordo/internal/constants"
 	"github.com/gdamore/tcell/v2"
 	"github.com/rivo/tview"
+	"github.com/zalando/go-keyring"
 )
 
 type MainFlex struct {
@@ -50,6 +54,12 @@ func (mf *MainFlex) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 	case cfg.Keys.FocusMessageInput:
 		app.SetFocus(mf.messageInput)
 		return nil
+	case cfg.Keys.Logout:
+		app.Stop()
+		if err := keyring.Delete(constants.Name, "token"); err != nil {
+			log.Fatal(err)
+		}
+		return nil
 	case cfg.Keys.ToggleGuildsTree:
 		// The guilds tree is visible if the numbers of items is two.
 		if mf.GetItemCount() == 2 {

+ 4 - 0
internal/config/keys.go

@@ -15,6 +15,8 @@ type (
 		GuildsTree   GuildsTreeKeys   `toml:"guilds_tree"`
 		MessagesText MessagesTextKeys `toml:"messages_text"`
 		MessageInput MessageInputKeys `toml:"message_input"`
+
+		Logout string `toml:"logout"`
 	}
 
 	GuildsTreeKeys struct {
@@ -45,6 +47,8 @@ func defaultKeys() Keys {
 		FocusMessageInput: "Ctrl+P",
 		ToggleGuildsTree:  "Ctrl+B",
 
+		Logout: "Ctrl+D",
+
 		SelectPrevious: "Rune[k]",
 		SelectNext:     "Rune[j]",
 		SelectFirst:    "Rune[g]",