import { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models"; import { NativeStackNavigationProp } from "@react-navigation/native-stack"; import { useSafeAreaFrame } from "react-native-safe-area-context"; import { StackParamList } from "../types"; import TrackOptions from "./helpers/TrackOptions"; import { getTokens, ScrollView, Spacer, View, XStack, YStack } from "tamagui"; import BlurhashedImage from "../Global/components/blurhashed-image"; import { Text } from "../Global/helpers/text"; import FavoriteButton from "../Global/components/favorite-button"; import { useEffect } from "react"; import { trigger } from "react-native-haptic-feedback"; import TextTicker from "react-native-text-ticker"; import { TextTickerConfig } from "../Player/component.config"; export default function ItemDetail({ item, navigation, isNested } : { item: BaseItemDto, navigation: NativeStackNavigationProp, isNested?: boolean | undefined }) : React.JSX.Element { let options: React.JSX.Element | undefined = undefined; useEffect(() => { trigger("impactMedium"); }, [ item ]); const { width } = useSafeAreaFrame(); switch (item.Type) { case "Audio": { options = TrackOptions({ track: item, navigation, isNested }); break; } case "MusicAlbum" : { break; } case "MusicArtist" : { break; } case "Playlist" : { break; } default : { break; } } return ( {/* Item Name, Artist, Album, and Favorite Button */} { item.Name ?? "Untitled Track" } { if (item.ArtistItems) { if (isNested) navigation.getParent()!.goBack(); navigation.goBack(); navigation.navigate("Artist", { artist: item.ArtistItems[0] }); } }}> { item.Artists?.join(", ") ?? "Unknown Artist"} { item.Album ?? "" } { options ?? } ) }