mirror of
https://github.com/austinried/subtracks.git
synced 2025-12-27 00:59:28 +01:00
fixed song list play order mismatch
also sort by disc/track correctly
This commit is contained in:
parent
58cee33af7
commit
06e84fec8d
@ -59,6 +59,7 @@ export interface Song {
|
||||
artistId?: string
|
||||
title: string
|
||||
track?: number
|
||||
discNumber?: number
|
||||
duration?: number
|
||||
starred?: Date
|
||||
|
||||
|
||||
@ -37,9 +37,15 @@ const Songs = React.memo<{
|
||||
|
||||
if (type === 'album') {
|
||||
typeName = 'Album'
|
||||
_songs
|
||||
.sort((a, b) => a.title.localeCompare(b.title)) //
|
||||
.sort((a, b) => (a.track || 0) - (b.track || 0))
|
||||
if (_songs.some(s => s.track === undefined)) {
|
||||
_songs.sort((a, b) => a.title.localeCompare(b.title))
|
||||
} else {
|
||||
_songs.sort((a, b) => {
|
||||
const aVal = (a.track as number) + (a.discNumber !== undefined ? a.discNumber * 10000 : 0)
|
||||
const bVal = (b.track as number) + (b.discNumber !== undefined ? b.discNumber * 10000 : 0)
|
||||
return aVal - bVal
|
||||
})
|
||||
}
|
||||
} else {
|
||||
typeName = 'Playlist'
|
||||
}
|
||||
@ -62,8 +68,8 @@ const Songs = React.memo<{
|
||||
contextId={itemId}
|
||||
queueId={i}
|
||||
subtitle={s.artist}
|
||||
onPress={() => setQueue(songs, name, type, itemId, i)}
|
||||
showArt={type === 'playlist'}
|
||||
onPress={() => setQueue(_songs, name, type, itemId, i)}
|
||||
showArt={false}
|
||||
/>
|
||||
))}
|
||||
</View>
|
||||
@ -86,9 +92,11 @@ const SongListDetails = React.memo<{
|
||||
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
{songList.itemType === 'album' && (
|
||||
<HeaderBar headerStyle={{ backgroundColor: headerColor }} title={title} contextItem={songList} />
|
||||
)}
|
||||
<HeaderBar
|
||||
headerStyle={{ backgroundColor: headerColor }}
|
||||
title={title}
|
||||
contextItem={songList.itemType === 'album' ? songList : undefined}
|
||||
/>
|
||||
<ImageGradientScrollView
|
||||
imagePath={coverArtFile?.file?.path}
|
||||
style={styles.container}
|
||||
|
||||
@ -46,6 +46,7 @@ export const createMusicMapSlice = (set: SetState<Store>, get: GetState<Store>):
|
||||
artistId: child.artistId,
|
||||
title: child.title,
|
||||
track: child.track,
|
||||
discNumber: child.discNumber,
|
||||
duration: child.duration,
|
||||
starred: child.starred,
|
||||
coverArt: coverArt || (await get().getAlbumCoverArt(child.albumId)),
|
||||
|
||||
@ -11,6 +11,8 @@ export type TrackExt = Track & {
|
||||
coverArt?: string
|
||||
artistId?: string
|
||||
albumId?: string
|
||||
track?: number
|
||||
discNumber?: number
|
||||
}
|
||||
|
||||
export type Progress = {
|
||||
|
||||
@ -34,6 +34,8 @@ export const createTrackPlayerMapSlice = (set: SetState<Store>, get: GetState<St
|
||||
duration: song.duration,
|
||||
artistId: song.artistId,
|
||||
albumId: song.albumId,
|
||||
track: song.track,
|
||||
discNumber: song.discNumber,
|
||||
}
|
||||
},
|
||||
|
||||
@ -53,6 +55,8 @@ export const createTrackPlayerMapSlice = (set: SetState<Store>, get: GetState<St
|
||||
duration: track.duration,
|
||||
artistId: track.artistId,
|
||||
albumId: track.albumId,
|
||||
track: track.track,
|
||||
discNumber: track.discNumber,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user