feat(web): greifbarer Rollbalken, Zeitleiste in die Favoriten verlegt (3.1)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Opus 5 committed 2026-09-22 19:41:09 +02:00
1 parent 073593d963
commit 6652fb4d2b
6 files changed
+61 -9

No files matched your search

+5 -1
View File
@@ -3,7 +3,7 @@ import { esc } from '../utils.js';
import { api } from '../api.js';
import { openDlModal } from '../ui/ui.js';
// Zirkulär — sicher, weil nur in Ereignisbehandlern aufgerufen
import { navigate } from './navigation.js';
import { navigate, _navGoBack } from './navigation.js';
// ─── NEU VON DEINEN KÜNSTLERN ───────────────────────────────────────────────
// Zeitleiste der jüngsten Veröffentlichungen aller Künstler, denen man folgt. "Folgen" ist
@@ -15,6 +15,10 @@ let _laeuft = false;
export async function loadArtistNews(tage = _tage) {
_tage = tage;
// Die Seite haengt an den Favoriten (Knopf "✨ Neu") und nicht mehr an der Seitenleiste,
// deshalb braucht sie einen Weg zurueck wie jede andere Unterseite.
const zurueck = document.getElementById('artist-news-back-btn');
if (zurueck) zurueck.onclick = () => _navGoBack();
document.querySelectorAll('#artist-news-sort .sort-chip').forEach(c =>
c.classList.toggle('active', Number(c.dataset.days) === tage));
+5 -3
View File
@@ -92,7 +92,7 @@ export function navigate(page, data=null) {
document.querySelectorAll('.page').forEach(p => p.classList.remove('active'));
document.querySelectorAll('.nav-item,.bnav-item').forEach(n => n.classList.remove('active','active-blue'));
const cls = ['discover','new-releases','recommendations','artist-news'].includes(page) ? 'active-blue' : 'active';
const cls = ['discover','new-releases','recommendations'].includes(page) ? 'active-blue' : 'active';
document.querySelectorAll(`[data-page="${page}"]`).forEach(el => el.classList.add(cls));
const pageEl = document.getElementById(`page-${page}`);
if(pageEl) {
@@ -109,8 +109,10 @@ export function navigate(page, data=null) {
}
}
closeSidebar();
if(['discover','new-releases','recommendations','random','artist-news'].includes(page)) switchNavMode('discover');
else if(['home','artists','albums','starred','playlists'].includes(page)) switchNavMode('library');
// artist-news haengt jetzt an den Favoriten (Knopf "✨ Neu"), nicht mehr an Entdecken —
// deshalb bleibt die Seitenleiste in der Bibliothek stehen und Favoriten bleibt markiert.
if(['discover','new-releases','recommendations','random'].includes(page)) switchNavMode('discover');
else if(['home','artists','albums','starred','playlists','artist-news'].includes(page)) switchNavMode('library');
if(page==='home') loadHomeData(!S._navJumping); // explicit Home click refreshes; back/forward keeps state
if(page==='artists' && !document.getElementById('artists-grid').children.length) loadArtists();
+4
View File
@@ -265,6 +265,10 @@ function _passendeAnzahl(wrap) {
let _starredArtists = [];
function _renderStarredArtists(artists) {
_starredArtists = artists;
// "✨ Neu" fuehrt in die Zeitleiste und steht in der Kopfzeile der Favoriten — dieselbe
// Stelle wie in Android. Ohne gefolgte Kuenstler gaebe es dort nichts zu sehen.
const neuBtn = document.getElementById('starred-news-btn');
if (neuBtn) neuBtn.style.display = artists.length ? '' : 'none';
const wrap = document.getElementById('starred-artists-section');
if (!wrap) return;
wrap.innerHTML = '';