summaryrefslogtreecommitdiff
path: root/internal/client/ui/core/chat/chat.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/client/ui/core/chat/chat.go')
-rw-r--r--internal/client/ui/core/chat/chat.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/internal/client/ui/core/chat/chat.go b/internal/client/ui/core/chat/chat.go
index b67e0bf..888ecd1 100644
--- a/internal/client/ui/core/chat/chat.go
+++ b/internal/client/ui/core/chat/chat.go
@@ -326,6 +326,41 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
m.style = editStyle
}
+ // Admin
+ case "K":
+ 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 !state.State.Members[*networkId][*state.UserID].IsAdmin {
+ return m, nil
+ }
+
+ if member.UserID == *state.UserID {
+ return m, nil
+ }
+
+ if member.IsAdmin && network.OwnerID != *state.UserID {
+ return m, nil
+ }
+
+ no := false
+ return m, gateway.Send(&packet.SetMember{
+ Member: &no,
+ Admin: nil,
+ Muted: nil,
+ Banned: nil,
+ BanReason: nil,
+ Network: *state.NetworkId(m.networkIndex),
+ User: member.UserID,
+ })
+ case "B":
+ // TODO: ban
+
// Owner
case "D":
if m.selectedMessage == nil {