mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-07-13 16:02:55 +01:00
fix: add loading and refactor permissions
This commit is contained in:
@@ -42,22 +42,18 @@ import MediaRequest from "@/utils/jellyseerr/server/entity/MediaRequest";
|
|||||||
import DetailFacts from "@/components/jellyseerr/DetailFacts";
|
import DetailFacts from "@/components/jellyseerr/DetailFacts";
|
||||||
import { ItemActions } from "@/components/series/SeriesActions";
|
import { ItemActions } from "@/components/series/SeriesActions";
|
||||||
import Cast from "@/components/jellyseerr/Cast";
|
import Cast from "@/components/jellyseerr/Cast";
|
||||||
|
import { useJellyseerrCanRequest } from "@/utils/_jellyseerr/useJellyseerrCanRequest";
|
||||||
|
|
||||||
const Page: React.FC = () => {
|
const Page: React.FC = () => {
|
||||||
const insets = useSafeAreaInsets();
|
const insets = useSafeAreaInsets();
|
||||||
const params = useLocalSearchParams();
|
const params = useLocalSearchParams();
|
||||||
const {
|
const { mediaTitle, releaseYear, posterSrc, ...result } =
|
||||||
mediaTitle,
|
params as unknown as {
|
||||||
releaseYear,
|
mediaTitle: string;
|
||||||
canRequest: canRequestString,
|
releaseYear: number;
|
||||||
posterSrc,
|
canRequest: string;
|
||||||
...result
|
posterSrc: string;
|
||||||
} = params as unknown as {
|
} & Partial<MovieResult | TvResult>;
|
||||||
mediaTitle: string;
|
|
||||||
releaseYear: number;
|
|
||||||
canRequest: string;
|
|
||||||
posterSrc: string;
|
|
||||||
} & Partial<MovieResult | TvResult>;
|
|
||||||
|
|
||||||
const navigation = useNavigation();
|
const navigation = useNavigation();
|
||||||
const { jellyseerrApi, requestMedia } = useJellyseerr();
|
const { jellyseerrApi, requestMedia } = useJellyseerr();
|
||||||
@@ -87,19 +83,7 @@ const Page: React.FC = () => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const canRequest = useMemo(() => {
|
const canRequest = useJellyseerrCanRequest(details);
|
||||||
const pendingRequests = details?.mediaInfo?.requests?.some(
|
|
||||||
(r: MediaRequest) =>
|
|
||||||
r.status == MediaRequestStatus.PENDING ||
|
|
||||||
r.status == MediaRequestStatus.APPROVED
|
|
||||||
);
|
|
||||||
|
|
||||||
return (
|
|
||||||
(details?.mediaInfo?.status === MediaStatus.UNKNOWN &&
|
|
||||||
!pendingRequests) ||
|
|
||||||
(!details?.mediaInfo?.status && canRequestString === "true")
|
|
||||||
);
|
|
||||||
}, [canRequestString, details]);
|
|
||||||
|
|
||||||
const renderBackdrop = useCallback(
|
const renderBackdrop = useCallback(
|
||||||
(props: BottomSheetBackdropProps) => (
|
(props: BottomSheetBackdropProps) => (
|
||||||
@@ -225,7 +209,9 @@ const Page: React.FC = () => {
|
|||||||
<View className="mb-4">
|
<View className="mb-4">
|
||||||
<GenreTags genres={details?.genres?.map((g) => g.name) || []} />
|
<GenreTags genres={details?.genres?.map((g) => g.name) || []} />
|
||||||
</View>
|
</View>
|
||||||
{canRequest ? (
|
{isLoading || isFetching ? (
|
||||||
|
<Button loading={true} disabled={true} color="purple"></Button>
|
||||||
|
) : canRequest ? (
|
||||||
<Button color="purple" onPress={request}>
|
<Button color="purple" onPress={request}>
|
||||||
Request
|
Request
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
Reference in New Issue
Block a user