summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2025-02-05 16:45:01 +0200
committerKyren223 <Kyren223@proton.me>2025-02-05 16:45:01 +0200
commit9d1158f03e63c32c426f3ee9edfce310dd4c2492 (patch)
tree5b37029312cf054676140c1afffd045874910da0 /internal
parentf0607f16633d266f55a4b08f7edbbc13d08121ae (diff)
Implemented deleting messages in user signals
Diffstat (limited to 'internal')
-rw-r--r--internal/client/ui/core/chat/chat.go55
-rw-r--r--internal/server/api/api.go15
2 files changed, 45 insertions, 25 deletions
diff --git a/internal/client/ui/core/chat/chat.go b/internal/client/ui/core/chat/chat.go
index 7d4ec6a..6a2e102 100644
--- a/internal/client/ui/core/chat/chat.go
+++ b/internal/client/ui/core/chat/chat.go
@@ -371,32 +371,38 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
}
case "x", "d":
- if m.selectedMessage != nil {
- log.Println("deleting message:", m.selectedMessage)
- cmd = gateway.Send(&packet.DeleteMessage{
- Message: m.selectedMessage.ID,
- })
+ if m.selectedMessage == nil {
+ return m, nil
}
+ log.Println("deleting message:", m.selectedMessage)
+ cmd = gateway.Send(&packet.DeleteMessage{
+ Message: m.selectedMessage.ID,
+ })
case "e":
- if m.selectedMessage != nil && m.selectedMessage.SenderID == *state.UserID {
- log.Println("editing message:", m.selectedMessage)
- m.editingMessage = m.selectedMessage
+ if m.selectedMessage == nil {
+ return m, nil
+ }
+ if m.selectedMessage.SenderID != *state.UserID {
+ return m, nil
+ }
- m.vi.Reset()
- m.vi.SetString(m.selectedMessage.Content)
+ log.Println("editing message:", m.selectedMessage)
+ m.editingMessage = m.selectedMessage
- m.locked = true
- m.vi.SetMode(viminput.InsertMode)
- m.vi.SetCursorLine(len(m.vi.Lines()) - 1)
- m.vi.SetCursorColumn(len(m.vi.Lines()[m.vi.CursorLine()]))
+ m.vi.Reset()
+ m.vi.SetString(m.selectedMessage.Content)
- m.borderStyle = ViEditBorder
- m.style = editStyle
- }
+ m.locked = true
+ m.vi.SetMode(viminput.InsertMode)
+ m.vi.SetCursorLine(len(m.vi.Lines()) - 1)
+ m.vi.SetCursorColumn(len(m.vi.Lines()[m.vi.CursorLine()]))
+
+ m.borderStyle = ViEditBorder
+ m.style = editStyle
case "T":
- if m.selectedMessage == nil {
+ if m.selectedMessage == nil || m.receiverIndex != -1 {
return m, nil
}
senderId := m.selectedMessage.SenderID
@@ -414,7 +420,7 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
// Admin
case "K":
- if m.selectedMessage == nil {
+ if m.selectedMessage == nil || m.receiverIndex != -1 {
return m, nil
}
networkId := state.NetworkId(m.networkIndex)
@@ -445,7 +451,7 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
User: member.UserID,
})
case "M":
- if m.selectedMessage == nil {
+ if m.selectedMessage == nil || m.receiverIndex != -1 {
return m, nil
}
networkId := state.NetworkId(m.networkIndex)
@@ -480,7 +486,7 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
User: member.UserID,
})
case "U":
- if m.selectedMessage == nil {
+ if m.selectedMessage == nil || m.receiverIndex != -1 {
return m, nil
}
networkId := state.NetworkId(m.networkIndex)
@@ -515,7 +521,7 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
User: member.UserID,
})
case "B":
- if m.selectedMessage == nil {
+ if m.selectedMessage == nil || m.receiverIndex != -1 {
return m, nil
}
networkId := state.NetworkId(m.networkIndex)
@@ -545,9 +551,10 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
// Owner
case "D":
- if m.selectedMessage == nil {
+ if m.selectedMessage == nil || m.receiverIndex != -1 {
return m, nil
}
+
networkId := state.NetworkId(m.networkIndex)
network := state.State.Networks[*networkId]
senderId := m.selectedMessage.SenderID
@@ -573,7 +580,7 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
User: member.UserID,
})
case "P":
- if m.selectedMessage == nil {
+ if m.selectedMessage == nil || m.receiverIndex != -1 {
return m, nil
}
networkId := state.NetworkId(m.networkIndex)
diff --git a/internal/server/api/api.go b/internal/server/api/api.go
index a95065c..92679b8 100644
--- a/internal/server/api/api.go
+++ b/internal/server/api/api.go
@@ -1037,7 +1037,20 @@ func DeleteMessage(ctx context.Context, sess *session.Session, request *packet.D
}
if message.ReceiverID != nil {
- return &ErrNotImplemented
+ if message.SenderID != sess.ID() {
+ return &ErrPermissionDenied
+ }
+
+ err = queries.DeleteMessage(ctx, message.ID)
+ if err != nil {
+ log.Println("database error 5:", err)
+ return &ErrInternalError
+ }
+
+ return UserPropagate(ctx, sess, *message.ReceiverID, &packet.MessagesInfo{
+ Messages: nil,
+ RemovedMessages: []snowflake.ID{message.ID},
+ })
}
assert.Never("unreachable")