fix(blacklist): remove a "undefined" appearing when the blacklist modal closes (#1142)

This commit is contained in:
Gauthier
2024-12-16 16:41:49 +01:00
committed by GitHub
parent 39dbb7f7e5
commit b01f98f7e2

View File

@@ -4,8 +4,8 @@ import defineMessages from '@app/utils/defineMessages';
import { Transition } from '@headlessui/react'; import { Transition } from '@headlessui/react';
import type { MovieDetails } from '@server/models/Movie'; import type { MovieDetails } from '@server/models/Movie';
import type { TvDetails } from '@server/models/Tv'; import type { TvDetails } from '@server/models/Tv';
import { useEffect, useState } from 'react';
import { useIntl } from 'react-intl'; import { useIntl } from 'react-intl';
import useSWR from 'swr';
interface BlacklistModalProps { interface BlacklistModalProps {
tmdbId: number; tmdbId: number;
@@ -21,7 +21,7 @@ const messages = defineMessages('component.BlacklistModal', {
}); });
const isMovie = ( const isMovie = (
movie: MovieDetails | TvDetails | undefined movie: MovieDetails | TvDetails | null
): movie is MovieDetails => { ): movie is MovieDetails => {
if (!movie) return false; if (!movie) return false;
return (movie as MovieDetails).title !== undefined; return (movie as MovieDetails).title !== undefined;
@@ -36,10 +36,25 @@ const BlacklistModal = ({
isUpdating, isUpdating,
}: BlacklistModalProps) => { }: BlacklistModalProps) => {
const intl = useIntl(); const intl = useIntl();
const [data, setData] = useState<TvDetails | MovieDetails | null>(null);
const [error, setError] = useState(null);
const { data, error } = useSWR<TvDetails | MovieDetails>( useEffect(() => {
show ? `/api/v1/${type}/${tmdbId}` : null (async () => {
); if (!show) return;
try {
setError(null);
const response = await fetch(`/api/v1/${type}/${tmdbId}`);
if (!response.ok) {
throw new Error();
}
const result = await response.json();
setData(result);
} catch (err) {
setError(err);
}
})();
}, [show, tmdbId, type]);
return ( return (
<Transition <Transition