Browse Source

Sort unicode emoji before emojos, let enter fill an emoji

main
Charlotte Som 4 months ago
parent
commit
8531c83574
  1. 6
      frontend/lib/chat.mjs
  2. 18
      frontend/lib/emojis.mjs
  3. 2
      src/main.rs

6
frontend/lib/chat.mjs

@ -6,7 +6,7 @@ import {
import { emojify, findEmojis } from "./emojis.mjs?v=ee93fb";
import { linkify } from "./links.mjs?v=ee93fb";
import { joinSession } from "./watch-session.mjs?v=ee93fb";
import { pling } from "./pling.mjs?v=ee93fb"
import { pling } from "./pling.mjs?v=ee93fb";
import { state } from "./state.mjs";
function setCaretPosition(elem, caretPos) {
@ -44,7 +44,7 @@ const setupChatboxEvents = (socket) => {
emojiAutocomplete.textContent = "";
autocompleting = true;
let text = messageInput.value.slice(0, messageInput.selectionStart);
const match = text.match(/(:[^\s:]+)?:([^\s:]*)$/);
const match = text.match(/(:[^\s:]+)?:([^\s:]{2,})$/);
if (!match || match[1]) return (autocompleting = false); // We don't need to autocomplete.
const prefix = text.slice(0, match.index);
const search = text.slice(match.index + 1);
@ -133,7 +133,7 @@ const setupChatboxEvents = (socket) => {
selected.classList.add("selected");
selected.scrollIntoView({ scrollMode: "if-needed", block: "nearest" });
}
if (event.key == "Tab") {
if (event.key == "Tab" || event.key == "Enter") {
let selected = document.querySelector(".emoji-option.selected");
if (!selected) return;
event.preventDefault();

18
frontend/lib/emojis.mjs

@ -32,22 +32,22 @@ export async function emojify(text) {
const emojis = {};
export const emojisLoaded = Promise.all([
fetch("/emojis")
fetch("/emojis/unicode.json")
.then((e) => e.json())
.then((a) => {
for (let e of a) {
const name = e.slice(0, -4),
lower = name.toLowerCase();
emojis[lower[0]] = emojis[lower[0]] || [];
emojis[lower[0]].push([name, ":" + name + ":", e.slice(-4), lower]);
emojis[e[0][0]] = emojis[e[0][0]] || [];
emojis[e[0][0]].push([e[0], e[1], null, e[0]]);
}
}),
fetch("/emojis/unicode.json")
fetch("/emojos")
.then((e) => e.json())
.then((a) => {
for (let e of a) {
emojis[e[0][0]] = emojis[e[0][0]] || [];
emojis[e[0][0]].push([e[0], e[1], null, e[0]]);
const name = e.slice(0, -4),
lower = name.toLowerCase();
emojis[lower[0]] = emojis[lower[0]] || [];
emojis[lower[0]].push([name, ":" + name + ":", e.slice(-4), lower]);
}
}),
]);
@ -68,5 +68,5 @@ export async function findEmojis(search) {
}
}
}
return [...groups[0], ...groups[1]];
return [...groups[1], ...groups[0]];
}

2
src/main.rs

@ -62,7 +62,7 @@ async fn main() {
warb::reply::json(&json!({ "id": session_uuid.to_string(), "session": session_view }))
});
let get_emoji_route = warb::path!("emojis").and_then(get_emoji_list);
let get_emoji_route = warb::path!("emojos").and_then(get_emoji_list);
enum RequestedSession {
Session(Uuid, WatchSession),

Loading…
Cancel
Save