add option to also hide fav activity from public

This commit is contained in:
2026-08-06 23:00:12 +02:00
parent 2cd8bd91ff
commit 1262b15a5b
16 changed files with 118 additions and 18 deletions

View File

@@ -8768,23 +8768,39 @@ class NotificationSystem {
// Build DOM nodes imperatively (avoids Sanitizer stripping inline border-color)
const fragment = document.createDocumentFragment();
data.favs.forEach(fav => {
const avatarUrl = fav.avatar_file
? `/a/${fav.avatar_file}`
: (fav.avatar ? `/t/${fav.avatar}.webp` : '/a/default.png');
if (fav.hide_fav_badge) {
const a = document.createElement('a');
a.className = 'ghost-fav';
a.setAttribute('tooltip', 'Ghost Fav');
a.setAttribute('flow', 'up');
a.style.cursor = 'default';
const a = document.createElement('a');
a.href = `/user/${fav.user.toLowerCase()}`;
a.setAttribute('tooltip', fav.display_name || fav.user);
a.setAttribute('flow', 'up');
const img = document.createElement('img');
img.src = '/s/img/ghost_fav.svg';
img.style.height = '32px';
img.style.width = '32px';
const img = document.createElement('img');
img.src = avatarUrl;
img.style.height = '32px';
img.style.width = '32px';
if (fav.username_color) img.style.borderColor = fav.username_color;
a.appendChild(img);
fragment.appendChild(a);
} else {
const avatarUrl = fav.avatar_file
? `/a/${fav.avatar_file}`
: (fav.avatar ? `/t/${fav.avatar}.webp` : '/a/default.png');
a.appendChild(img);
fragment.appendChild(a);
const a = document.createElement('a');
a.href = `/user/${fav.user.toLowerCase()}`;
a.setAttribute('tooltip', fav.display_name || fav.user);
a.setAttribute('flow', 'up');
const img = document.createElement('img');
img.src = avatarUrl;
img.style.height = '32px';
img.style.width = '32px';
if (fav.username_color) img.style.borderColor = fav.username_color;
a.appendChild(img);
fragment.appendChild(a);
}
});
favsContainer.innerHTML = '';

View File

@@ -1150,6 +1150,37 @@
});
}
const hideFavBadgeToggle = document.getElementById('hide_fav_badge_toggle');
if (hideFavBadgeToggle) {
hideFavBadgeToggle.addEventListener('change', async function() {
const hide_fav_badge = hideFavBadgeToggle.checked;
try {
const res = await fetch('/api/v2/settings/hide_fav_badge', {
method: 'PUT',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-CSRF-Token': window.f0ckSession ? window.f0ckSession.csrf_token : ''
},
body: new URLSearchParams({ hide_fav_badge })
});
const data = await res.json();
if (data.success) {
showStatus('Hide favorite badge preference updated!', 'success');
if (window.f0ckSession) {
window.f0ckSession.hide_fav_badge = hide_fav_badge;
}
} else {
alert(data.msg || 'Error saving preference');
hideFavBadgeToggle.checked = !hide_fav_badge;
}
} catch (err) {
console.error('Update Hide Fav Badge error:', err);
alert('Connection error');
hideFavBadgeToggle.checked = !hide_fav_badge;
}
});
}
// New Dual Column Layout Toggle
const layoutToggle = document.getElementById('use_new_layout_toggle');
if (layoutToggle) {