import {IllustratedMessage} from '@common/ui/images/illustrated-message'; import {Trans} from '@common/i18n/trans'; import {InfiniteScrollSentinel} from '@common/ui/infinite-scroll/infinite-scroll-sentinel'; import {PageStatus} from '@common/http/page-status'; import React, {Fragment} from 'react'; import {useUserProfile} from '@app/profile/requests/use-user-profile'; import {RateReviewIcon} from '@common/icons/material/RateReview'; import {useProfileReviews} from '@app/profile/requests/use-profile-reviews'; import {TitlePoster} from '@app/titles/title-poster/title-poster'; import {Title} from '@app/titles/models/title'; import {Review} from '@app/titles/models/review'; import {TitleRating} from '@app/reviews/title-rating'; import {TitleLink, TitleLinkWithEpisodeNumber} from '@app/titles/title-link'; import {Episode} from '@app/titles/models/episode'; export function ProfileReviewsPanel() { const userQuery = useUserProfile(); const user = userQuery.data!.user; const reviewsQuery = useProfileReviews(); if (reviewsQuery.noResults) { return ( } size="sm" title={} description={ } /> ); } if (reviewsQuery.data) { return ( {reviewsQuery.items.map(review => ( ))} ); } return ; } interface ReviewListItemProps { review: Review; } function ReviewListItem({review}: ReviewListItemProps) { const totalVotes = review.helpful_count + review.not_helpful_count; const reviewable = review.reviewable as Title | Episode; const title = reviewable.model_type === 'episode' ? reviewable.title! : reviewable; return (
{reviewable.model_type === 'episode' ? ( ) : ( )}
{review.title}

{review.body}

{totalVotes ? (
) : null}
); }