mirror of
https://github.com/antebudimir/feishin.git
synced 2026-01-03 03:11:40 +00:00
[enhancement]: Make related tab on full screen player useful
Resolves #50. Adds a new set of components for fetching similar songs from the current playing song. For Jellyfin, use the `/items/{itemId}/similar` endpoint (may not work well for small libraries), and for Navidrome/Subsonic use `getSimilarSongs`. _In theory_, this component can be used to get similar songs anywhere.
This commit is contained in:
parent
74075fc374
commit
025124c379
14 changed files with 247 additions and 16 deletions
|
|
@ -0,0 +1,26 @@
|
|||
import { useQuery } from '@tanstack/react-query';
|
||||
import { SimilarSongsQuery } from '/@/renderer/api/types';
|
||||
import { QueryHookArgs } from '/@/renderer/lib/react-query';
|
||||
import { getServerById } from '/@/renderer/store';
|
||||
import { queryKeys } from '/@/renderer/api/query-keys';
|
||||
import { api } from '/@/renderer/api';
|
||||
|
||||
export const useSimilarSongs = (args: QueryHookArgs<Partial<SimilarSongsQuery>>) => {
|
||||
const { options, query } = args || {};
|
||||
const server = getServerById(query.song?.serverId);
|
||||
|
||||
return useQuery({
|
||||
enabled: !!server?.id && !!query.song,
|
||||
queryFn: ({ signal }) => {
|
||||
if (!server) throw new Error('Server not found');
|
||||
if (!query.song) return undefined;
|
||||
|
||||
return api.controller.getSimilarSongs({
|
||||
apiClientProps: { server, signal },
|
||||
query: { count: query.count ?? 50, song: query.song },
|
||||
});
|
||||
},
|
||||
queryKey: queryKeys.albumArtists.detail(server?.id || '', query),
|
||||
...options,
|
||||
});
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue