Compare commits

..

2 Commits

Author SHA1 Message Date
aoife cassidy
9b1bf9c252
use pings to show self speaking 2025-11-01 21:01:11 +01:00
aoife cassidy
15740565d1
get rid of deafened buffer 2025-11-01 21:00:13 +01:00
2 changed files with 15 additions and 6 deletions

View File

@ -73,9 +73,9 @@ func (au *Audio) ProcessInput(conn *ircevent.Connection, channel string) error {
}
empty := make([]float32, len(out))
if !au.Deafened {
select {
case str := <-au.OutBuffer:
if !au.Deafened {
raw, err := base64.StdEncoding.DecodeString(str)
if err != nil {
break
@ -83,10 +83,10 @@ func (au *Audio) ProcessInput(conn *ircevent.Connection, channel string) error {
if _, err = dec.DecodeFloat32(raw, out); err != nil {
break
}
}
default:
copy(out, empty)
}
}
})
if err != nil {
log.Printf("error opening input stream: %v", err)
@ -125,6 +125,7 @@ func (au *Audio) ProcessInput(conn *ircevent.Connection, channel string) error {
}
str := base64.StdEncoding.EncodeToString(data[:n])
conn.Send("PING", "SPEAKING")
conn.Privmsg(channel, str)
}

10
main.go
View File

@ -101,6 +101,14 @@ func (m *model) setDeafen(is bool) {
}
func (m model) Init() tea.Cmd {
m.conn.AddCallback("PONG", func(e ircmsg.Message) {
if e.Params[1] == "SPEAKING" {
u := m.users[m.nick]
u.lastSpoke = time.Now()
m.users[m.nick] = u
}
})
m.conn.AddCallback("PRIVMSG", func(e ircmsg.Message) {
target, message := e.Params[0], e.Params[1]
if target != m.channel {
@ -215,7 +223,7 @@ func (m model) View() (s string) {
status = deafened
} else if user.isMuted {
status = muted
} else if user.lastSpoke.Add(time.Second * 2).After(time.Now()) {
} else if user.lastSpoke.Add(time.Millisecond * 100).After(time.Now()) {
status = speaking
nickStyled = nick
}