This commit is contained in:
nnduc
2026-10-24 14:03:52 +07:00
commit 4fe046de58
4790 changed files with 311146 additions and 0 deletions
+55
View File
@@ -0,0 +1,55 @@
//! Stickers widget, used here for the emoji picker (reactions and insertion).
use serde_json::json;
use super::P;
use crate::{app::Ctx, db, utils};
pub fn build(_ctx: &Ctx) -> String {
String::new()
}
pub async fn call(ctx: &Ctx, func: &str, p: &P<'_>) -> bool {
match func {
"ajaxReaction" => {
let mid = p.i(0);
let mut suggested = vec![];
if let Some(mid) = mid {
let me = ctx.jid();
if let Ok(Some(m)) = db::message_by_mid(ctx.db(), &me, mid).await {
let reactions = db::reactions_for(ctx.db(), &[mid]).await.unwrap_or_default();
let mut emojis: Vec<String> = vec![];
// Emojis of the message body
let body = m.body.unwrap_or_default();
for e in body.split_whitespace().filter(|w| utils::is_single_emoji(w)) {
if !emojis.contains(&e.to_string()) {
emojis.push(e.to_string());
}
}
for r in reactions {
if !emojis.contains(&r.emoji) {
emojis.push(r.emoji);
}
}
for e in emojis {
let html = utils::replace_emojis(&e, &ctx.base_uri(), true);
if let Some((url, _)) = html.single {
suggested.push(json!({ "emoji": e, "url": url }));
}
}
}
}
let html = ctx.render("Stickers/_stickers_emojis.html", json!({ "mid": mid, "suggested": suggested }));
super::drawer(ctx, "emojis", &html, true, true);
crate::rpc!(ctx, "Stickers.setEmojisEvent", mid);
}
"ajaxShow" => {
// Sticker packs are not supported: show the emojis instead
let html = ctx.render("Stickers/_stickers_emojis.html", json!({ "mid": null, "suggested": [] }));
super::drawer(ctx, "emojis", &html, true, true);
crate::rpc!(ctx, "Stickers.setEmojisEvent", serde_json::Value::Null);
}
_ => return false,
}
true
}