]> Untitled Git - lemmy.git/blobdiff - crates/apub/src/activities/following/undo_follow.rs
Make functions work with both connection and pool (#3420)
[lemmy.git] / crates / apub / src / activities / following / undo_follow.rs
index 9f1b89dc1a4f9f6c2ad6d7e0027dc72560560974..9f18ccfbc92558f0d11ea7f2d268c19ff4e92673 100644 (file)
@@ -32,6 +32,7 @@ impl UndoFollow {
     let object = Follow::new(actor, community, context)?;
     let undo = UndoFollow {
       actor: actor.id().into(),
+      to: Some([community.id().into()]),
       object,
       kind: UndoType::Undo,
       id: generate_activity_id(
@@ -62,6 +63,9 @@ impl ActivityHandler for UndoFollow {
     verify_urls_match(self.actor.inner(), self.object.actor.inner())?;
     verify_person(&self.actor, context).await?;
     self.object.verify(context).await?;
+    if let Some(to) = &self.to {
+      verify_urls_match(to[0].inner(), self.object.object.inner())?;
+    }
     Ok(())
   }
 
@@ -78,7 +82,7 @@ impl ActivityHandler for UndoFollow {
           follower_id: person.id,
           pending: false,
         };
-        PersonFollower::unfollow(context.pool(), &form).await?;
+        PersonFollower::unfollow(&mut context.pool(), &form).await?;
       }
       UserOrCommunity::Community(c) => {
         let form = CommunityFollowerForm {
@@ -86,7 +90,7 @@ impl ActivityHandler for UndoFollow {
           person_id: person.id,
           pending: false,
         };
-        CommunityFollower::unfollow(context.pool(), &form).await?;
+        CommunityFollower::unfollow(&mut context.pool(), &form).await?;
       }
     }