]> Sergey Matveev's repositories - vors.git/commitdiff
Silencing of the peer
authorSergey Matveev <stargrave@stargrave.org>
Sun, 28 Apr 2024 15:20:19 +0000 (18:20 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Mon, 29 Apr 2024 11:28:12 +0000 (14:28 +0300)
cmd/client/gui.go
cmd/client/main.go
cmd/client/stats.go
doc/features.texi
internal/colours.go

index 4f4051cc5076f99e79b2ef4735148b898fe3e4cf53d572e6a303c3d6a4382b6e..34f1370688108dbb38d677cfda96a3f7e9383bde7ba5be472656d4e02989dd74 100644 (file)
@@ -32,16 +32,6 @@ var (
        CurrentView = 0
 )
 
-func guiQuit(gui *gocui.Gui, v *gocui.View) error {
-       Finish <- struct{}{}
-       return gocui.ErrQuit
-}
-
-func mute(gui *gocui.Gui, v *gocui.View) error {
-       muteToggle()
-       return nil
-}
-
 func tabHandle(gui *gocui.Gui, v *gocui.View) error {
        sids := make([]int, 0, len(Streams)+1)
        sids = append(sids, -1)
@@ -106,9 +96,8 @@ func guiLayout(gui *gocui.Gui) error {
                sids = append(sids, int(sid))
        }
        sort.Ints(sids)
-       var stream *Stream
        for _, sid := range sids {
-               stream = Streams[byte(sid)]
+               stream := Streams[byte(sid)]
                v, err = gui.SetView(stream.name, 0, prevY, maxX/2-1, prevY+2)
                if err != nil {
                        if err != gocui.ErrUnknownView {
@@ -118,6 +107,14 @@ func guiLayout(gui *gocui.Gui) error {
                                v.Title = ">" + stream.name + "<"
                        } else {
                                v.Title = stream.name
+                               if err := GUI.SetKeybinding(
+                                       stream.name, gocui.KeyEnter, gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
+                                               stream.silenced = !stream.silenced
+                                               return nil
+                                       },
+                               ); err != nil {
+                                       return err
+                               }
                        }
                }
                _, err = gui.SetView(stream.name+"-vol", maxX/2, prevY, maxX-1, prevY+2)
index 620dee6289b3cde532a8ab2c3533e93e1c3cb8662cb5238dd61c62c01374e92b..f485d513ffa4fa32d2a2bec43be19b9e8d779982e3da482a72dc56459931315d 100644 (file)
@@ -42,12 +42,13 @@ import (
 )
 
 type Stream struct {
-       name  string
-       ctr   uint32
-       actr  uint32
-       muted bool
-       in    chan []byte
-       stats *Stats
+       name     string
+       ctr      uint32
+       actr     uint32
+       muted    bool
+       silenced bool
+       in       chan []byte
+       stats    *Stats
 }
 
 var (
@@ -315,10 +316,20 @@ func main() {
        if err := GUI.SetKeybinding("", gocui.KeyTab, gocui.ModNone, tabHandle); err != nil {
                log.Fatal(err)
        }
-       if err := GUI.SetKeybinding("", gocui.KeyF1, gocui.ModNone, mute); err != nil {
+       if err := GUI.SetKeybinding("", gocui.KeyF1, gocui.ModNone,
+               func(gui *gocui.Gui, v *gocui.View) error {
+                       muteToggle()
+                       return nil
+               },
+       ); err != nil {
                log.Fatal(err)
        }
-       if err := GUI.SetKeybinding("", gocui.KeyF10, gocui.ModNone, guiQuit); err != nil {
+       if err := GUI.SetKeybinding("", gocui.KeyF10, gocui.ModNone,
+               func(gui *gocui.Gui, v *gocui.View) error {
+                       Finish <- struct{}{}
+                       return gocui.ErrQuit
+               },
+       ); err != nil {
                log.Fatal(err)
        }
 
@@ -425,6 +436,9 @@ func main() {
                                                                if !ok {
                                                                        break
                                                                }
+                                                               if stream.silenced {
+                                                                       continue
+                                                               }
                                                                if _, err = io.Copy(player,
                                                                        bytes.NewReader(pcmbuf)); err != nil {
                                                                        log.Println("play:", err)
index d157f44d265e4ad444a56bcaf491f95038661eec6e71dc65405ee186fbc574a5..985c3aef491dd0ef4ad5189bb0b58f3fce3c08c7539dcf23de1b52023504142b 100644 (file)
@@ -75,12 +75,15 @@ func statsDrawer(s *Stream) {
                        if s.name == *Name && Muted {
                                l += "  |  " + vors.CRed + "MUTE" + vors.CReset
                        } else {
-                               if s.muted {
-                                       l += "  |  " + vors.CRed + "MUTE" + vors.CReset
+                               if s.silenced {
+                                       l += "  |  " + vors.CMagenta + "SILENT" + vors.CReset
                                }
                                if s.stats.last.Add(vors.ScreenRefresh).After(now) {
                                        l += "  |  " + vors.CGreen + "TALK" + vors.CReset
                                }
+                               if s.muted {
+                                       l += "  |  " + vors.CRed + "MUTE" + vors.CReset
+                               }
                        }
                        v, err = GUI.View(s.name)
                        if err == nil {
index 279c12122a65e8e9d38df340871e5cffea605ec4406938a572f11f141fb263cd..8608dc6d8eef9454f02486527a2928b6a8c4b688237686562268d7266188b5b1 100644 (file)
@@ -21,6 +21,8 @@ server's public key knowledge.
 @item Rooms, optionally password protected. Peers are able to broadcast
 text message to everyone in the room.
 
+@item Ability to silence specified peer in the room.
+
 @item Fancy TUI client with mute-toggle ability by external utilities.
 
 @end itemize
index 707ce8152bd6bd7bcff1cf3113f58931572a5137d0fca1a85fd9e8530596e450..b5153af9019e8fe5eb74247a7dfb264f310df3718908f25ca803059ebe5fb354 100644 (file)
@@ -7,9 +7,10 @@ import (
 )
 
 var (
-       CGreen string
-       CRed   string
-       CReset string
+       CGreen   string
+       CRed     string
+       CMagenta string
+       CReset   string
 )
 
 func init() {
@@ -17,5 +18,6 @@ func init() {
        t := term.NewTerminal(&b, "")
        CGreen = string(t.Escape.Green)
        CRed = string(t.Escape.Red)
+       CMagenta = string(t.Escape.Magenta)
        CReset = string(t.Escape.Reset)
 }