diff --git a/server/src/apub/post.rs b/server/src/apub/post.rs index aca2984b3..932ff8ce2 100644 --- a/server/src/apub/post.rs +++ b/server/src/apub/post.rs @@ -28,7 +28,7 @@ use lemmy_db::{ user::User_, Crud, }; -use lemmy_utils::{convert_datetime, get_apub_protocol_string, settings::Settings}; +use lemmy_utils::convert_datetime; use serde::Deserialize; use url::Url; @@ -109,15 +109,8 @@ impl ToApub for Post { } if let Some(thumbnail_url) = &self.thumbnail_url { - let full_url = format!( - "{}://{}/pictshare/{}", - get_apub_protocol_string(), - Settings::get().hostname, - thumbnail_url - ); - let mut image = Image::new(); - image.set_url(full_url); + image.set_url(thumbnail_url.to_string()); page.set_image(image.into_any_base()?); } diff --git a/server/src/code_migrations.rs b/server/src/code_migrations.rs index 7c85fefcb..a102faf07 100644 --- a/server/src/code_migrations.rs +++ b/server/src/code_migrations.rs @@ -1,6 +1,9 @@ // This is for db migrations that require code use crate::LemmyError; -use diesel::*; +use diesel::{ + sql_types::{Nullable, Text}, + *, +}; use lemmy_db::{ comment::Comment, community::{Community, CommunityForm}, @@ -10,7 +13,13 @@ use lemmy_db::{ user::{UserForm, User_}, Crud, }; -use lemmy_utils::{generate_actor_keypair, make_apub_endpoint, EndpointType}; +use lemmy_utils::{ + generate_actor_keypair, + get_apub_protocol_string, + make_apub_endpoint, + settings::Settings, + EndpointType, +}; use log::info; pub fn run_advanced_migrations(conn: &PgConnection) -> Result<(), LemmyError> { @@ -19,6 +28,7 @@ pub fn run_advanced_migrations(conn: &PgConnection) -> Result<(), LemmyError> { post_updates_2020_04_03(&conn)?; comment_updates_2020_04_03(&conn)?; private_message_updates_2020_05_05(&conn)?; + post_thumbnail_url_updates_2020_07_27(&conn)?; Ok(()) } @@ -188,3 +198,32 @@ fn private_message_updates_2020_05_05(conn: &PgConnection) -> Result<(), LemmyEr Ok(()) } + +fn post_thumbnail_url_updates_2020_07_27(conn: &PgConnection) -> Result<(), LemmyError> { + use lemmy_db::schema::post::dsl::*; + + info!("Running post_thumbnail_url_updates_2020_07_27"); + + let domain_prefix = format!( + "{}://{}/pictrs/image/", + get_apub_protocol_string(), + Settings::get().hostname + ); + + let incorrect_thumbnails = post.filter(thumbnail_url.not_like("http%")); + + // Prepend the rows with the update + let res = diesel::update(incorrect_thumbnails) + .set( + thumbnail_url.eq( + domain_prefix + .into_sql::>() + .concat(thumbnail_url), + ), + ) + .get_results::(conn)?; + + info!("{} Post thumbnail_url rows updated.", res.len()); + + Ok(()) +} diff --git a/server/src/lib.rs b/server/src/lib.rs index 4795cf01e..5dff2ccbd 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -31,6 +31,7 @@ pub mod websocket; use crate::request::{retry, RecvError}; use actix_web::{client::Client, dev::ConnectionInfo}; +use lemmy_utils::{get_apub_protocol_string, settings::Settings}; use log::error; use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC}; use serde::Deserialize; @@ -140,7 +141,7 @@ async fn fetch_iframely_and_pictrs_data( }; // Fetch pictrs thumbnail - let pictrs_thumbnail = match iframely_thumbnail_url { + let pictrs_hash = match iframely_thumbnail_url { Some(iframely_thumbnail_url) => match fetch_pictrs(client, &iframely_thumbnail_url).await { Ok(res) => Some(res.files[0].file.to_owned()), Err(e) => { @@ -158,6 +159,18 @@ async fn fetch_iframely_and_pictrs_data( }, }; + // The full urls are necessary for federation + let pictrs_thumbnail = if let Some(pictrs_hash) = pictrs_hash { + Some(format!( + "{}://{}/pictrs/image/{}", + get_apub_protocol_string(), + Settings::get().hostname, + pictrs_hash + )) + } else { + None + }; + ( iframely_title, iframely_description, diff --git a/ui/package.json b/ui/package.json index 7573e44d2..f5ba9c8d4 100644 --- a/ui/package.json +++ b/ui/package.json @@ -82,7 +82,7 @@ "eslint --fix" ], "../server/src/**/*.rs": [ - "rustfmt --config-path ../server/.rustfmt.toml" + "rustfmt +nightly --config-path ../server/.rustfmt.toml" ], "package.json": [ "sortpack" diff --git a/ui/src/components/sponsors.tsx b/ui/src/components/sponsors.tsx index fdc81fd15..3317d1c7e 100644 --- a/ui/src/components/sponsors.tsx +++ b/ui/src/components/sponsors.tsx @@ -19,6 +19,7 @@ interface SilverUser { } let general = [ + 'mexicanhalloween', 'William Moore', 'Rachel Schmitz', 'comradeda',