]> Untitled Git - lemmy.git/blobdiff - crates/apub/src/activities/following/undo_follow.rs
Making community_follower.pending column not null.
[lemmy.git] / crates / apub / src / activities / following / undo_follow.rs
index ac25fcd5c1bcdd8b3e5e938ecfc543ab8544d962..f579d2323fdfd06d7288110774c0ca4c62e95a57 100644 (file)
@@ -3,8 +3,8 @@ use crate::{
   objects::{community::ApubCommunity, person::ApubPerson},
   protocol::activities::following::{follow::FollowCommunity, undo_follow::UndoFollowCommunity},
 };
-use activitystreams::activity::kind::UndoType;
-use lemmy_api_common::blocking;
+use activitystreams_kinds::activity::UndoType;
+use lemmy_api_common::utils::blocking;
 use lemmy_apub_lib::{
   data::Data,
   object_id::ObjectId,
@@ -19,6 +19,7 @@ use lemmy_utils::LemmyError;
 use lemmy_websocket::LemmyContext;
 
 impl UndoFollowCommunity {
+  #[tracing::instrument(skip_all)]
   pub async fn send(
     actor: &ApubPerson,
     community: &ApubCommunity,
@@ -27,7 +28,6 @@ impl UndoFollowCommunity {
     let object = FollowCommunity::new(actor, community, context)?;
     let undo = UndoFollowCommunity {
       actor: ObjectId::new(actor.actor_id()),
-      to: [ObjectId::new(community.actor_id())],
       object,
       kind: UndoType::Undo,
       id: generate_activity_id(
@@ -44,31 +44,40 @@ impl UndoFollowCommunity {
 #[async_trait::async_trait(?Send)]
 impl ActivityHandler for UndoFollowCommunity {
   type DataType = LemmyContext;
+
+  #[tracing::instrument(skip_all)]
   async fn verify(
     &self,
     context: &Data<LemmyContext>,
     request_counter: &mut i32,
   ) -> Result<(), LemmyError> {
     verify_activity(&self.id, self.actor.inner(), &context.settings())?;
-    verify_urls_match(self.to[0].inner(), self.object.object.inner())?;
     verify_urls_match(self.actor.inner(), self.object.actor.inner())?;
     verify_person(&self.actor, context, request_counter).await?;
     self.object.verify(context, request_counter).await?;
     Ok(())
   }
 
+  #[tracing::instrument(skip_all)]
   async fn receive(
     self,
     context: &Data<LemmyContext>,
     request_counter: &mut i32,
   ) -> Result<(), LemmyError> {
-    let actor = self.actor.dereference(context, request_counter).await?;
-    let community = self.to[0].dereference(context, request_counter).await?;
+    let person = self
+      .actor
+      .dereference(context, context.client(), request_counter)
+      .await?;
+    let community = self
+      .object
+      .object
+      .dereference(context, context.client(), request_counter)
+      .await?;
 
     let community_follower_form = CommunityFollowerForm {
       community_id: community.id,
-      person_id: actor.id,
-      pending: false,
+      person_id: person.id,
+      pending: Some(false),
     };
 
     // This will fail if they aren't a follower, but ignore the error.