summaryrefslogtreecommitdiff
path: root/internal/client
diff options
context:
space:
mode:
Diffstat (limited to 'internal/client')
-rw-r--r--internal/client/ui/core/chat/chat.go35
-rw-r--r--internal/client/ui/core/memberlist/memberlist.go6
2 files changed, 36 insertions, 5 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 {
diff --git a/internal/client/ui/core/memberlist/memberlist.go b/internal/client/ui/core/memberlist/memberlist.go
index 764613d..b531b14 100644
--- a/internal/client/ui/core/memberlist/memberlist.go
+++ b/internal/client/ui/core/memberlist/memberlist.go
@@ -174,10 +174,6 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
return m, nil
}
- if member.UserID == network.OwnerID {
- return m, nil
- }
-
no := false
return m, gateway.Send(&packet.SetMember{
Member: &no,
@@ -188,7 +184,7 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
Network: *state.NetworkId(m.networkIndex),
User: member.UserID,
})
- case "b":
+ case "B":
// TODO: ban
// Owner