fix(dashboard): make thumbs-down dismiss a single story

This commit is contained in:
Fizzlepoof
2026-05-14 19:36:47 +00:00
parent 255afad3eb
commit c0b3a52074

View File

@@ -280,7 +280,7 @@ def card(i:dict[str,Any], compact:bool=False)->str:
feedback_html='' if not compact else (
f"<div class='feedback'>"
f"<button type='button' class='feedback-btn' data-feedback='up' aria-pressed='false' title='Prefer more {esc(topic)} stories'>👍</button>"
f"<button type='button' class='feedback-btn' data-feedback='down' aria-pressed='false' title='Hide this story and de-prioritize {esc(topic)}'>👎</button>"
f"<button type='button' class='feedback-btn' data-feedback='down' aria-pressed='false' title='Less like this — hide this story'>👎</button>"
f"</div>"
)
return f"""<article class='{cls} {esc(i.get('category',''))}' data-topic='{esc(topic)}' data-source='{esc(source)}' data-domain='{esc(domain)}'>
@@ -440,15 +440,12 @@ def feedback_bootstrap()->str:
cards.forEach(card=>{
const topic=card.dataset.topic||'other';
const hidden=(prefs.hidden||[]).includes(topic) || hiddenCards.includes(card.dataset.cardId||'');
const downMuted=(prefs.hidden||[]).includes(topic);
card.style.display=hidden?'none':'';
card.classList.remove('topic-liked');
card.querySelectorAll('[data-feedback]').forEach(btn=>{
const mode=btn.dataset.feedback;
const pressed=(mode==='down' && downMuted);
btn.setAttribute('aria-pressed', pressed ? 'true' : 'false');
btn.setAttribute('aria-pressed', 'false');
btn.classList.toggle('active-up', false);
btn.classList.toggle('active-down', mode==='down' && downMuted);
btn.classList.toggle('active-down', false);
});
});
const badge=document.querySelector('[data-hidden-topics-count]');
@@ -473,10 +470,8 @@ def feedback_bootstrap()->str:
lastAction={prefs:JSON.parse(JSON.stringify(prefs)), hiddenCards:[...hiddenCards]};
hiddenCards=hiddenCards.filter(x=>x!==id);
hiddenCards.push(id);
prefs.hidden=(prefs.hidden||[]).filter(x=>x!==topic);
prefs.hidden.push(topic);
saveHiddenCards(hiddenCards);
setToast(`Hid this story and muted <strong>${topic}</strong> for later. <button type="button" class="toast-action" data-undo-topic>Undo</button>`);
setToast(`Right — less <strong>${topic}</strong> like this, and this storys off the board. <button type="button" class="toast-action" data-undo-topic>Undo</button>`);
} else {
lastAction={prefs:JSON.parse(JSON.stringify(prefs)), hiddenCards:[...hiddenCards]};
hiddenCards=hiddenCards.filter(x=>x!==id);