From d587d18cd49957f65be1f9939893ea081b1bb554 Mon Sep 17 00:00:00 2001 From: Bat Date: Thu, 3 May 2018 22:36:59 +0100 Subject: [PATCH] Actually, we don't need to federate a Note Mastodon supports Article, see https://github.com/tootsuite/mastodon/blob/63f097979990bf5ba9db848b8a253056bad781af/app/lib/activitypub/activity/create.rb#L191 --- src/models/posts.rs | 46 +++++++++------------------------------------ src/routes/posts.rs | 4 ---- 2 files changed, 9 insertions(+), 41 deletions(-) diff --git a/src/models/posts.rs b/src/models/posts.rs index 54b442cf..120a760d 100644 --- a/src/models/posts.rs +++ b/src/models/posts.rs @@ -82,6 +82,15 @@ impl Object for Post { } fn serialize(&self, conn: &PgConnection) -> serde_json::Value { + let followers = self.get_authors(conn).into_iter().map(|a| a.get_followers(conn)).collect::>>(); + let mut to = followers.into_iter().fold(vec![], |mut acc, f| { + for x in f { + acc.push(x.ap_url); + } + acc + }); + to.push(PUBLIC_VISIBILTY.to_string()); + json!({ "type": "Article", "attributedTo": self.get_authors(conn).into_iter().map(|a| a.compute_id(conn)).collect::>(), @@ -94,43 +103,6 @@ impl Object for Post { "tag": [], // TODO: "updated": "updated", // TODO: "url": "url", - "to": [ PUBLIC_VISIBILTY ] - }) - } -} - -/// ActivityPub Object to make it possible to view posts in Mastodon/Pleroma -/// and interact with them from there. -pub struct PostNote { - pub post: Post -} - -impl Object for PostNote { -fn compute_id(&self, conn: &PgConnection) -> String { - ap_url(format!("{}/{}/{}/note", BASE_URL.as_str(), self.post.get_blog(conn).actor_id, self.post.slug)) - } - - fn serialize(&self, conn: &PgConnection) -> serde_json::Value { - let followers = self.post.get_authors(conn).into_iter().map(|a| a.get_followers(conn)).collect::>>(); - let mut to = followers.into_iter().fold(vec![], |mut acc, f| { - for x in f { - acc.push(x.ap_url); - } - acc - }); - to.push(PUBLIC_VISIBILTY.to_string()); - json!({ - "type": "Note", - "attributedTo": self.post.get_authors(conn).into_iter().map(|a| a.compute_id(conn)).collect::>(), - "content": format!("{} in {}", self.post.title, self.post.get_blog(conn).title), - // TODO: "image": "image", - // TODO: "preview": "preview", - // TODO: "published": "published", - // TODO: "replies": "replies", - // TODO: "summary": "summary", - "tag": [], - // TODO: "updated": "updated", - // TODO: "url": "url", "to": to }) } diff --git a/src/routes/posts.rs b/src/routes/posts.rs index 23d28023..5dcb8482 100644 --- a/src/routes/posts.rs +++ b/src/routes/posts.rs @@ -58,9 +58,5 @@ fn create(blog_name: String, data: Form, user: User, conn: DbConn) let act = Create::new(&user, &post, &*conn); broadcast(&*conn, &user, act, user.get_followers(&*conn)); - let note_act = Create::new(&user, &PostNote { post: post }, &*conn); - broadcast(&*conn, &user, note_act, user.get_followers(&*conn)); - - Redirect::to(format!("/~/{}/{}", blog_name, slug).as_str()) }