fix now playing source label

This commit is contained in:
Boof2015
2026-07-15 20:02:10 -04:00
parent 89c6bac546
commit 26fba836f4
25 changed files with 327 additions and 45 deletions
+11 -5
View File
@@ -604,17 +604,23 @@ export default function HomeScreen() {
});
};
const playTrackList = (list: DbTrack[], index = 0) => {
const playRecentlyPlayed = (list: DbTrack[], index = 0) => {
if (list.length === 0) return;
void playTracks(list.map(dbTrackToTrack), index);
void playTracks(list.map(dbTrackToTrack), {
startIndex: index,
source: { kind: 'recently-played', label: 'Recently Played' },
});
};
const playSpotlight = (shuffled = false) => {
if (spotlightTracks.length === 0) return;
const source = spotlightContent?.kind === 'album'
? { kind: 'album' as const, label: spotlightContent.album.album }
: { kind: 'artist' as const, label: spotlightContent?.artist.artist ?? 'Artist' };
if (shuffled) {
void shuffleTracks(spotlightTracks.map(dbTrackToTrack));
void shuffleTracks(spotlightTracks.map(dbTrackToTrack), source);
} else {
void playTracks(spotlightTracks.map(dbTrackToTrack), 0);
void playTracks(spotlightTracks.map(dbTrackToTrack), { source });
}
};
@@ -682,7 +688,7 @@ export default function HomeScreen() {
track={track}
active={track.path === currentPath}
swipeToQueue={false}
onPress={() => playTrackList(recentTracks, index)}
onPress={() => playRecentlyPlayed(recentTracks, index)}
onLongPress={() => setActionTrack(track)}
onOpenActions={() => setActionTrack(track)}
/>
+8 -2
View File
@@ -84,7 +84,10 @@ export default function AlbumScreen() {
}, [tracks]);
const playFrom = (index: number) => {
void playTracks(tracks.map(dbTrackToTrack), index);
void playTracks(tracks.map(dbTrackToTrack), {
startIndex: index,
source: { kind: 'album', label: album?.album ?? tracks[0]?.album ?? 'Album' },
});
};
// Eligibility can filter an album out of the store list (a single reached via
@@ -164,7 +167,10 @@ export default function AlbumScreen() {
disabled={tracks.length === 0}
onBack={handleBack}
onPlay={() => playFrom(0)}
onShuffle={() => void shuffleTracks(tracks.map(dbTrackToTrack))}
onShuffle={() => void shuffleTracks(tracks.map(dbTrackToTrack), {
kind: 'album',
label: album?.album ?? tracks[0]?.album ?? 'Album',
})}
scrollY={scrollY}
heroFaded={heroFaded}
collapsed={collapsed}
+8 -2
View File
@@ -88,13 +88,19 @@ export default function ArtistScreen() {
const playTrackListFrom = (tracks: readonly DbTrack[], index: number) => {
if (tracks.length === 0) return;
void playTracks(tracks.map(dbTrackToTrack), index);
void playTracks(tracks.map(dbTrackToTrack), {
startIndex: index,
source: { kind: 'artist', label: name },
});
};
const playArtist = () => playTrackListFrom(detail.playbackTracks, 0);
const shuffleArtist = () => {
if (detail.playbackTracks.length === 0) return;
void shuffleTracks(detail.playbackTracks.map(dbTrackToTrack));
void shuffleTracks(detail.playbackTracks.map(dbTrackToTrack), {
kind: 'artist',
label: name,
});
};
const openSection = (target: ArtistSectionTarget) => {
@@ -44,7 +44,10 @@ export default function ArtistAppearancesScreen() {
const playFrom = (index: number) => {
if (tracks.length === 0) return;
void playTracks(tracks.map(dbTrackToTrack), index);
void playTracks(tracks.map(dbTrackToTrack), {
startIndex: index,
source: { kind: 'artist', label: name },
});
};
return (
@@ -44,7 +44,10 @@ export default function ArtistSongsScreen() {
const playFrom = (index: number) => {
if (tracks.length === 0) return;
void playTracks(tracks.map(dbTrackToTrack), index);
void playTracks(tracks.map(dbTrackToTrack), {
startIndex: index,
source: { kind: 'artist', label: name },
});
};
return (
+4 -1
View File
@@ -133,7 +133,10 @@ export default function LibraryScreen() {
// Tap index is within sortedTracks so the tapped row is the track that plays.
const playAllFrom = (index: number) => {
void playTracks(sortedTracks.map(dbTrackToTrack), index);
void playTracks(sortedTracks.map(dbTrackToTrack), {
startIndex: index,
source: { kind: 'library', label: 'Library' },
});
};
const openSearch = () => openQuickSearch();
+8 -2
View File
@@ -164,13 +164,19 @@ export default function PlaylistScreen() {
const startPlayback = (index: number) => {
if (playable.length === 0) return;
void playTracks(playable.map(dbTrackToTrack), index);
void playTracks(playable.map(dbTrackToTrack), {
startIndex: index,
source: { kind: isFavorites ? 'favorites' : 'playlist', label: name },
});
if (playlistId != null && !Number.isNaN(playlistId)) void markPlayed(playlistId);
};
const startShuffle = () => {
if (playable.length === 0) return;
void shuffleTracks(playable.map(dbTrackToTrack));
void shuffleTracks(playable.map(dbTrackToTrack), {
kind: isFavorites ? 'favorites' : 'playlist',
label: name,
});
if (playlistId != null && !Number.isNaN(playlistId)) void markPlayed(playlistId);
};
+4 -1
View File
@@ -46,7 +46,10 @@ export default function RecentlyPlayedScreen() {
const playFrom = (index: number) => {
if (tracks.length === 0) return;
void playTracks(tracks.map(dbTrackToTrack), index);
void playTracks(tracks.map(dbTrackToTrack), {
startIndex: index,
source: { kind: 'recently-played', label: 'Recently Played' },
});
};
return (
+3 -1
View File
@@ -130,7 +130,9 @@ export default function SignalScanScreen() {
setActionState('playing');
setActionError(null);
try {
await playTracks([dbTrackToTrack(track)]);
await playTracks([dbTrackToTrack(track)], {
source: { kind: 'signal', label: 'Signal' },
});
router.back();
} catch {
setActionState('idle');