diff --git a/plume-models/src/users.rs b/plume-models/src/users.rs index ee290560..5e8f79a7 100644 --- a/plume-models/src/users.rs +++ b/plume-models/src/users.rs @@ -17,7 +17,7 @@ use activitystreams::{ actor::{ApActor as ApActor07, Endpoints as Endpoints07, Person as Person07}, collection::OrderedCollection as OrderedCollection07, iri_string::types::IriString, - object::{AsObject as _, Image as Image07}, + object::{AsObject as _, Image as Image07, Tombstone as Tombstone07}, prelude::*, }; use chrono::{NaiveDateTime, Utc}; @@ -873,6 +873,25 @@ impl User { Ok(del) } + pub fn delete_activity07(&self, conn: &Connection) -> Result { + let mut tombstone = Tombstone07::new(); + tombstone.set_id(self.ap_url.parse()?); + + let mut del = Delete07::new( + self.ap_url.parse::()?, + tombstone.into_any_base()?, + ); + del.set_id(format!("{}#delete", self.ap_url).parse()?); + del.set_many_tos(vec![PUBLIC_VISIBILITY.parse::()?]); + del.set_many_ccs( + self.get_followers(conn)? + .into_iter() + .filter_map(|f| f.ap_url.parse::().ok()), + ); + + Ok(del) + } + pub fn avatar_url(&self, conn: &Connection) -> String { self.avatar_id .and_then(|id| Media::get(conn, id).and_then(|m| m.url()).ok())