fix(core/database): include users from pin events

This commit is contained in:
Paul Makles
2024-07-28 17:35:47 +01:00
parent f8ec6ba5ff
commit 535f01604b

View File

@@ -4,7 +4,8 @@ use indexmap::{IndexMap, IndexSet};
use iso8601_timestamp::Timestamp; use iso8601_timestamp::Timestamp;
use revolt_config::{config, FeaturesLimits}; use revolt_config::{config, FeaturesLimits};
use revolt_models::v0::{ use revolt_models::v0::{
self, BulkMessageResponse, DataMessageSend, Embed, MessageAuthor, MessageFlags, MessageSort, MessageWebhook, PushNotification, ReplyIntent, SendableEmbed, Text, RE_MENTION self, BulkMessageResponse, DataMessageSend, Embed, MessageAuthor, MessageFlags, MessageSort,
MessageWebhook, PushNotification, ReplyIntent, SendableEmbed, Text, RE_MENTION,
}; };
use revolt_permissions::{ChannelPermission, PermissionValue}; use revolt_permissions::{ChannelPermission, PermissionValue};
use revolt_result::Result; use revolt_result::Result;
@@ -194,7 +195,7 @@ auto_derived!(
/// Optional fields on message /// Optional fields on message
pub enum FieldsMessage { pub enum FieldsMessage {
Pinned Pinned,
} }
); );
@@ -218,7 +219,7 @@ impl Default for Message {
interactions: Default::default(), interactions: Default::default(),
masquerade: None, masquerade: None,
flags: None, flags: None,
pinned: None, pinned: None,
} }
} }
} }
@@ -527,20 +528,26 @@ impl Message {
} }
/// Update message data /// Update message data
pub async fn update(&mut self, db: &Database, partial: PartialMessage, remove: Vec<FieldsMessage>) -> Result<()> { pub async fn update(
&mut self,
db: &Database,
partial: PartialMessage,
remove: Vec<FieldsMessage>,
) -> Result<()> {
self.apply_options(partial.clone()); self.apply_options(partial.clone());
for field in &remove { for field in &remove {
self.remove_field(field); self.remove_field(field);
} }
db.update_message(&self.id, &partial, remove.clone()).await?; db.update_message(&self.id, &partial, remove.clone())
.await?;
EventV1::MessageUpdate { EventV1::MessageUpdate {
id: self.id.clone(), id: self.id.clone(),
channel: self.channel.clone(), channel: self.channel.clone(),
data: partial.into(), data: partial.into(),
clear: remove.into_iter().map(|field| field.into()).collect() clear: remove.into_iter().map(|field| field.into()).collect(),
} }
.p(self.channel.clone()) .p(self.channel.clone())
.await; .await;
@@ -591,9 +598,11 @@ impl Message {
users.push(id.clone()); users.push(id.clone());
} }
v0::SystemMessage::Text { .. } => {} v0::SystemMessage::Text { .. } => {}
v0::SystemMessage::MessagePinned { by, .. } v0::SystemMessage::MessagePinned { by, .. } => {
| v0::SystemMessage::MessageUnpinned { by, .. } => { users.push(by.clone());
users.push(by.clone()) }
v0::SystemMessage::MessageUnpinned { by, .. } => {
users.push(by.clone());
} }
} }
} }
@@ -827,7 +836,7 @@ impl Message {
pub fn remove_field(&mut self, field: &FieldsMessage) { pub fn remove_field(&mut self, field: &FieldsMessage) {
match field { match field {
FieldsMessage::Pinned => self.pinned = None FieldsMessage::Pinned => self.pinned = None,
} }
} }
} }