diff --git a/crates/app/src/main.rs b/crates/app/src/main.rs index 0c9b3e0..1f79837 100644 --- a/crates/app/src/main.rs +++ b/crates/app/src/main.rs @@ -25,10 +25,10 @@ pub(crate) type State = Arc>; fn render_markdown(value: &Value, _: &HashMap) -> tera::Result { Ok( - CustomEmoji::replace(&tetratto_shared::markdown::render_markdown( - value.as_str().unwrap(), - )) - .into(), + tetratto_shared::markdown::render_markdown(&CustomEmoji::replace(value.as_str().unwrap())) + .replace("\\@", "@") + .replace("%5C@", "@") + .into(), ) } diff --git a/crates/core/src/model/auth.rs b/crates/core/src/model/auth.rs index 0bcf54b..c53895d 100644 --- a/crates/core/src/model/auth.rs +++ b/crates/core/src/model/auth.rs @@ -309,6 +309,7 @@ impl User { for char in input.chars() { if (char == '\\') && !escape { escape = true; + continue; } if (char == '@') && !escape { diff --git a/crates/core/src/model/uploads.rs b/crates/core/src/model/uploads.rs index 5006c97..53dcfd3 100644 --- a/crates/core/src/model/uploads.rs +++ b/crates/core/src/model/uploads.rs @@ -111,15 +111,10 @@ impl CustomEmoji { let mut chars = input.chars(); while let Some(char) = chars.next() { - if escape == true { - buffer.push(char); - continue; - } - if char == '\\' && escape == false { escape = true; continue; - } else if char == ':' { + } else if char == ':' && escape == false { let mut community_id: String = String::new(); let mut accepting_community_id_chars: bool = true; let mut emoji_name: String = String::new(); @@ -164,6 +159,8 @@ impl CustomEmoji { } else if in_emoji { buffer.push(char); } + + escape = false; } out