Sort unicode emoji before emojos, let enter fill an emoji

This commit is contained in:
videogame hacker 2022-04-29 23:22:23 +01:00
parent 0d555adf21
commit 8531c83574
3 changed files with 14 additions and 14 deletions

View file

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

View file

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

View file

@ -62,7 +62,7 @@ async fn main() {
warb::reply::json(&json!({ "id": session_uuid.to_string(), "session": session_view })) 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 { enum RequestedSession {
Session(Uuid, WatchSession), Session(Uuid, WatchSession),