diff --git a/public/s/css/f0ckm.css b/public/s/css/f0ckm.css index 9aae2d9..9285aba 100644 --- a/public/s/css/f0ckm.css +++ b/public/s/css/f0ckm.css @@ -6027,6 +6027,26 @@ body[type='login'] { background: rgba(245,197,24,0.1); } +/* Subtle dot indicator when fav tab is set as default */ +.ep-tab-default::after { + content: ''; + position: absolute; + bottom: 2px; + left: 50%; + transform: translateX(-50%); + width: 5px; + height: 5px; + border-radius: 50%; + background: var(--emoji-fav-color, #f5c518); + opacity: 0.7; +} +.ep-tab-default { + position: relative; +} +.ep-tab-default.active::after { + display: none; /* hide dot when the tab is actively selected — border is enough */ +} + .ep-tab img, .ep-tab video, .ep-tab i { diff --git a/public/s/js/comments.js b/public/s/js/comments.js index 6c08bbc..f4c1a85 100644 --- a/public/s/js/comments.js +++ b/public/s/js/comments.js @@ -4144,6 +4144,8 @@ class CommentSystem { }, delay); } }; + // Expose showToast so fav-tab right-click can use it + window._showEmojiToast = showToast; // Click/tap overlay background to dismiss overlay.addEventListener('click', () => window.stickerPreview.hide()); // Desktop safety net: if mouse released outside the sticker, hide preview @@ -4447,6 +4449,27 @@ class CommentSystem { favTab.addEventListener('mousedown', e => e.preventDefault()); favTab.addEventListener('click', () => showTab('__favs__')); addTabTouch(favTab, () => showTab('__favs__')); + // Right-click on fav tab → set/unset as default + favTab.addEventListener('contextmenu', (e) => { + e.preventDefault(); + e.stopPropagation(); + if (navigator.maxTouchPoints > 0) return; + const KEY = 'f0ck_emoji_default_tab'; + const isDefault = localStorage.getItem(KEY) === '__favs__'; + if (isDefault) { + localStorage.removeItem(KEY); + favTab.classList.remove('ep-tab-default'); + window._showEmojiToast?.('Favorites unset as default tab'); + } else { + localStorage.setItem(KEY, '__favs__'); + favTab.classList.add('ep-tab-default'); + window._showEmojiToast?.('Favorites set as default tab'); + } + }); + // Mark as default if already set + if (localStorage.getItem('f0ck_emoji_default_tab') === '__favs__') { + favTab.classList.add('ep-tab-default'); + } tabBar.appendChild(favTab); packs.forEach((pack, i) => { @@ -4476,8 +4499,9 @@ class CommentSystem { picker.appendChild(tabBar); picker.appendChild(gridArea); - // Show first pack by default - showTab(packs[0]?.id ?? null); + // Show default tab (favorites if set, otherwise first pack) + const defaultTab = localStorage.getItem('f0ck_emoji_default_tab'); + showTab(defaultTab === '__favs__' ? '__favs__' : (packs[0]?.id ?? null)); }; // Helper: close picker with the out-animation, then hide diff --git a/public/s/js/messages.js b/public/s/js/messages.js index 883ff40..b2b3ac1 100644 --- a/public/s/js/messages.js +++ b/public/s/js/messages.js @@ -1978,6 +1978,27 @@ if (window.__dmLoaded) { favsTab.innerHTML = ''; favsTab.addEventListener('mousedown', e => e.preventDefault()); favsTab.addEventListener('click', () => showDmTab('__favs__', packs)); + // Right-click on fav tab → set/unset as default + favsTab.addEventListener('contextmenu', (e) => { + e.preventDefault(); + e.stopPropagation(); + if (navigator.maxTouchPoints > 0) return; + const KEY = 'f0ck_emoji_default_tab'; + const isDefault = localStorage.getItem(KEY) === '__favs__'; + if (isDefault) { + localStorage.removeItem(KEY); + favsTab.classList.remove('ep-tab-default'); + window._showEmojiToast?.('Favorites unset as default tab'); + } else { + localStorage.setItem(KEY, '__favs__'); + favsTab.classList.add('ep-tab-default'); + window._showEmojiToast?.('Favorites set as default tab'); + } + }); + // Mark as default if already set + if (localStorage.getItem('f0ck_emoji_default_tab') === '__favs__') { + favsTab.classList.add('ep-tab-default'); + } dmTabBar.appendChild(favsTab); // ── Pack tabs ── @@ -2005,7 +2026,9 @@ if (window.__dmLoaded) { picker.appendChild(dmTabBar); picker.appendChild(dmGridArea); - showDmTab(packs[0]?.id ?? null, packs); + // Show default tab (favorites if set, otherwise first pack) + const defaultTab = localStorage.getItem('f0ck_emoji_default_tab'); + showDmTab(defaultTab === '__favs__' ? '__favs__' : (packs[0]?.id ?? null), packs); // Expose refresh hook so syncFromDB can update the open favs tab window._emojiPickerRefresh = () => {