diff --git a/components/common/TouchableItemRouter.tsx b/components/common/TouchableItemRouter.tsx index b8af14b6..f57a3277 100644 --- a/components/common/TouchableItemRouter.tsx +++ b/components/common/TouchableItemRouter.tsx @@ -1,6 +1,8 @@ import { useMarkAsPlayed } from "@/hooks/useMarkAsPlayed"; -import { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models"; -import * as Haptics from "expo-haptics"; +import { + BaseItemDto, + BaseItemPerson, +} from "@jellyfin/sdk/lib/generated-client/models"; import { useRouter, useSegments } from "expo-router"; import { PropsWithChildren } from "react"; import { TouchableOpacity, TouchableOpacityProps } from "react-native"; @@ -10,8 +12,13 @@ interface Props extends TouchableOpacityProps { item: BaseItemDto; } -export const itemRouter = (item: BaseItemDto, from: string) => { - if (item.CollectionType === "livetv") { +export const itemRouter = ( + item: BaseItemDto | BaseItemPerson, + from: string +) => { + console.log(item.Type); + + if ("CollectionType" in item && item.CollectionType === "livetv") { return `/(auth)/(tabs)/${from}/livetv`; } @@ -31,7 +38,7 @@ export const itemRouter = (item: BaseItemDto, from: string) => { return `/(auth)/(tabs)/${from}/artists/${item.Id}`; } - if (item.Type === "Person") { + if (item.Type === "Person" || item.Type === "Actor") { return `/(auth)/(tabs)/${from}/actors/${item.Id}`; } diff --git a/components/series/CastAndCrew.tsx b/components/series/CastAndCrew.tsx index 41dfdbb1..2b312f0e 100644 --- a/components/series/CastAndCrew.tsx +++ b/components/series/CastAndCrew.tsx @@ -4,13 +4,14 @@ import { BaseItemDto, BaseItemPerson, } from "@jellyfin/sdk/lib/generated-client/models"; -import { router } from "expo-router"; +import { router, useSegments } from "expo-router"; import { useAtom } from "jotai"; import React, { useMemo } from "react"; import { TouchableOpacity, View, ViewProps } from "react-native"; import { HorizontalScroll } from "../common/HorrizontalScroll"; import { Text } from "../common/Text"; import Poster from "../posters/Poster"; +import { itemRouter } from "../common/TouchableItemRouter"; interface Props extends ViewProps { item?: BaseItemDto | null; @@ -19,6 +20,8 @@ interface Props extends ViewProps { export const CastAndCrew: React.FC = ({ item, loading, ...props }) => { const [api] = useAtom(apiAtom); + const segments = useSegments(); + const from = segments[2]; const destinctPeople = useMemo(() => { const people: BaseItemPerson[] = []; @@ -33,6 +36,8 @@ export const CastAndCrew: React.FC = ({ item, loading, ...props }) => { return people; }, [item?.People]); + if (!from) return null; + return ( Cast & Crew @@ -44,7 +49,9 @@ export const CastAndCrew: React.FC = ({ item, loading, ...props }) => { renderItem={(i) => ( { - router.push(`/actors/${i.Id}`); + const url = itemRouter(i, from); + // @ts-ignore + router.push(url); }} className="flex flex-col w-28" >