From: maxime.io <maxime.de.visscher@gmail.com>
Date: Mon, 7 Aug 2023 12:22:52 +0000 (+0200)
Subject: Fix sanitize_html whitespaces (#3829)
X-Git-Url: http://these/git/%22%7Bauthor_url%7D/static/%7BprofileRss%7D?a=commitdiff_plain;h=d81fb987aa5609c291d1c64e692b099f1c0db9c9;p=lemmy.git

Fix sanitize_html whitespaces (#3829)
---

diff --git a/crates/api_common/src/utils.rs b/crates/api_common/src/utils.rs
index f3cebebd..78d7b4ca 100644
--- a/crates/api_common/src/utils.rs
+++ b/crates/api_common/src/utils.rs
@@ -797,12 +797,14 @@ pub fn generate_moderators_url(community_id: &DbUrl) -> Result<DbUrl, LemmyError
 /// Sanitize HTML with default options. Additionally, dont allow bypassing markdown
 /// links and images
 pub fn sanitize_html(data: &str) -> String {
-  let sanitized = ammonia::Builder::default()
+  ammonia::Builder::default()
     .rm_tags(&["a", "img"])
     .clean(data)
-    .to_string();
-  // restore markdown quotes
-  sanitized.replace("&gt;", ">")
+    .to_string()
+    // restore markdown quotes
+    .replace("&gt;", ">")
+    // restore white space
+    .replace("&nbsp;", " ")
 }
 
 pub fn sanitize_html_opt(data: &Option<String>) -> Option<String> {
@@ -839,5 +841,7 @@ mod tests {
     assert_eq!(sanitized, " hello");
     let sanitized = sanitize_html("<img src='http://example.com'> test");
     assert_eq!(sanitized, " test");
+    let sanitized = sanitize_html("Hello&nbsp;World");
+    assert_eq!(sanitized, "Hello World");
   }
 }