Implement Poke functionality, refine talking status and add local log events
This commit is contained in:
@@ -183,6 +183,16 @@ type clientLeftMsg struct {
|
||||
clientID uint16
|
||||
}
|
||||
|
||||
type clientMovedMsg struct {
|
||||
clientID uint16
|
||||
channelID uint64
|
||||
}
|
||||
|
||||
type pokeMsg struct {
|
||||
senderName string
|
||||
message string
|
||||
}
|
||||
|
||||
type chatMsg struct {
|
||||
senderID uint16
|
||||
senderName string
|
||||
@@ -240,6 +250,20 @@ func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
m.audioPlayer.PlayPCM(e.SenderID, e.PCM)
|
||||
}
|
||||
})
|
||||
|
||||
m.client.On(ts3client.EventClientMoved, func(e *ts3client.ClientMovedEvent) {
|
||||
m.program.Send(clientMovedMsg{
|
||||
clientID: e.ClientID,
|
||||
channelID: e.ChannelID,
|
||||
})
|
||||
})
|
||||
|
||||
m.client.On(ts3client.EventPoke, func(e *ts3client.PokeEvent) {
|
||||
m.program.Send(pokeMsg{
|
||||
senderName: e.SenderName,
|
||||
message: e.Message,
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// Initialize audio player
|
||||
@@ -349,6 +373,29 @@ func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
}
|
||||
return m, nil
|
||||
|
||||
case clientMovedMsg:
|
||||
if msg.clientID == m.selfID {
|
||||
chName := "Unknown"
|
||||
if ch := m.client.GetChannel(msg.channelID); ch != nil {
|
||||
chName = ch.Name
|
||||
}
|
||||
m.chatMessages = append(m.chatMessages, ChatMessage{
|
||||
Time: time.Now(),
|
||||
Sender: "SYSTEM",
|
||||
Content: fmt.Sprintf("You moved to channel: %s", chName),
|
||||
})
|
||||
}
|
||||
return m, nil
|
||||
|
||||
case pokeMsg:
|
||||
m.chatMessages = append(m.chatMessages, ChatMessage{
|
||||
Time: time.Now(),
|
||||
Sender: "POKE",
|
||||
Content: fmt.Sprintf("[%s]: %s", msg.senderName, msg.message),
|
||||
})
|
||||
m.addLog("Received poke from %s: %s", msg.senderName, msg.message)
|
||||
return m, nil
|
||||
|
||||
case chatMsg:
|
||||
m.chatMessages = append(m.chatMessages, ChatMessage{
|
||||
Time: time.Now(),
|
||||
@@ -569,7 +616,7 @@ func (m *Model) handleKeyPress(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
|
||||
return m, nil
|
||||
}
|
||||
|
||||
func (m *Model) handleChatKeys(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
|
||||
func (m *Model) handleChatKeys(_ tea.KeyMsg) (tea.Model, tea.Cmd) {
|
||||
return m, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user