Skip to content

Commit

Permalink
dont show preselected song in search results
Browse files Browse the repository at this point in the history
  • Loading branch information
Asvarox committed Jan 3, 2025
1 parent 8e6ac39 commit 74681b7
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 8 deletions.
20 changes: 16 additions & 4 deletions src/routes/SingASong/SongSelection/Hooks/useSongListFilter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import { useSongListFilter } from 'routes/SingASong/SongSelection/Hooks/useSongL
import { beforeEach } from 'vitest';

const list: SongPreview[] = [
generateSongPreview([], { artist: 'diacritics characters', title: 'konik na biegunach' }),
generateSongPreview([], { artist: 'kombi', title: 'pokolenie' }),
generateSongPreview([], { artist: 'queen', title: "don't stop me now" }),
generateSongPreview([], { artist: 'diacritics characters', title: 'konik na biegunach', language: ['Polish'] }),
generateSongPreview([], { artist: 'kombi', title: 'pokolenie', language: ['English'] }),
generateSongPreview([], { artist: 'queen', title: "don't stop me now", language: ['Spanish'] }),
];

describe('useSongListFilter', () => {
Expand Down Expand Up @@ -51,11 +51,23 @@ describe('useSongListFilter', () => {
const { result } = renderHook(() => useSongListFilter(list, [], false, list[0].id));

act(() => {
result.current.setFilters({ search: 'queen dont' });
result.current.setFilters({ language: 'Spanish' });
});

expect(result.current.filteredList).toContainEqual(list[2]);
expect(result.current.filteredList).not.toContainEqual(list[1]);
expect(result.current.filteredList).toContainEqual(list[0]);
});

it('should not include additional song if the search doesnt cover it', () => {
const { result } = renderHook(() => useSongListFilter(list, [], false, list[0].id));

act(() => {
result.current.setFilters({ search: 'queen dont' });
});

expect(result.current.filteredList).toContainEqual(list[2]);
expect(result.current.filteredList).not.toContainEqual(list[1]);
expect(result.current.filteredList).not.toContainEqual(list[0]);
});
});
5 changes: 3 additions & 2 deletions src/routes/SingASong/SongSelection/Hooks/useSongListFilter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -148,16 +148,17 @@ export const useSongListFilter = (
}, [selectedPlaylist]);

const deferredFilters = useDeferredValue(filters);
const isSearchApplied = !!deferredFilters.search;

const filteredList = useMemo(
() =>
applyFilters(list, {
...(playlist?.filters ?? {}),
...deferredFilters,
excludeLanguages: excludedLanguages ?? [],
additionalSongs: additionalSong ? [additionalSong] : [],
additionalSongs: !isSearchApplied && additionalSong ? [additionalSong] : [],
}),
[list, deferredFilters, excludedLanguages, playlist, additionalSong],
[list, deferredFilters, excludedLanguages, playlist, additionalSong, isSearchApplied],
);

return { filters, filteredList, setFilters, selectedPlaylist, setSelectedPlaylist: setPlaylist, playlists, playlist };
Expand Down
7 changes: 5 additions & 2 deletions src/routes/SingASong/SongSelection/SongSelection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,8 @@ const BaseRow = styled.div`
display: flex;
flex-wrap: nowrap;
gap: var(--song-list-gap);
padding: 0 var(--song-list-padding-right) var(--song-list-gap) var(--song-list-padding-left);
padding: 0 var(--song-list-padding-right) 0 var(--song-list-padding-left);
margin-bottom: var(--song-list-gap);
`;

const GroupRow = styled(BaseRow)``;
Expand All @@ -414,7 +415,9 @@ const ListRow = styled(BaseRow)`
position: relative; // this way the song preview position is computed properly
&[data-is-new='true'] {
background: rgba(0, 0, 0, 0.7);
background-color: rgba(0, 0, 0, 0.7);
background-position-y: var(--song-list-gap);
background-repeat: no-repeat;
}
`;

Expand Down

0 comments on commit 74681b7

Please sign in to comment.