From ba50ebf6871bcc15290f08148d3adca52b0df7fb Mon Sep 17 00:00:00 2001 From: Violet Caulfield Date: Sat, 30 Nov 2024 09:44:04 -0600 Subject: [PATCH] add function for retrieving artist image ig? --- api/queries/functions/images.ts | 11 +++++++++++ api/queries/image.ts | 9 +++++++-- components/Global/card.tsx | 13 ++++--------- components/Home/helpers/recent-artists.tsx | 4 ++-- enums/query-keys.ts | 1 + 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/api/queries/functions/images.ts b/api/queries/functions/images.ts index 307ca9ff..b69d4ae1 100644 --- a/api/queries/functions/images.ts +++ b/api/queries/functions/images.ts @@ -3,6 +3,17 @@ import { ImageFormat, ImageType } from "@jellyfin/sdk/lib/generated-client/model import { getImageApi } from "@jellyfin/sdk/lib/utils/api" import _ from "lodash" +export function fetchArtistImage(api: Api, artistId: string, imageType?: ImageType) { + return getImageApi(api).getArtistImage({ + name: "", + imageIndex: 1, + imageType: imageType ? imageType : ImageType.Primary + }) + .then((response) => { + console.log(response.data) + return response.data; + }) +} export function fetchItemImage(api: Api, itemId: string, imageType?: ImageType, width?: number) { diff --git a/api/queries/image.ts b/api/queries/image.ts index a6901b42..43fa802e 100644 --- a/api/queries/image.ts +++ b/api/queries/image.ts @@ -1,10 +1,15 @@ import { useQuery } from "@tanstack/react-query"; import { QueryKeys } from "../../enums/query-keys"; import { Api } from "@jellyfin/sdk"; -import { fetchItemImage } from "./functions/images"; +import { fetchArtistImage, fetchItemImage } from "./functions/images"; import { ImageType } from "@jellyfin/sdk/lib/generated-client/models"; +export const useArtistImage = (api: Api, artistName: string, imageType?: ImageType) => useQuery({ + queryKey: [QueryKeys.ArtistImage, api, artistName, imageType], + queryFn: ({ queryKey }) => fetchArtistImage(queryKey[1] as Api, queryKey[2] as string, queryKey[3] as ImageType | undefined) +}) + export const useItemImage = (api: Api, itemId: string, imageType?: ImageType, width?: number) => useQuery({ queryKey: [QueryKeys.ItemImage, api, itemId, imageType, width], - queryFn: ({ queryKey }) => fetchItemImage(queryKey[1] as Api, queryKey[2] as string, imageType, width) + queryFn: ({ queryKey }) => fetchItemImage(queryKey[1] as Api, queryKey[2] as string, queryKey[3] as ImageType | undefined, queryKey[4] as number | undefined) }); \ No newline at end of file diff --git a/components/Global/card.tsx b/components/Global/card.tsx index 21e0e0b6..d68d4b97 100644 --- a/components/Global/card.tsx +++ b/components/Global/card.tsx @@ -4,16 +4,11 @@ import { H3, Image, Card as TamaguiCard, ZStack } from "tamagui"; import { LinearGradient } from "tamagui/linear-gradient"; import { useApiClientContext } from "../jellyfin-api-provider"; import { cardDimensions } from "./component.config"; -import { useItemImage } from "../../api/queries/image"; +import { useArtistImage, useItemImage } from "../../api/queries/image"; import { Colors } from "../../enums/colors"; -export enum CardType { - Artist = "ARTIST", - Album = "ALBUM" -} - interface CardProps extends TamaguiCardProps { - cardType?: CardType; + artistName?: string; children?: string; itemId: string; footer?: ReactNode; @@ -22,9 +17,9 @@ interface CardProps extends TamaguiCardProps { export function Card(props: CardProps) { const { apiClient } = useApiClientContext(); - const { data, isPending } = useItemImage(apiClient!, props.itemId) + const { data, isPending } = props.artistName ? useArtistImage(apiClient!, props.artistName) : useItemImage(apiClient!, props.itemId) - const dimensions = props.cardType === CardType.Artist ? cardDimensions.artist : cardDimensions.album; + const dimensions = props.artistName ? cardDimensions.artist : cardDimensions.album; return ( { return ( { navigation.navigate('Artist', diff --git a/enums/query-keys.ts b/enums/query-keys.ts index 96c9e33d..20fc2ba0 100644 --- a/enums/query-keys.ts +++ b/enums/query-keys.ts @@ -24,4 +24,5 @@ export enum QueryKeys { RecentlyPlayed = "RecentlyPlayed", RecentlyPlayedArtists = "RecentlyPlayedArtists", ArtistFeaturedAlbums = "ArtistFeaturedAlbums", + ArtistImage = "ArtistImage", } \ No newline at end of file