From 00a2f48fbfb248b9ee67897587591136671711f5 Mon Sep 17 00:00:00 2001 From: Kibi Kelburton Date: Thu, 16 Jul 2026 00:12:07 +0200 Subject: [PATCH] tg sticker v5.6 --- public/s/css/f0ckm.css | 1 + public/s/js/comments.js | 22 ++++++++++++++++++++-- public/s/js/messages.js | 22 ++++++++++++++++++++-- 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/public/s/css/f0ckm.css b/public/s/css/f0ckm.css index 8de0ef8..cb5f8db 100644 --- a/public/s/css/f0ckm.css +++ b/public/s/css/f0ckm.css @@ -1275,6 +1275,7 @@ html[theme='95'] .item-main-content .metadata { padding: 2px 2px; border-radius: 3px; line-height: 1; + font-weight: bold; } .flash-error { diff --git a/public/s/js/comments.js b/public/s/js/comments.js index 6c7e09e..7802fb9 100644 --- a/public/s/js/comments.js +++ b/public/s/js/comments.js @@ -4081,9 +4081,27 @@ class CommentSystem { el._stickerIsVideo = isVideo; // Hold-to-preview let holdTimer = null; - const startHold = () => { holdTimer = setTimeout(() => window.stickerPreview?.show(url, isVideo), 400); }; + let holdFired = false; + const startHold = () => { + holdFired = false; + holdTimer = setTimeout(() => { + holdFired = true; + window.stickerPreview?.show(url, isVideo); + }, 400); + }; const cancelHold = () => { clearTimeout(holdTimer); }; - const endHold = () => { clearTimeout(holdTimer); window.stickerPreview?.hide(); }; + const endHold = () => { + clearTimeout(holdTimer); + if (holdFired) { + holdFired = false; + // Suppress the click that fires on mouseup after a preview gesture + el.addEventListener('click', (e) => { + e.stopImmediatePropagation(); + e.preventDefault(); + }, { once: true, capture: true }); + } + window.stickerPreview?.hide(); + }; el.addEventListener('mousedown', startHold); el.addEventListener('mouseup', endHold); el.addEventListener('mouseleave', cancelHold); diff --git a/public/s/js/messages.js b/public/s/js/messages.js index a01f5a2..103158f 100644 --- a/public/s/js/messages.js +++ b/public/s/js/messages.js @@ -1788,9 +1788,27 @@ if (window.__dmLoaded) { el._stickerIsVideo = isVideo; // Hold-to-preview (uses shared window.stickerPreview from comments.js) let holdTimer = null; - const startHold = () => { holdTimer = setTimeout(() => window.stickerPreview?.show(url, isVideo), 400); }; + let holdFired = false; + const startHold = () => { + holdFired = false; + holdTimer = setTimeout(() => { + holdFired = true; + window.stickerPreview?.show(url, isVideo); + }, 400); + }; const cancelHold = () => { clearTimeout(holdTimer); }; - const endHold = () => { clearTimeout(holdTimer); window.stickerPreview?.hide(); }; + const endHold = () => { + clearTimeout(holdTimer); + if (holdFired) { + holdFired = false; + // Suppress the click that fires on mouseup after a preview gesture + el.addEventListener('click', (e) => { + e.stopImmediatePropagation(); + e.preventDefault(); + }, { once: true, capture: true }); + } + window.stickerPreview?.hide(); + }; el.addEventListener('mousedown', startHold); el.addEventListener('mouseup', endHold); el.addEventListener('mouseleave', cancelHold);