.get_result::<Self>(conn)
}
- fn community_mods_and_admins(
- conn: &PgConnection,
- community_id: i32,
- ) -> Result<Vec<i32>, Error> {
+ fn community_mods_and_admins(conn: &PgConnection, community_id: i32) -> Result<Vec<i32>, Error> {
use crate::{community_view::CommunityModeratorView, user_view::UserView};
let mut mods_and_admins: Vec<i32> = Vec::new();
mods_and_admins.append(
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;
}
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()?);
}
// 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},
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> {
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(())
}
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::<Nullable<Text>>()
+ .concat(thumbnail_url),
+ ),
+ )
+ .get_results::<Post>(conn)?;
+
+ info!("{} Post thumbnail_url rows updated.", res.len());
+
+ Ok(())
+}
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;
};
// 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) => {
},
};
+ // 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,