Roll back broken audio, keep notifications.

This commit is contained in:
Storm Dragon
2026-08-12 00:09:48 -04:00
parent c77d4bac3e
commit 847bab8de1
20 changed files with 243 additions and 1053 deletions
+37 -47
View File
@@ -160,71 +160,64 @@ func TestUserAudioChangeNotification(t *testing.T) {
wantOK bool
}{
{
name: "user mutes themselves",
name: "user mutes",
user: &gumble.User{Session: 2, Name: "Guest", Channel: current, SelfMuted: true},
remember: true,
change: gumble.UserChangeAudio,
want: userChangeNotification{
event: "mute",
who: "Guest",
what: "Current",
line: "Guest muted themselves",
},
wantOK: true,
want: userChangeNotification{event: "mute", who: "Guest", what: "Current", line: "Guest muted"},
wantOK: true,
},
{
name: "user unmutes themselves",
name: "user unmutes",
user: &gumble.User{Session: 2, Name: "Guest", Channel: current},
previous: userAudioState{selfMuted: true},
remember: true,
change: gumble.UserChangeAudio,
want: userChangeNotification{
event: "unmute",
who: "Guest",
what: "Current",
line: "Guest unmuted themselves",
},
wantOK: true,
want: userChangeNotification{event: "unmute", who: "Guest", what: "Current", line: "Guest unmuted"},
wantOK: true,
},
{
name: "deafen takes precedence over implied mute",
name: "user deafens without mute change",
user: &gumble.User{Session: 2, Name: "Guest", Channel: current, SelfMuted: true, SelfDeafened: true},
previous: userAudioState{selfMuted: true},
remember: true,
change: gumble.UserChangeAudio,
want: userChangeNotification{event: "deafen", who: "Guest", what: "Current", line: "Guest deafened"},
wantOK: true,
},
{
name: "user undeafens without mute change",
user: &gumble.User{Session: 2, Name: "Guest", Channel: current, SelfMuted: true},
previous: userAudioState{selfMuted: true, selfDeafened: true},
remember: true,
change: gumble.UserChangeAudio,
want: userChangeNotification{event: "undeafen", who: "Guest", what: "Current", line: "Guest undeafened"},
wantOK: true,
},
{
name: "user mutes and deafens",
user: &gumble.User{Session: 2, Name: "Guest", Channel: current, SelfMuted: true, SelfDeafened: true},
remember: true,
change: gumble.UserChangeAudio,
want: userChangeNotification{
event: "deafen",
who: "Guest",
what: "Current",
line: "Guest deafened themselves",
},
wantOK: true,
want: userChangeNotification{event: "mutedeafen", who: "Guest", what: "Current", line: "Guest muted and deafened"},
wantOK: true,
},
{
name: "undeafen takes precedence over implied unmute",
name: "user unmutes and undeafens",
user: &gumble.User{Session: 2, Name: "Guest", Channel: current},
previous: userAudioState{selfMuted: true, selfDeafened: true},
remember: true,
change: gumble.UserChangeAudio,
want: userChangeNotification{
event: "undeafen",
who: "Guest",
what: "Current",
line: "Guest undeafened themselves",
},
wantOK: true,
want: userChangeNotification{event: "unmuteundeafen", who: "Guest", what: "Current", line: "Guest unmuted and undeafened"},
wantOK: true,
},
{
name: "self mute uses self wording",
user: &gumble.User{Session: 1, Name: "Username", Channel: current, SelfMuted: true},
name: "self mutes and deafens",
user: &gumble.User{Session: 1, Name: "Username", Channel: current, SelfMuted: true, SelfDeafened: true},
remember: true,
change: gumble.UserChangeAudio,
want: userChangeNotification{
event: "mute",
who: "me",
what: "Current",
line: "You muted yourself",
},
wantOK: true,
want: userChangeNotification{event: "mutedeafen", who: "me", what: "Current", line: "You muted and deafened yourself"},
wantOK: true,
},
{
name: "other channel is ignored",
@@ -233,12 +226,12 @@ func TestUserAudioChangeNotification(t *testing.T) {
change: gumble.UserChangeAudio,
},
{
name: "initial state is remembered without notification",
name: "unknown initial state is ignored",
user: &gumble.User{Session: 2, Name: "Guest", Channel: current, SelfMuted: true},
change: gumble.UserChangeConnected | gumble.UserChangeAudio,
},
{
name: "unrelated user change is ignored",
name: "unrelated change is ignored",
user: &gumble.User{Session: 2, Name: "Guest", Channel: current, SelfMuted: true},
remember: true,
change: gumble.UserChangeComment,
@@ -247,13 +240,10 @@ func TestUserAudioChangeNotification(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
b := &Barnard{
Client: &gumble.Client{Self: self},
}
b := &Barnard{Client: &gumble.Client{Self: self}}
if tt.remember {
b.userAudioStates = map[uint32]userAudioState{tt.user.Session: tt.previous}
}
got, ok := b.userAudioChangeNotification(&gumble.UserChangeEvent{
Client: b.Client,
Type: tt.change,