From bf84fc09b216bd4669d9a0ed9bba30209f0cb7a8 Mon Sep 17 00:00:00 2001 From: Digital Date: Sat, 30 Jun 2018 22:26:40 +0200 Subject: Add option to disable typing notifications (#63) --- README.md | 16 ++++++++++------ config/config.go | 9 +++++---- ui/command-processor.go | 2 +- ui/commands.go | 17 ++++++++++------- ui/view-main.go | 10 ++++++---- 5 files changed, 32 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index faf39e7..79509d3 100644 --- a/README.md +++ b/README.md @@ -32,9 +32,13 @@ or compile from source: - jump to room - `Alt + Enter`, then `Tab` and `Enter` to navigate and select room ### Commands -* `/quit` - Close gomuks -* `/logout` - Log out, clear caches and go back to the login view -* `/clearcache` - Clear room state cache and close gomuks -* `/leave` - Leave the current room -* `/join ` - Join the room with the given room ID or alias -* `/panic` - Trigger a test panic +* `help` - Is a known command +* `me ` - Send an emote +* `quit` - Close gomuks +* `clearcache` - Clear room state and close gomuks +* `leave` - Leave the current room +* `join ` - Join the room with the given room ID or alias +* `toggle ` - Change user preferences +* `logout` - Log out, clear caches and go back to the login view +* `send ` - Send a custom event +* `setstate ` - Change room state diff --git a/config/config.go b/config/config.go index 09e7f0d..8431c9b 100644 --- a/config/config.go +++ b/config/config.go @@ -37,10 +37,11 @@ type AuthCache struct { } type UserPreferences struct { - HideUserList bool `yaml:"hide_user_list"` - HideRoomList bool `yaml:"hide_room_list"` - BareMessageView bool `yaml:"bare_message_view"` - DisableImages bool `yaml:"disable_images"` + HideUserList bool `yaml:"hide_user_list"` + HideRoomList bool `yaml:"hide_room_list"` + BareMessageView bool `yaml:"bare_message_view"` + DisableImages bool `yaml:"disable_images"` + DisableTypingNotifs bool `yaml:"disable_typing_notifs"` } // Config contains the main config of gomuks. diff --git a/ui/command-processor.go b/ui/command-processor.go index 0f38c57..eb24f19 100644 --- a/ui/command-processor.go +++ b/ui/command-processor.go @@ -88,7 +88,7 @@ func NewCommandProcessor(parent *MainView) *CommandProcessor { "clearcache": cmdClearCache, "leave": cmdLeave, "join": cmdJoin, - "uitoggle": cmdUIToggle, + "toggle": cmdToggle, "logout": cmdLogout, "sendevent": cmdSendEvent, "setstate": cmdSetState, diff --git a/ui/commands.go b/ui/commands.go index bbe082d..60ab1f1 100644 --- a/ui/commands.go +++ b/ui/commands.go @@ -18,10 +18,10 @@ package ui import ( "encoding/json" - "maunium.net/go/gomuks/debug" - "strings" "fmt" "github.com/lucasb-eyer/go-colorful" + "maunium.net/go/gomuks/debug" + "strings" "unicode" ) @@ -74,7 +74,7 @@ func cmdRainbow(cmd *Command) { html.WriteRune(char) continue } - color := rainbow.GetInterpolatedColorFor(float64(i)/float64(len(text))).Hex() + color := rainbow.GetInterpolatedColorFor(float64(i) / float64(len(text))).Hex() fmt.Fprintf(&html, "%c", color, char) } tempMessage := cmd.Room.NewTempMessage("m.text", html.String()) @@ -182,9 +182,9 @@ func cmdSetState(cmd *Command) { } } -func cmdUIToggle(cmd *Command) { +func cmdToggle(cmd *Command) { if len(cmd.Args) == 0 { - cmd.Reply("Usage: /uitoggle ") + cmd.Reply("Usage: /toggle ") return } switch cmd.Args[0] { @@ -196,11 +196,14 @@ func cmdUIToggle(cmd *Command) { cmd.Config.Preferences.BareMessageView = !cmd.Config.Preferences.BareMessageView case "images": cmd.Config.Preferences.DisableImages = !cmd.Config.Preferences.DisableImages + case "typingnotif": + cmd.Config.Preferences.DisableTypingNotifs = !cmd.Config.Preferences.DisableTypingNotifs default: - cmd.Reply("Usage: /uitoggle ") + cmd.Reply("Usage: /toggle ") return } - cmd.UI.Render() + // is there a reason this is called twice? + // cmd.UI.Render() cmd.UI.Render() go cmd.Matrix.SendPreferencesToMatrix() } diff --git a/ui/view-main.go b/ui/view-main.go index fe2db76..40a6dcd 100644 --- a/ui/view-main.go +++ b/ui/view-main.go @@ -102,10 +102,12 @@ func (view *MainView) MarkRead(roomView *RoomView) { } func (view *MainView) InputChanged(roomView *RoomView, text string) { - if len(text) == 0 { - go view.matrix.SendTyping(roomView.Room.ID, false) - } else if text[0] != '/' { - go view.matrix.SendTyping(roomView.Room.ID, true) + if !roomView.config.Preferences.DisableTypingNotifs { + if len(text) == 0 { + go view.matrix.SendTyping(roomView.Room.ID, false) + } else if text[0] != '/' { + go view.matrix.SendTyping(roomView.Room.ID, true) + } } } -- cgit v1.2.3