Require only single query for search

This commit is contained in:
jeffvli 2023-06-09 04:08:33 -07:00 committed by Jeff
parent e56350c1c2
commit 255a131f3b
5 changed files with 22 additions and 9 deletions

View file

@ -64,11 +64,18 @@ export async function getSearchResults(
params: LyricSearchQuery,
): Promise<InternetProviderLyricSearchResponse[] | null> {
let result: AxiosResponse<GeniusSearchResponse>;
const searchQuery = [params.artist, params.name].join(' ');
if (!searchQuery) {
return null;
}
try {
result = await axios.get(SEARCH_URL, {
params: {
per_page: '5',
q: `${params.artist} ${params.name}`,
q: searchQuery,
},
});
} catch (e) {

View file

@ -21,12 +21,19 @@ export async function getSearchResults(
params: LyricSearchQuery,
): Promise<InternetProviderLyricSearchResponse[] | null> {
let result: AxiosResponse<any, any>;
const searchQuery = [params.artist, params.name].join(' ');
if (!searchQuery) {
return null;
}
try {
result = await axios.get(SEARCH_URL, {
params: {
limit: 5,
offset: 0,
s: `${params.artist} ${params.name}`,
s: searchQuery,
type: '1',
},
});

View file

@ -1062,8 +1062,8 @@ export const instanceOfCancellationError = (error: any) => {
};
export type LyricSearchQuery = {
artist: string;
name: string;
artist?: string;
name?: string;
};
export type LyricGetQuery = {

View file

@ -74,8 +74,7 @@ export const LyricsSearchForm = ({ artist, name, onSearchOverride }: LyricSearch
const [debouncedArtist] = useDebouncedValue(form.values.artist, 500);
const [debouncedName] = useDebouncedValue(form.values.name, 500);
const { data, isLoading } = useLyricSearch({
options: { enabled: Boolean(form.values.artist && form.values.name) },
const { data, isInitialLoading } = useLyricSearch({
query: { artist: debouncedArtist, name: debouncedName },
});
@ -91,7 +90,7 @@ export const LyricsSearchForm = ({ artist, name, onSearchOverride }: LyricSearch
}, [data]);
return (
<Stack>
<Stack h={400}>
<form>
<Group grow>
<TextInput
@ -108,12 +107,11 @@ export const LyricsSearchForm = ({ artist, name, onSearchOverride }: LyricSearch
</Group>
</form>
<Divider />
{isLoading ? (
{isInitialLoading ? (
<Spinner container />
) : (
<ScrollArea
offsetScrollbars
h={350}
pr="1rem"
>
<Stack spacing="md">

View file

@ -15,6 +15,7 @@ export const useLyricSearch = (args: Omit<QueryHookArgs<LyricSearchQuery>, 'serv
return useQuery<Record<LyricSource, InternetProviderLyricSearchResponse[]>>({
cacheTime: 1000 * 60 * 1,
enabled: !!query.artist || !!query.name,
queryFn: () => lyricsIpc?.searchRemoteLyrics(query),
queryKey: queryKeys.songs.lyricsSearch(query),
staleTime: 1000 * 60 * 1,