mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-09 20:29:36 +02:00
update client side song ordering to include album order
This commit is contained in:
+79
-17
@@ -151,7 +151,7 @@ export const sortSongList = (songs: Song[], sortBy: SongListSort, sortOrder: Sor
|
|||||||
results = orderBy(
|
results = orderBy(
|
||||||
results,
|
results,
|
||||||
[(v) => v.album?.toLowerCase(), 'discNumber', 'trackNumber'],
|
[(v) => v.album?.toLowerCase(), 'discNumber', 'trackNumber'],
|
||||||
[order, 'asc', 'asc'],
|
[order, order, order],
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -159,7 +159,7 @@ export const sortSongList = (songs: Song[], sortBy: SongListSort, sortOrder: Sor
|
|||||||
results = orderBy(
|
results = orderBy(
|
||||||
results,
|
results,
|
||||||
[(v) => v.albumArtists[0]?.name.toLowerCase(), 'discNumber', 'trackNumber'],
|
[(v) => v.albumArtists[0]?.name.toLowerCase(), 'discNumber', 'trackNumber'],
|
||||||
[order, order, 'asc', 'asc'],
|
[order, order, order, order],
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -167,32 +167,54 @@ export const sortSongList = (songs: Song[], sortBy: SongListSort, sortOrder: Sor
|
|||||||
results = orderBy(
|
results = orderBy(
|
||||||
results,
|
results,
|
||||||
[(v) => v.artistName?.toLowerCase(), 'discNumber', 'trackNumber'],
|
[(v) => v.artistName?.toLowerCase(), 'discNumber', 'trackNumber'],
|
||||||
[order, order, 'asc', 'asc'],
|
[order, order, order, order],
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SongListSort.BPM:
|
case SongListSort.BPM:
|
||||||
results = orderBy(results, ['bpm'], [order]);
|
results = orderBy(
|
||||||
|
results,
|
||||||
|
['bpm', (v) => v.album?.toLowerCase(), 'discNumber', 'trackNumber'],
|
||||||
|
[order, order, order, order],
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SongListSort.CHANNELS:
|
case SongListSort.CHANNELS:
|
||||||
results = orderBy(results, ['channels'], [order]);
|
results = orderBy(
|
||||||
|
results,
|
||||||
|
['channels', (v) => v.album?.toLowerCase(), 'discNumber', 'trackNumber'],
|
||||||
|
[order, order, order, order],
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SongListSort.COMMENT:
|
case SongListSort.COMMENT:
|
||||||
results = orderBy(
|
results = orderBy(
|
||||||
results,
|
results,
|
||||||
['comment', 'discNumber', 'trackNumber'],
|
['comment', (v) => v.album?.toLowerCase(), 'discNumber', 'trackNumber'],
|
||||||
[order, order, 'asc', 'asc'],
|
[order, order, order, order],
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SongListSort.DURATION:
|
case SongListSort.DURATION:
|
||||||
results = orderBy(results, ['duration'], [order]);
|
results = orderBy(
|
||||||
|
results,
|
||||||
|
['duration', (v) => v.album?.toLowerCase(), 'discNumber', 'trackNumber'],
|
||||||
|
[order, order, order, order],
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SongListSort.FAVORITED:
|
case SongListSort.FAVORITED:
|
||||||
results = orderBy(results, ['userFavorite', (v) => v.name.toLowerCase()], [order]);
|
results = orderBy(
|
||||||
|
results,
|
||||||
|
[
|
||||||
|
'userFavorite',
|
||||||
|
(v) => v.name.toLowerCase(),
|
||||||
|
(v) => v.album?.toLowerCase(),
|
||||||
|
'discNumber',
|
||||||
|
'trackNumber',
|
||||||
|
],
|
||||||
|
[order, order, order, order, order],
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SongListSort.GENRE:
|
case SongListSort.GENRE:
|
||||||
@@ -204,7 +226,7 @@ export const sortSongList = (songs: Song[], sortBy: SongListSort, sortOrder: Sor
|
|||||||
'discNumber',
|
'discNumber',
|
||||||
'trackNumber',
|
'trackNumber',
|
||||||
],
|
],
|
||||||
[order, order, 'asc', 'asc'],
|
[order, order, order, order],
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -217,11 +239,19 @@ export const sortSongList = (songs: Song[], sortBy: SongListSort, sortOrder: Sor
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SongListSort.NAME:
|
case SongListSort.NAME:
|
||||||
results = orderBy(results, [(v) => v.name.toLowerCase()], [order]);
|
results = orderBy(
|
||||||
|
results,
|
||||||
|
[(v) => v.name.toLowerCase(), (v) => v.album?.toLowerCase()],
|
||||||
|
[order, order],
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SongListSort.PLAY_COUNT:
|
case SongListSort.PLAY_COUNT:
|
||||||
results = orderBy(results, ['playCount'], [order]);
|
results = orderBy(
|
||||||
|
results,
|
||||||
|
['playCount', (v) => v.album?.toLowerCase(), 'discNumber', 'trackNumber'],
|
||||||
|
[order, order, order, order],
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SongListSort.RANDOM:
|
case SongListSort.RANDOM:
|
||||||
@@ -229,19 +259,51 @@ export const sortSongList = (songs: Song[], sortBy: SongListSort, sortOrder: Sor
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SongListSort.RATING:
|
case SongListSort.RATING:
|
||||||
results = orderBy(results, ['userRating', (v) => v.name.toLowerCase()], [order]);
|
results = orderBy(
|
||||||
|
results,
|
||||||
|
[
|
||||||
|
'userRating',
|
||||||
|
(v) => v.name.toLowerCase(),
|
||||||
|
(v) => v.album?.toLowerCase(),
|
||||||
|
'discNumber',
|
||||||
|
'trackNumber',
|
||||||
|
],
|
||||||
|
[order, order, order, order, order],
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SongListSort.RECENTLY_ADDED:
|
case SongListSort.RECENTLY_ADDED:
|
||||||
results = orderBy(results, ['createdAt'], [order]);
|
results = orderBy(
|
||||||
|
results,
|
||||||
|
[
|
||||||
|
(v) => {
|
||||||
|
const x = v.createdAt;
|
||||||
|
if (x == null) return null;
|
||||||
|
const d = new Date(x);
|
||||||
|
return new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();
|
||||||
|
},
|
||||||
|
(v) => v.album?.toLowerCase(),
|
||||||
|
'discNumber',
|
||||||
|
'trackNumber',
|
||||||
|
],
|
||||||
|
[order, order, order, order],
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SongListSort.RECENTLY_PLAYED:
|
case SongListSort.RECENTLY_PLAYED:
|
||||||
results = orderBy(results, ['lastPlayedAt'], [order]);
|
results = orderBy(
|
||||||
|
results,
|
||||||
|
['lastPlayedAt', (v) => v.album?.toLowerCase(), 'discNumber', 'trackNumber'],
|
||||||
|
[order, order, order, order],
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SongListSort.RELEASE_DATE:
|
case SongListSort.RELEASE_DATE:
|
||||||
results = orderBy(results, ['releaseDate'], [order]);
|
results = orderBy(
|
||||||
|
results,
|
||||||
|
['releaseDate', (v) => v.album?.toLowerCase(), 'discNumber', 'trackNumber'],
|
||||||
|
[order, order, order, order],
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SongListSort.SORT_NAME:
|
case SongListSort.SORT_NAME:
|
||||||
@@ -252,7 +314,7 @@ export const sortSongList = (songs: Song[], sortBy: SongListSort, sortOrder: Sor
|
|||||||
results = orderBy(
|
results = orderBy(
|
||||||
results,
|
results,
|
||||||
['releaseYear', (v) => v.album?.toLowerCase(), 'discNumber', 'track'],
|
['releaseYear', (v) => v.album?.toLowerCase(), 'discNumber', 'track'],
|
||||||
[order, 'asc', 'asc', 'asc'],
|
[order, order, order, order],
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user