]> Untitled Git - lemmy.git/blobdiff - crates/apub/src/activities/voting/vote.rs
add enable_federated_downvotes site option
[lemmy.git] / crates / apub / src / activities / voting / vote.rs
index 7f36ed4710c722ae6dc9489365a45827ff12dc9d..81bed456f80166f082ef9d1ecc01330c7e705a46 100644 (file)
@@ -1,10 +1,9 @@
 use crate::{
   activities::{
-    generate_activity_id,
-    verify_person_in_community,
+    generate_activity_id, verify_person_in_community,
     voting::{vote_comment, vote_post},
   },
-  insert_activity,
+  insert_received_activity,
   objects::{community::ApubCommunity, person::ApubPerson},
   protocol::{
     activities::voting::vote::{Vote, VoteType},
@@ -56,13 +55,18 @@ impl ActivityHandler for Vote {
 
   #[tracing::instrument(skip_all)]
   async fn verify(&self, context: &Data<LemmyContext>) -> Result<(), LemmyError> {
+    insert_received_activity(&self.id, context).await?;
     let community = self.community(context).await?;
     verify_person_in_community(&self.actor, &community, context).await?;
-    let enable_downvotes = LocalSite::read(context.pool())
+    let enable_downvotes = LocalSite::read(&mut context.pool())
       .await
       .map(|l| l.enable_downvotes)
       .unwrap_or(true);
-    if self.kind == VoteType::Dislike && !enable_downvotes {
+    let enable_federated_downvotes = LocalSite::read(&mut context.pool())
+      .await
+      .map(|l| l.enable_federated_downvotes)
+      .unwrap_or(true);
+    if self.kind == VoteType::Dislike && (!enable_downvotes || !enable_federated_downvotes) {
       return Err(anyhow!("Downvotes disabled").into());
     }
     Ok(())
@@ -70,7 +74,6 @@ impl ActivityHandler for Vote {
 
   #[tracing::instrument(skip_all)]
   async fn receive(self, context: &Data<LemmyContext>) -> Result<(), LemmyError> {
-    insert_activity(&self.id, &self, false, true, context).await?;
     let actor = self.actor.dereference(context).await?;
     let object = self.object.dereference(context).await?;
     match object {