import { getItem, getAlbumTracks } from '../embyApi.js'; import { createParty } from '../party.js'; import { navigate } from '../router.js'; import { escapeHtml, formatDuration } from '../tiles.js'; const TICKS_PER_SECOND = 10000000; // Emby/.NET convention: 1 tick = 100ns, same as everywhere else this app touches durations/positions /** Route `/album/:id` - the last level of the music hierarchy: one album's * tracks, each startable as its own listen party (mirrors series.js's * episode list, but flat - an album has no further sub-level the way a * series' seasons do). */ export async function renderAlbum(root, params) { const albumId = params.id; root.innerHTML = '
Chargement...
'; let album; let tracks; try { [album, tracks] = await Promise.all([getItem(albumId), getAlbumTracks(albumId)]); } catch (err) { root.innerHTML = 'Impossible de charger cet album.
'; return; } root.innerHTML = `${escapeHtml(album.artistName)}
` : ''} Voir sur EmbyAucun morceau dans cet album.
'; return; } listEl.innerHTML = tracks.map((t) => `