AniX/frontend/app/components/Release/ReleaseInfo.jsx

82 lines
2.5 KiB
JavaScript

"use client";
import { useEffect, useState } from "react";
import { getData } from "@/app/api/api-utils";
import { endpoints } from "@/app/api/config";
import { ReleaseCard } from "../ReleaseCard/ReleaseCard";
export const ReleaseInfo = (props) => {
const [releaseInfo, setReleaseInfo] = useState();
useEffect(() => {
async function _fetchInfo() {
const release = await getData(`${endpoints.release}/${props.id}`);
setReleaseInfo(release);
}
if (props.id) {
_fetchInfo();
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return (
<>
{releaseInfo ? (
<>
<article className="no-padding fill">
<div className="grid no-space">
<div className="s3">
<img className="responsive" src={releaseInfo.release.image} />
</div>
<div className="s9">
<div className="padding">
<h5>{releaseInfo.release.title_ru}</h5>
<h6 className="small no-margin">
{releaseInfo.release.title_original}
</h6>
<p className="small no-margin">
{releaseInfo.release.country} {" "}
{releaseInfo.release.status.name} {" "}
{releaseInfo.release.episodes_released}/
{releaseInfo.release.episodes_total
? releaseInfo.release.episodes_total
: "?"}
</p>
<p>{releaseInfo.release.description}</p>
</div>
</div>
</div>
</article>
<article className="grid">
<div className="row s12">
<i>hub</i>
<h5>Связанные релизы</h5>
</div>
<nav className="s12 scroll">
{releaseInfo.release.related_releases.map((item) => {
if (item.id == props.id) {
return "";
}
return (
<ReleaseCard
className={"s1"}
key={item.id}
id={item.id}
title={item.title_ru}
poster={item.image}
description={""}
height={400}
/>
);
})}
</nav>
</article>
</>
) : (
<div className="center-align">
<progress className="circle" />
</div>
)}
</>
);
};