Skip to content

Commit 2749df0

Browse files
committed
Move sortBy/sortOrder state out of useFilteredTracks
1 parent a2ca151 commit 2749df0

3 files changed

Lines changed: 9 additions & 8 deletions

File tree

src/hooks/useFilteredTracks.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useEffect, useMemo } from 'react';
22

3-
import type { Track } from '../generated/typings';
3+
import type { SortBy, SortOrder, Track } from '../generated/typings';
44
import {
55
filterTracks,
66
getSortOrder,
@@ -15,17 +15,16 @@ import useLibraryStore, { useLibraryAPI } from '../stores/useLibraryStore';
1515
*/
1616
export default function useFilteredTracks(
1717
tracks: Track[],
18-
enableSort = true,
18+
sortBy?: SortBy,
19+
sortOrder?: SortOrder,
1920
): Track[] {
2021
const search = useLibraryStore((state) => stripAccents(state.search));
21-
const sortBy = useLibraryStore((state) => state.sortBy);
22-
const sortOrder = useLibraryStore((state) => state.sortOrder);
2322
const libraryAPI = useLibraryAPI();
2423

2524
const filteredTracks = useMemo(() => {
2625
let searchedTracks = filterTracks(tracks, search);
2726

28-
if (enableSort) {
27+
if (sortBy && sortOrder) {
2928
// sorting being a costly operation, do it after filtering, ignore it if not needed
3029
searchedTracks = sortTracks(
3130
searchedTracks,
@@ -35,7 +34,7 @@ export default function useFilteredTracks(
3534
}
3635

3736
return searchedTracks;
38-
}, [tracks, search, sortBy, sortOrder, enableSort]);
37+
}, [tracks, search, sortBy, sortOrder]);
3938

4039
// Update the footer status based on the displayed tracks
4140
useEffect(() => {

src/views/ViewLibrary.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ export default function ViewLibrary() {
1818
const trackPlayingID = usePlayingTrackID();
1919
const refreshing = useLibraryStore((state) => state.refreshing);
2020
const search = useLibraryStore((state) => state.search);
21+
const sortBy = useLibraryStore((state) => state.sortBy);
22+
const sortOrder = useLibraryStore((state) => state.sortOrder);
2123

2224
const { playlists, tracksDensity } = useLoaderData() as LibraryLoaderData;
2325

@@ -31,7 +33,7 @@ export default function ViewLibrary() {
3133
refetchOnReconnect: false,
3234
});
3335

34-
const filteredTracks = useFilteredTracks(tracks ?? []);
36+
const filteredTracks = useFilteredTracks(tracks ?? [], sortBy, sortOrder);
3537

3638
const getLibraryComponent = useMemo(() => {
3739
// Refreshing library

src/views/ViewPlaylistDetails.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export default function ViewPlaylistDetails() {
2828
const invalidate = useInvalidate();
2929

3030
const search = useLibraryStore((state) => state.search);
31-
const filteredTracks = useFilteredTracks(playlistTracks, false);
31+
const filteredTracks = useFilteredTracks(playlistTracks);
3232

3333
const onReorder = useCallback(
3434
async (

0 commit comments

Comments
 (0)