From 15dec656a864dfc5a6ee604e023243a466faf0a2 Mon Sep 17 00:00:00 2001 From: Bradlee Barnes <69256931+StupidRepo@users.noreply.github.com> Date: Fri, 7 Mar 2025 22:39:04 +0000 Subject: [PATCH] fix: allow message pinning and unpinning for DM-like channels Signed-off-by: Bradlee Barnes <69256931+StupidRepo@users.noreply.github.com> --- crates/delta/src/routes/channels/message_pin.rs | 15 +++++++-------- crates/delta/src/routes/channels/message_unpin.rs | 15 +++++++-------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/crates/delta/src/routes/channels/message_pin.rs b/crates/delta/src/routes/channels/message_pin.rs index d8df7feb..933ff16d 100644 --- a/crates/delta/src/routes/channels/message_pin.rs +++ b/crates/delta/src/routes/channels/message_pin.rs @@ -1,7 +1,4 @@ -use revolt_database::{ - util::{permissions::DatabasePermissionQuery, reference::Reference}, - Database, PartialMessage, SystemMessage, User, AMQP, -}; +use revolt_database::{util::{permissions::DatabasePermissionQuery, reference::Reference}, Channel, Database, PartialMessage, SystemMessage, User, AMQP}; use revolt_models::v0::MessageAuthor; use revolt_permissions::{calculate_channel_permissions, ChannelPermission}; use revolt_result::{create_error, Result}; @@ -22,10 +19,12 @@ pub async fn message_pin( ) -> Result { let channel = target.as_channel(db).await?; - let mut query = DatabasePermissionQuery::new(db, &user).channel(&channel); - calculate_channel_permissions(&mut query) - .await - .throw_if_lacking_channel_permission(ChannelPermission::ManageMessages)?; + if !matches!(channel, Channel::DirectMessage { .. } | Channel::Group { .. } | Channel::SavedMessages { .. }) { + let mut query = DatabasePermissionQuery::new(db, &user).channel(&channel); + calculate_channel_permissions(&mut query) + .await + .throw_if_lacking_channel_permission(ChannelPermission::ManageMessages)?; + } let mut message = msg.as_message_in_channel(db, channel.id()).await?; diff --git a/crates/delta/src/routes/channels/message_unpin.rs b/crates/delta/src/routes/channels/message_unpin.rs index 67154842..356bf2ea 100644 --- a/crates/delta/src/routes/channels/message_unpin.rs +++ b/crates/delta/src/routes/channels/message_unpin.rs @@ -1,7 +1,4 @@ -use revolt_database::{ - util::{permissions::DatabasePermissionQuery, reference::Reference}, - Database, FieldsMessage, PartialMessage, SystemMessage, User, AMQP, -}; +use revolt_database::{util::{permissions::DatabasePermissionQuery, reference::Reference}, Channel, Database, FieldsMessage, PartialMessage, SystemMessage, User, AMQP}; use revolt_models::v0::MessageAuthor; use revolt_permissions::{calculate_channel_permissions, ChannelPermission}; use revolt_result::{create_error, Result}; @@ -22,10 +19,12 @@ pub async fn message_unpin( ) -> Result { let channel = target.as_channel(db).await?; - let mut query = DatabasePermissionQuery::new(db, &user).channel(&channel); - calculate_channel_permissions(&mut query) - .await - .throw_if_lacking_channel_permission(ChannelPermission::ManageMessages)?; + if !matches!(channel, Channel::DirectMessage { .. } | Channel::Group { .. } | Channel::SavedMessages { .. }) { + let mut query = DatabasePermissionQuery::new(db, &user).channel(&channel); + calculate_channel_permissions(&mut query) + .await + .throw_if_lacking_channel_permission(ChannelPermission::ManageMessages)?; + } let mut message = msg.as_message_in_channel(db, channel.id()).await?;