]> Untitled Git - lemmy.git/commitdiff
Adding a boolean check to send_activity_internal
authorDessalines <tyhou13@gmx.com>
Tue, 6 Oct 2020 15:19:01 +0000 (10:19 -0500)
committerDessalines <tyhou13@gmx.com>
Tue, 6 Oct 2020 15:19:01 +0000 (10:19 -0500)
lemmy_apub/src/activity_queue.rs

index 9f7f38cf1dad7f5f3aebe3c594052af360777c8d..2f11024c4b228d2fdd8b97a6ff6390b02ca006ef 100644 (file)
@@ -47,6 +47,7 @@ where
       creator,
       vec![to],
       context.pool(),
+      true,
     )
     .await?;
   }
@@ -85,6 +86,7 @@ where
     community,
     to,
     context.pool(),
+    true,
   )
   .await?;
 
@@ -114,6 +116,7 @@ where
       creator,
       vec![inbox],
       context.pool(),
+      true,
     )
     .await?;
   }
@@ -143,6 +146,7 @@ where
     creator,
     mentions,
     context.pool(),
+    false, // Don't create a new DB row
   )
   .await?;
   Ok(())
@@ -158,6 +162,7 @@ async fn send_activity_internal<T, Kind>(
   actor: &dyn ActorType,
   to: Vec<Url>,
   pool: &DbPool,
+  insert_into_db: bool,
 ) -> Result<(), LemmyError>
 where
   T: AsObject<Kind> + Extends<Kind>,
@@ -174,7 +179,12 @@ where
 
   let activity = activity.into_any_base()?;
   let serialised_activity = serde_json::to_string(&activity)?;
-  insert_activity(actor.user_id(), activity.clone(), true, pool).await?;
+
+  // This is necessary because send_comment and send_comment_mentions
+  // might send the same ap_id
+  if insert_into_db {
+    insert_activity(actor.user_id(), activity.clone(), true, pool).await?;
+  }
 
   // TODO: it would make sense to create a separate task for each destination server
   let message = SendActivityTask {