fix: Route-Reihenfolge Favoriten, Dashboard-Badge, TV-Suche, User-gruppierte Admin-Liste

This commit is contained in:
2026-06-18 07:31:10 +02:00
parent 7f1ba07500
commit 3e93188c1d
3 changed files with 121 additions and 73 deletions

View File

@@ -1981,9 +1981,9 @@ function Dashboard({ toast, mobile, setActive, setDevToolsNav, unreadMsgs=0, unr
borderRadius:'50%', background:'#ffe66d', boxShadow:'0 0 5px #ffe66d' }}/>
)}
</button>
{/* Admin: unquittierte Favoriten */}
{user?.role==='admin' && unackedFavs > 0 && (
<button onClick={()=>{ setActive('media'); onAckFavs(); }} style={{
{/* Unquittierte Favoriten für alle User */}
{unackedFavs > 0 && (
<button onClick={()=>{ setActive('media'); onAckFavs?.(); }} style={{
background:'rgba(245,158,11,0.12)', border:'1px solid rgba(245,158,11,0.35)',
borderRadius:7, color:'#f59e0b', cursor:'pointer',
padding:'4px 10px', fontSize:9, fontFamily:'monospace', letterSpacing:1,
@@ -3655,6 +3655,12 @@ export default function App() {
return()=>clearInterval(t);
},[user]);
useEffect(()=>{
if(!user)return;
const poll=()=>api('/tools/media/favorites/unacked').then(d=>setUnackedFavs(d.count||0)).catch(()=>{});
poll(); const ti=setInterval(poll,60000); return()=>clearInterval(ti);
},[user]);
useEffect(()=>{
if(!user)return;
const poll=()=>api('/dashboard/changelog/unread').then(d=>setUnreadChangelog(d.unread||0)).catch(()=>{});
@@ -3711,7 +3717,7 @@ export default function App() {
unreadMsgs={unreadMsgs}/>
)}
<main ref={mainRef} style={mainStyle}>
{active==='dashboard' && <Dashboard toast={toast} mobile={mobile} setActive={setActive} setDevToolsNav={setDevToolsNav} unreadMsgs={unreadMsgs} unreadBoard={unreadBoard} unreadPromoted={unreadPromoted} onBoardRead={()=>{ setUnreadBoard(0); setUnreadPromoted(0); }} unreadChangelog={unreadChangelog} onChangelogRead={()=>setUnreadChangelog(0)} user={user}/>}
{active==='dashboard' && <Dashboard toast={toast} mobile={mobile} setActive={setActive} setDevToolsNav={setDevToolsNav} unreadMsgs={unreadMsgs} unreadBoard={unreadBoard} unreadPromoted={unreadPromoted} onBoardRead={()=>{ setUnreadBoard(0); setUnreadPromoted(0); }} unreadChangelog={unreadChangelog} onChangelogRead={()=>setUnreadChangelog(0)} unackedFavs={unackedFavs} onAckFavs={()=>api('/tools/media/favorites/acknowledge-all',{method:'POST',body:{}}).then(()=>setUnackedFavs(0)).catch(()=>{})} user={user}/>}
{active==='admin' && <AdminPanel toast={toast} mobile={mobile} user={user} nav={devToolsNav}/>}
{activeTool && <activeTool.component toast={toast} mobile={mobile} setActive={setActive} {...(activeTool.id==='devtools'?{nav:devToolsNav}:{})}/>}
</main>