Updated how mute and deafen for self works, more similar to official client behavior.

This commit is contained in:
Storm Dragon
2026-09-05 22:11:03 -04:00
parent cf9746c8de
commit 97e0dc9281
5 changed files with 111 additions and 23 deletions
+16 -11
View File
@@ -9,12 +9,17 @@ import (
)
func TestSetSelfMutedAndDeafenedWritesOneCombinedState(t *testing.T) {
for _, deafened := range []bool{true, false} {
name := "undeafen"
if deafened {
name = "deafen"
}
t.Run(name, func(t *testing.T) {
tests := []struct {
name string
muted bool
deafened bool
}{
{name: "deafen", muted: true, deafened: true},
{name: "undeafen and remain muted", muted: true},
{name: "undeafen and unmute"},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
local, remote := net.Pipe()
defer local.Close()
defer remote.Close()
@@ -23,7 +28,7 @@ func TestSetSelfMutedAndDeafenedWritesOneCombinedState(t *testing.T) {
user := &User{Session: 7, client: client}
written := make(chan struct{})
go func() {
user.SetSelfMutedAndDeafened(true, deafened)
user.SetSelfMutedAndDeafened(test.muted, test.deafened)
close(written)
}()
@@ -38,11 +43,11 @@ func TestSetSelfMutedAndDeafenedWritesOneCombinedState(t *testing.T) {
if err := proto.Unmarshal(data, &state); err != nil {
t.Fatal(err)
}
if state.SelfMute == nil || !*state.SelfMute {
t.Fatalf("self mute = %v, want true", state.SelfMute)
if state.SelfMute == nil || *state.SelfMute != test.muted {
t.Fatalf("self mute = %v, want %v", state.SelfMute, test.muted)
}
if state.SelfDeaf == nil || *state.SelfDeaf != deafened {
t.Fatalf("self deafen = %v, want %v", state.SelfDeaf, deafened)
if state.SelfDeaf == nil || *state.SelfDeaf != test.deafened {
t.Fatalf("self deafen = %v, want %v", state.SelfDeaf, test.deafened)
}
<-written
})