import {Title} from '@app/titles/models/title'; import {Episode, EPISODE_MODEL} from '@app/titles/models/episode'; import {Dialog} from '@common/ui/overlays/dialog/dialog'; import {DialogBody} from '@common/ui/overlays/dialog/dialog-body'; import {Trans} from '@common/i18n/trans'; import {TitlePoster} from '@app/titles/title-poster/title-poster'; import {useState} from 'react'; import {Button} from '@common/ui/buttons/button'; import {useCreateReview} from '@app/reviews/requests/use-create-review'; import {useDialogContext} from '@common/ui/overlays/dialog/dialog-context'; import {useDeleteReviews} from '@app/reviews/requests/use-delete-reviews'; import {DialogHeader} from '@common/ui/overlays/dialog/dialog-header'; import {EpisodePoster} from '@app/episodes/episode-poster/episode-poster'; import {TitleLink} from '@app/titles/title-link'; import {CompactSeasonEpisode} from '@app/episodes/compact-season-episode'; import {StarSelector} from '@app/reviews/review-list/star-selector'; interface Props { title: Title; episode?: Episode; initialRating?: {id: number; score: number}; } export function RatingDialog({title, episode, initialRating}: Props) { const item = episode || title; const createReview = useCreateReview(); const deleteReview = useDeleteReviews(); const {close} = useDialogContext(); const [currentRating, setCurrentRating] = useState(initialRating?.score || 0); const handleCreateReview = () => { if (currentRating) { createReview.mutate( {reviewable: item, score: currentRating}, { onSuccess: () => close(), }, ); } }; const handleDeleteReview = () => { if (initialRating) { deleteReview.mutate( {reviewIds: [initialRating.id]}, { onSuccess: () => close(), }, ); } }; return ( ); } interface TitleDetailsProps { title: Title; } function TitleDetails({title}: TitleDetailsProps) { return (