diff --git a/crates/adapters/activitypub-base/src/activities.rs b/crates/adapters/activitypub-base/src/activities.rs index 1b2f41c..203a3a9 100644 --- a/crates/adapters/activitypub-base/src/activities.rs +++ b/crates/adapters/activitypub-base/src/activities.rs @@ -341,7 +341,14 @@ impl Activity for CreateActivity { tracing::info!(actor = %self.actor(), "ignoring activity from blocked domain"); return Ok(()); } - let ap_id = self.id.clone(); + // Use the Note's own id, not the Create activity id (which ends in /activity). + // Delete activities reference the Note id, so they must match. + let ap_id = self + .object + .get("id") + .and_then(|v| v.as_str()) + .and_then(|s| Url::parse(s).ok()) + .unwrap_or_else(|| self.id.clone()); let actor_url = self.actor.inner().clone(); data.object_handler .on_create(&ap_id, &actor_url, self.object)