diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-02-10 18:46:39 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-02-10 18:46:39 +0200 |
| commit | 6c54b5fe62d56eca0deca1fa4c660d0f16df1aa6 (patch) | |
| tree | 0c4e3465b7170cdd54241aac0afd962a917ce7e4 /internal/client | |
| parent | 6c2cbda99d434cacb24360cb62d572fdeaa3492b (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.go | 104 |
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": |
