diff --git a/Cargo.lock b/Cargo.lock index 98b6561..000fc92 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -949,6 +949,15 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "emojis" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99e1f1df1f181f2539bac8bf027d31ca5ffbf9e559e3f2d09413b9107b5c02f4" +dependencies = [ + "phf", +] + [[package]] name = "encoding_rs" version = "0.8.35" @@ -3731,6 +3740,7 @@ dependencies = [ "base64 0.22.1", "bb8-postgres", "bitflags 2.9.0", + "emojis", "md-5", "pathbufd", "redis", diff --git a/crates/app/src/main.rs b/crates/app/src/main.rs index 1285a1a..0c9b3e0 100644 --- a/crates/app/src/main.rs +++ b/crates/app/src/main.rs @@ -5,7 +5,7 @@ mod routes; mod sanitize; use assets::{init_dirs, write_assets}; -use tetratto_core::model::permissions::FinePermission; +use tetratto_core::model::{permissions::FinePermission, uploads::CustomEmoji}; pub use tetratto_core::*; use axum::{Extension, Router}; @@ -24,7 +24,12 @@ use tokio::sync::RwLock; pub(crate) type State = Arc>; fn render_markdown(value: &Value, _: &HashMap) -> tera::Result { - Ok(tetratto_shared::markdown::render_markdown(value.as_str().unwrap()).into()) + Ok( + CustomEmoji::replace(&tetratto_shared::markdown::render_markdown( + value.as_str().unwrap(), + )) + .into(), + ) } fn color_escape(value: &Value, _: &HashMap) -> tera::Result { diff --git a/crates/app/src/public/html/communities/create_post.html b/crates/app/src/public/html/communities/create_post.html index f991b3a..306de5d 100644 --- a/crates/app/src/public/html/communities/create_post.html +++ b/crates/app/src/public/html/communities/create_post.html @@ -61,9 +61,14 @@ > - +
+ {{ components::emoji_picker(element_id="content", + render_dialog=true) }} + + +
diff --git a/crates/app/src/public/html/components.html b/crates/app/src/public/html/components.html index 539f054..a598ede 100644 --- a/crates/app/src/public/html/components.html +++ b/crates/app/src/public/html/components.html @@ -1112,4 +1112,75 @@ secondary=false) -%} {% endif %} -{%- endmacro %} +{%- endmacro %} {% macro emoji_picker(element_id, render_dialog=false) -%} + + +{% if render_dialog %} + +
+ + + + + + +
+
+ +
+ +
+
+
+
+{% endif %} {%- endmacro %} diff --git a/crates/app/src/public/html/post/post.html b/crates/app/src/public/html/post/post.html index d17182c..1d2cc7f 100644 --- a/crates/app/src/public/html/post/post.html +++ b/crates/app/src/public/html/post/post.html @@ -43,9 +43,14 @@ > - +
+ {{ components::emoji_picker(element_id="content", + render_dialog=true) }} + + +
{% endif %} @@ -198,8 +203,8 @@ >