diff options
Diffstat (limited to 'internal/server/api/api.go')
| -rw-r--r-- | internal/server/api/api.go | 15 |
1 files changed, 14 insertions, 1 deletions
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") |
