From 255a131f3b23609557c7a838393b3826f5b21ddc Mon Sep 17 00:00:00 2001 From: jeffvli Date: Fri, 9 Jun 2023 04:08:33 -0700 Subject: [PATCH] Require only single query for search --- src/main/features/core/lyrics/genius.ts | 9 ++++++++- src/main/features/core/lyrics/netease.ts | 9 ++++++++- src/renderer/api/types.ts | 4 ++-- .../features/lyrics/components/lyrics-search-form.tsx | 8 +++----- .../features/lyrics/queries/lyric-search-query.ts | 1 + 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/main/features/core/lyrics/genius.ts b/src/main/features/core/lyrics/genius.ts index 648547ed..cee6d086 100644 --- a/src/main/features/core/lyrics/genius.ts +++ b/src/main/features/core/lyrics/genius.ts @@ -64,11 +64,18 @@ export async function getSearchResults( params: LyricSearchQuery, ): Promise { let result: AxiosResponse; + + 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) { diff --git a/src/main/features/core/lyrics/netease.ts b/src/main/features/core/lyrics/netease.ts index aa39cc57..b5363c18 100644 --- a/src/main/features/core/lyrics/netease.ts +++ b/src/main/features/core/lyrics/netease.ts @@ -21,12 +21,19 @@ export async function getSearchResults( params: LyricSearchQuery, ): Promise { let result: AxiosResponse; + + 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', }, }); diff --git a/src/renderer/api/types.ts b/src/renderer/api/types.ts index 1a354c34..40e9451a 100644 --- a/src/renderer/api/types.ts +++ b/src/renderer/api/types.ts @@ -1062,8 +1062,8 @@ export const instanceOfCancellationError = (error: any) => { }; export type LyricSearchQuery = { - artist: string; - name: string; + artist?: string; + name?: string; }; export type LyricGetQuery = { diff --git a/src/renderer/features/lyrics/components/lyrics-search-form.tsx b/src/renderer/features/lyrics/components/lyrics-search-form.tsx index 00a81448..4803118f 100644 --- a/src/renderer/features/lyrics/components/lyrics-search-form.tsx +++ b/src/renderer/features/lyrics/components/lyrics-search-form.tsx @@ -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 ( - +
- {isLoading ? ( + {isInitialLoading ? ( ) : ( diff --git a/src/renderer/features/lyrics/queries/lyric-search-query.ts b/src/renderer/features/lyrics/queries/lyric-search-query.ts index 1a285953..19db9f02 100644 --- a/src/renderer/features/lyrics/queries/lyric-search-query.ts +++ b/src/renderer/features/lyrics/queries/lyric-search-query.ts @@ -15,6 +15,7 @@ export const useLyricSearch = (args: Omit, 'serv return useQuery>({ cacheTime: 1000 * 60 * 1, + enabled: !!query.artist || !!query.name, queryFn: () => lyricsIpc?.searchRemoteLyrics(query), queryKey: queryKeys.songs.lyricsSearch(query), staleTime: 1000 * 60 * 1,