]> Untitled Git - lemmy.git/commitdiff
make comments work (more or less)
authorFelix Ableitner <me@nutomic.com>
Thu, 28 May 2020 18:09:37 +0000 (20:09 +0200)
committerFelix Ableitner <me@nutomic.com>
Thu, 28 May 2020 18:09:37 +0000 (20:09 +0200)
server/src/api/post.rs
server/src/db/code_migrations.rs
server/src/db/post.rs

index 9bbde791977b8f4f16b2010b85a66616f311473b..aee6073253f5a8af53650a699b6e497c196c1514 100644 (file)
@@ -34,6 +34,9 @@ use diesel::{
 use failure::Error;
 use serde::{Deserialize, Serialize};
 use std::str::FromStr;
+use crate::apub::get_apub_protocol_string;
+use crate::db::community::Community;
+use url::Url;
 
 #[derive(Serialize, Deserialize, Debug)]
 pub struct CreatePost {
@@ -190,7 +193,17 @@ impl Perform for Oper<CreatePost> {
       }
     };
 
-    let updated_post = match Post::update_ap_id(&conn, inserted_post.id) {
+    // TODO: we should be able to remove Post::update_ap_id with this
+    let community = Url::parse(&Community::read(&conn, data.community_id)?.actor_id)?;
+    let apub_id =
+        format!(
+          "{}://{}/{}/{}",
+          get_apub_protocol_string(),
+          community.domain().ok_or(format_err!("community has invalid domain"))?,
+          "post",
+          inserted_post.id
+        );
+    let updated_post = match Post::update_ap_id(&conn, inserted_post.id, &apub_id) {
       Ok(post) => post,
       Err(_e) => return Err(APIError::err("couldnt_create_post").into()),
     };
index 204bfe791b1058c83ff58fb17d572378d3edbf5b..11c8ba1fe255e6172db3661ff71dd0a6ee7a293d 100644 (file)
@@ -124,7 +124,7 @@ fn post_updates_2020_04_03(conn: &PgConnection) -> Result<(), Error> {
     .load::<Post>(conn)?;
 
   for cpost in &incorrect_posts {
-    Post::update_ap_id(&conn, cpost.id)?;
+    Post::update_ap_id(&conn, cpost.id, todo!())?;
   }
 
   info!("{} post rows updated.", incorrect_posts.len());
index d12f98d81542fdb526642db75092df13a5557dcb..ff3af55d57ad4af384b3dfff4901488a280aad27 100644 (file)
@@ -75,7 +75,7 @@ impl Post {
     post.filter(ap_id.eq(object_id)).first::<Self>(conn)
   }
 
-  pub fn update_ap_id(conn: &PgConnection, post_id: i32) -> Result<Self, Error> {
+  pub fn update_ap_id(conn: &PgConnection, post_id: i32, ap_id: &str) -> Result<Self, Error> {
     use crate::schema::post::dsl::*;
 
     let apid = make_apub_endpoint(EndpointType::Post, &post_id.to_string()).to_string();