Require only single query for search
This commit is contained in:
parent
e56350c1c2
commit
255a131f3b
5 changed files with 22 additions and 9 deletions
|
@ -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) {
|
||||
|
|
|
@ -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',
|
||||
},
|
||||
});
|
||||
|
|
|
@ -1062,8 +1062,8 @@ export const instanceOfCancellationError = (error: any) => {
|
|||
};
|
||||
|
||||
export type LyricSearchQuery = {
|
||||
artist: string;
|
||||
name: string;
|
||||
artist?: string;
|
||||
name?: string;
|
||||
};
|
||||
|
||||
export type LyricGetQuery = {
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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,
|
||||
|
|
Reference in a new issue