summaryrefslogtreecommitdiff
path: root/internal/client
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2025-02-10 18:46:39 +0200
committerKyren223 <Kyren223@proton.me>2025-02-10 18:46:39 +0200
commit6c54b5fe62d56eca0deca1fa4c660d0f16df1aa6 (patch)
tree0c4e3465b7170cdd54241aac0afd962a917ce7e4 /internal/client
parent6c2cbda99d434cacb24360cb62d572fdeaa3492b (diff)
Chat actions are now handled appropriately for both frequency and signal
Diffstat (limited to 'internal/client')
-rw-r--r--internal/client/ui/core/chat/chat.go104
1 files changed, 57 insertions, 47 deletions
diff --git a/internal/client/ui/core/chat/chat.go b/internal/client/ui/core/chat/chat.go
index 8084c9b..8b1f4fe 100644
--- a/internal/client/ui/core/chat/chat.go
+++ b/internal/client/ui/core/chat/chat.go
@@ -429,9 +429,10 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
m.style = editStyle()
case "T":
- if m.selectedMessage == nil || m.receiverIndex != -1 {
+ if m.selectedMessage == nil {
return m, nil
}
+
senderId := m.selectedMessage.SenderID
if senderId == *state.UserID {
@@ -513,68 +514,77 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
User: member.UserID,
})
case "U":
- if m.selectedMessage == nil || m.receiverIndex != -1 {
+ if m.selectedMessage == nil {
return m, nil
}
- networkId := state.NetworkId(m.networkIndex)
- network := state.State.Networks[*networkId]
- senderId := m.selectedMessage.SenderID
- member := state.State.Members[*networkId][senderId]
- if !member.IsMuted {
- return m, nil
- }
+ if m.receiverIndex != -1 {
+ // TODO: unlock user
+ } else {
+ networkId := state.NetworkId(m.networkIndex)
+ network := state.State.Networks[*networkId]
+ senderId := m.selectedMessage.SenderID
+ member := state.State.Members[*networkId][senderId]
- if !state.State.Members[*networkId][*state.UserID].IsAdmin {
- return m, nil
- }
+ if !member.IsMuted {
+ return m, nil
+ }
- if member.UserID == *state.UserID {
- return m, nil
- }
+ if !state.State.Members[*networkId][*state.UserID].IsAdmin {
+ return m, nil
+ }
- if member.IsAdmin && network.OwnerID != *state.UserID {
- return m, nil
- }
+ if member.UserID == *state.UserID {
+ return m, nil
+ }
- no := false
- return m, gateway.Send(&packet.SetMember{
- Member: nil,
- Admin: nil,
- Muted: &no,
- Banned: nil,
- BanReason: nil,
- Network: *state.NetworkId(m.networkIndex),
- User: member.UserID,
- })
+ if member.IsAdmin && network.OwnerID != *state.UserID {
+ return m, nil
+ }
+
+ no := false
+ return m, gateway.Send(&packet.SetMember{
+ Member: nil,
+ Admin: nil,
+ Muted: &no,
+ Banned: nil,
+ BanReason: nil,
+ Network: *state.NetworkId(m.networkIndex),
+ User: member.UserID,
+ })
+ }
case "B":
- if m.selectedMessage == nil || m.receiverIndex != -1 {
+ if m.selectedMessage == nil {
return m, nil
}
- networkId := state.NetworkId(m.networkIndex)
- network := state.State.Networks[*networkId]
- senderId := m.selectedMessage.SenderID
- member := state.State.Members[*networkId][senderId]
+ if m.receiverIndex != -1 {
+ // TODO: block user
+ } else {
+ networkId := state.NetworkId(m.networkIndex)
+ network := state.State.Networks[*networkId]
+ senderId := m.selectedMessage.SenderID
+ member := state.State.Members[*networkId][senderId]
- if !state.State.Members[*networkId][*state.UserID].IsAdmin {
- return m, nil
- }
+ if !state.State.Members[*networkId][*state.UserID].IsAdmin {
+ return m, nil
+ }
- if member.UserID == *state.UserID {
- return m, nil
- }
+ if member.UserID == *state.UserID {
+ return m, nil
+ }
- if member.IsAdmin && network.OwnerID != *state.UserID {
- return m, nil
- }
+ if member.IsAdmin && network.OwnerID != *state.UserID {
+ return m, nil
+ }
- cmd := func() tea.Msg {
- return ui.BanReasonPopupMsg{
- Network: *state.NetworkId(m.networkIndex),
- User: member.UserID,
+ cmd := func() tea.Msg {
+ return ui.BanReasonPopupMsg{
+ Network: *state.NetworkId(m.networkIndex),
+ User: member.UserID,
+ }
}
+ return m, cmd
}
- return m, cmd
// Owner
case "D":