Add markdown support for summary (#482)

* Add markdown support for summary

* Save both md and html summary
This commit is contained in:
fdb-hiroshima
2019-03-17 20:11:29 +01:00
committed by GitHub
parent 191eb89958
commit 570d7fe2d0
12 changed files with 79 additions and 12 deletions
+1
View File
@@ -203,6 +203,7 @@ table! {
avatar_id -> Nullable<Int4>,
last_fetched_date -> Timestamp,
fqn -> Text,
summary_html -> Text,
}
}
+16 -6
View File
@@ -17,6 +17,7 @@ use plume_common::activity_pub::{
sign::{gen_keypair, Signer},
ActivityStream, ApSignature, Id, IntoId, PublicKey,
};
use plume_common::utils;
use reqwest::{
header::{HeaderValue, ACCEPT},
Client,
@@ -52,7 +53,7 @@ pub struct User {
pub outbox_url: String,
pub inbox_url: String,
pub is_admin: bool,
pub summary: SafeString,
pub summary: String,
pub email: Option<String>,
pub hashed_password: Option<String>,
pub instance_id: i32,
@@ -65,6 +66,7 @@ pub struct User {
pub avatar_id: Option<i32>,
pub last_fetched_date: NaiveDateTime,
pub fqn: String,
pub summary_html: SafeString,
}
#[derive(Default, Insertable)]
@@ -75,7 +77,7 @@ pub struct NewUser {
pub outbox_url: String,
pub inbox_url: String,
pub is_admin: bool,
pub summary: SafeString,
pub summary: String,
pub email: Option<String>,
pub hashed_password: Option<String>,
pub instance_id: i32,
@@ -85,6 +87,7 @@ pub struct NewUser {
pub shared_inbox_url: Option<String>,
pub followers_endpoint: String,
pub avatar_id: Option<i32>,
pub summary_html: SafeString,
}
pub const AUTH_COOKIE: &str = "user_id";
@@ -212,6 +215,7 @@ impl User {
.set((
users::display_name.eq(name),
users::email.eq(email),
users::summary_html.eq(utils::md_to_html(&summary,"").0),
users::summary.eq(summary),
))
.execute(conn)?;
@@ -320,7 +324,12 @@ impl User {
.ap_actor_props
.inbox_string()?,
is_admin: false,
summary: SafeString::new(
summary:acct
.object
.object_props
.summary_string()
.unwrap_or_default(),
summary_html: SafeString::new(
&acct
.object
.object_props
@@ -684,7 +693,7 @@ impl User {
.set_name_string(self.display_name.clone())?;
actor
.object_props
.set_summary_string(self.summary.get().clone())?;
.set_summary_string(self.summary_html.get().clone())?;
actor
.object_props
.set_url_string(self.ap_url.clone())?;
@@ -902,7 +911,8 @@ impl NewUser {
username,
display_name,
is_admin,
summary: SafeString::new(summary),
summary: summary.to_owned(),
summary_html: SafeString::new(&utils::md_to_html(&summary,"").0),
email: Some(email),
hashed_password: Some(password),
instance_id: Instance::get_local(conn)?.id,
@@ -1050,7 +1060,7 @@ pub(crate) mod tests {
).unwrap();
assert_eq!(updated.display_name, "new name");
assert_eq!(updated.email.unwrap(), "em@il");
assert_eq!(updated.summary.get(), "<p>summary</p>");
assert_eq!(updated.summary_html.get(), "<p>summary</p>");
Ok(())
});