Make changes on `content` field backwards compatible

This commit is contained in:
Felix Ableitner 2020-11-25 14:07:04 +01:00
parent 2b5feca806
commit f070b1823d
2 changed files with 29 additions and 19 deletions

View File

@ -7,11 +7,7 @@ use activitystreams::{
}; };
use anyhow::{anyhow, Context}; use anyhow::{anyhow, Context};
use chrono::NaiveDateTime; use chrono::NaiveDateTime;
use lemmy_utils::{ use lemmy_utils::{location_info, utils::convert_datetime, LemmyError};
location_info,
utils::{convert_datetime, markdown_to_html},
LemmyError,
};
use url::Url; use url::Url;
pub(crate) mod comment; pub(crate) mod comment;
@ -69,14 +65,19 @@ pub(in crate::objects) fn set_content_and_source<T, Kind1, Kind2>(
markdown_text: &str, markdown_text: &str,
) -> Result<(), LemmyError> ) -> Result<(), LemmyError>
where where
T: ApObjectExt<Kind1> + ObjectExt<Kind2>, T: ApObjectExt<Kind1> + ObjectExt<Kind2> + AsBase<Kind2>,
{ {
let mut source = Object::<()>::new_none_type(); let mut source = Object::<()>::new_none_type();
source source
.set_content(markdown_text) .set_content(markdown_text)
.set_media_type(mime_markdown()?); .set_media_type(mime_markdown()?);
object.set_source(source.into_any_base()?); object.set_source(source.into_any_base()?);
object.set_content(markdown_to_html(markdown_text));
// set `content` to markdown for compatibility with older Lemmy versions
// TODO: change this to HTML in a while
object.set_content(markdown_text);
object.set_media_type(mime_markdown()?);
//object.set_content(markdown_to_html(markdown_text));
Ok(()) Ok(())
} }
@ -84,7 +85,7 @@ pub(in crate::objects) fn get_source_markdown_value<T, Kind1, Kind2>(
object: &T, object: &T,
) -> Result<Option<String>, LemmyError> ) -> Result<Option<String>, LemmyError>
where where
T: ApObjectExt<Kind1> + ObjectExt<Kind2>, T: ApObjectExt<Kind1> + ObjectExt<Kind2> + AsBase<Kind2>,
{ {
let content = object let content = object
.content() .content()
@ -92,16 +93,24 @@ where
.flatten() .flatten()
.map(|s| s.to_string()); .map(|s| s.to_string());
if content.is_some() { if content.is_some() {
let source = object.source().context(location_info!())?; let source = object.source();
let source = Object::<()>::from_any_base(source.to_owned())?.context(location_info!())?; // updated lemmy version, read markdown from `source.content`
check_is_markdown(source.media_type())?; if let Some(source) = source {
let source_content = source let source = Object::<()>::from_any_base(source.to_owned())?.context(location_info!())?;
.content() check_is_markdown(source.media_type())?;
.map(|s| s.as_single_xsd_string()) let source_content = source
.flatten() .content()
.context(location_info!())? .map(|s| s.as_single_xsd_string())
.to_string(); .flatten()
return Ok(Some(source_content)); .context(location_info!())?
.to_string();
return Ok(Some(source_content));
}
// older lemmy version, read markdown from `content`
// TODO: remove this after a while
else {
return Ok(content);
}
} }
Ok(None) Ok(None)
} }

View File

@ -54,7 +54,8 @@ impl ToApub for User_ {
if let Some(bio) = &self.bio { if let Some(bio) = &self.bio {
set_content_and_source(&mut person, bio)?; set_content_and_source(&mut person, bio)?;
// Also set summary for compatibility with older Lemmy versions. Remove this after a while. // Also set summary for compatibility with older Lemmy versions.
// TODO: remove this after a while.
person.set_summary(bio.to_owned()); person.set_summary(bio.to_owned());
} }