This commit is contained in:
2026-07-16 06:24:55 +02:00
parent efe3be141e
commit 41ac99cd5c
3 changed files with 31 additions and 2 deletions

View File

@@ -0,0 +1,10 @@
-- User emoji favorites — persisted per-user, cross-device
CREATE TABLE IF NOT EXISTS user_emoji_favorites (
user_id integer NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
emoji_name text NOT NULL,
emoji_url text NOT NULL,
created_at timestamptz NOT NULL DEFAULT now(),
PRIMARY KEY (user_id, emoji_name)
);
CREATE INDEX IF NOT EXISTS idx_user_emoji_favorites_user_id ON user_emoji_favorites (user_id);

View File

@@ -9268,12 +9268,12 @@ body.layout-legacy .comment-content img.emoji {
}
.comment-highlighted {
border-left: 3px solid var(--accent) !important;
box-shadow: inset 3px 0px 0px var(--accent) !important;
background: var(--bg) !important;
}
.anchor-target {
border-left: 3px solid var(--accent) !important;
box-shadow: inset 3px 0px 0px var(--accent) !important;
background: rgba(17, 17, 17, 0.55) !important;
padding-left: 5px;
}

View File

@@ -1022,6 +1022,25 @@ class CommentSystem {
document.body.appendChild(preview);
CommentSystem.playEmojiVideos(preview);
// If the emoji cache isn't ready yet but this preview contains :emoji: shortcodes,
// trigger a load and re-render just the preview's content once the cache arrives.
const previewContentEl = preview.querySelector('.comment-content');
if (previewContentEl && !CommentSystem.emojiCache && /:([a-z0-9_]+):/.test(previewContentEl.textContent)) {
const rerender = () => {
if (!document.body.contains(preview)) return;
const raw = previewContentEl.dataset.raw;
if (raw) {
previewContentEl.innerHTML = this.renderCommentContent(raw);
CommentSystem.playEmojiVideos(previewContentEl);
}
};
if (!CommentSystem.loadingEmojis) {
this.loadEmojis(true).then(rerender);
} else {
window.addEventListener('f0ck:emojis_ready', rerender, { once: true });
}
}
const previewRect = preview.getBoundingClientRect();
// Boundary checks