diff --git a/plume-models/src/follows.rs b/plume-models/src/follows.rs index 9bc2d93f..910942c1 100644 --- a/plume-models/src/follows.rs +++ b/plume-models/src/follows.rs @@ -2,9 +2,9 @@ use crate::{ ap_url, db_conn::DbConn, instance::Instance, notifications::*, schema::follows, users::User, Connection, Error, Result, CONFIG, }; -use activitypub::activity::{Accept, Follow as FollowAct, Undo}; +use activitypub::activity::{Accept, Follow as FollowAct}; use activitystreams::{ - activity::{Accept as Accept07, ActorAndObjectRef, Follow as FollowAct07, Undo as Undo07}, + activity::{Accept as Accept07, ActorAndObjectRef, Follow as FollowAct07, Undo}, base::AnyBase, iri_string::types::IriString, prelude::*, @@ -210,23 +210,8 @@ impl Follow { Ok(accept) } - pub fn build_undo(&self, conn: &Connection) -> Result { - let mut undo = Undo::default(); - undo.undo_props - .set_actor_link(User::get(conn, self.follower_id)?.into_id())?; - undo.object_props - .set_id_string(format!("{}/undo", self.ap_url))?; - undo.undo_props - .set_object_link::(self.clone().into_id())?; - undo.object_props - .set_to_link_vec(vec![User::get(conn, self.following_id)?.into_id()])?; - undo.object_props - .set_cc_link_vec(vec![Id::new(PUBLIC_VISIBILITY.to_string())])?; - Ok(undo) - } - - pub fn build_undo07(&self, conn: &Connection) -> Result { - let mut undo = Undo07::new( + pub fn build_undo07(&self, conn: &Connection) -> Result { + let mut undo = Undo::new( User::get(conn, self.follower_id)? .ap_url .parse::()?, @@ -296,7 +281,7 @@ impl FromId for Follow { } } -impl AsObject for Follow { +impl AsObject for Follow { type Error = Error; type Output = (); @@ -486,28 +471,6 @@ mod tests { }); } - #[test] - fn build_undo() { - let conn = db(); - conn.test_transaction::<_, Error, _>(|| { - let (follow, _following, _follower, _users) = prepare_activity(&conn); - let act = follow.build_undo(&conn)?; - - let expected = json!({ - "actor": "https://plu.me/@/other/", - "cc": ["https://www.w3.org/ns/activitystreams#Public"], - "id": format!("https://plu.me/follows/{}/undo", follow.id), - "object": format!("https://plu.me/follows/{}", follow.id), - "to": ["https://plu.me/@/user/"], - "type": "Undo" - }); - - assert_json_eq!(to_value(act)?, expected); - - Ok(()) - }); - } - #[test] fn build_undo07() { let conn = db(); diff --git a/src/routes/user.rs b/src/routes/user.rs index e89f2d04..2ed62d68 100644 --- a/src/routes/user.rs +++ b/src/routes/user.rs @@ -105,7 +105,7 @@ pub fn follow( ) -> Result, ErrorPage> { let target = User::find_by_fqn(&conn, &name)?; let message = if let Ok(follow) = follows::Follow::find(&conn, user.id, target.id) { - let delete_act = follow.build_undo(&conn)?; + let delete_act = follow.build_undo07(&conn)?; local_inbox( &conn, serde_json::to_value(&delete_act).map_err(Error::from)?, @@ -114,7 +114,7 @@ pub fn follow( let msg = i18n!(rockets.intl.catalog, "You are no longer following {}."; target.name()); rockets .worker - .execute(move || broadcast(&user, delete_act, vec![target], CONFIG.proxy().cloned())); + .execute(move || broadcast07(&user, delete_act, vec![target], CONFIG.proxy().cloned())); msg } else { let f = follows::Follow::insert(