From 3f7b7a55a8a77d84638dbf69320203dc019e12ef Mon Sep 17 00:00:00 2001 From: Kentai Radiquum Date: Wed, 31 Jul 2024 15:57:56 +0500 Subject: [PATCH] feat: add rating and screenshots to the release page --- .../ReleasePlayer/ReleasePlayer.tsx | 10 +- app/pages/Release.tsx | 163 ++++++++++++++---- 2 files changed, 138 insertions(+), 35 deletions(-) diff --git a/app/components/ReleasePlayer/ReleasePlayer.tsx b/app/components/ReleasePlayer/ReleasePlayer.tsx index 2669497..fc4a7f9 100644 --- a/app/components/ReleasePlayer/ReleasePlayer.tsx +++ b/app/components/ReleasePlayer/ReleasePlayer.tsx @@ -86,8 +86,12 @@ export const ReleasePlayer = (props: { id: number }) => { useEffect(() => { async function _fetchInfo() { - _fetch(`${ENDPOINTS.statistic.addHistory}/${props.id}/${selectedVoiceover.id}/${selectedSource.id}?token=${token}`); - _fetch(`${ENDPOINTS.statistic.markWatched}/${props.id}/${selectedVoiceover.id}/${selectedSource.id}?token=${token}`); + _fetch( + `${ENDPOINTS.statistic.addHistory}/${props.id}/${selectedVoiceover.id}/${selectedSource.id}?token=${token}` + ); + _fetch( + `${ENDPOINTS.statistic.markWatched}/${props.id}/${selectedVoiceover.id}/${selectedSource.id}?token=${token}` + ); } if (selectedEpisode && !isFirstLoad && token) { _fetchInfo(); @@ -103,7 +107,7 @@ export const ReleasePlayer = (props: { id: number }) => { return ( {!voiceoverInfo || !sourcesInfo || !episodeInfo ? ( -
+
) : ( diff --git a/app/pages/Release.tsx b/app/pages/Release.tsx index a7e95f4..f9e2567 100644 --- a/app/pages/Release.tsx +++ b/app/pages/Release.tsx @@ -5,9 +5,14 @@ import { Spinner } from "#/components/Spinner/Spinner"; const fetcher = (...args: any) => fetch([...args] as any).then((res) => res.json()); import { useUserStore } from "#/store/auth"; -import { Card, Dropdown, Button } from "flowbite-react"; +import { Card, Dropdown, Button, Carousel, Rating } from "flowbite-react"; import { useEffect, useState } from "react"; -import { unixToDate, getSeasonFromUnix, minutesToTime } from "#/api/utils"; +import { + unixToDate, + getSeasonFromUnix, + minutesToTime, + numberDeclension, +} from "#/api/utils"; import { ReleaseLink } from "#/components/ReleaseLink/ReleaseLink"; import { ReleasePlayer } from "#/components/ReleasePlayer/ReleasePlayer"; import { ENDPOINTS } from "#/api/config"; @@ -276,38 +281,120 @@ export const ReleasePage = (props: any) => { - {token && ( - -
- + {token && ( + +
+ + {lists.map((list) => ( + _addToList(list.list)} + > + {list.name} + + ))} + + +
+
+ )} + {data.release.status.name.toLowerCase() != "анонс" && ( + +
+ + + + + + +

+ {data.release.grade.toFixed(2)} из 5 +

+
+ {token && ( + <> + + {data.release.your_vote ? ( + <> +

+ ваша оценка: {data.release.your_vote} +

+ {/*

Изменить

*/} + + ) : ( + "" + //

Оценить

+ )} + + )} +
+

+ {data.release.vote_count}{" "} + {numberDeclension( + data.release.vote_count, + "голос", + "голоса", + "голосов" + )} +

+ - {lists.map((list) => ( - _addToList(list.list)} - > - {list.name} - - ))} -
- -
-
- )} + 4 + + + 3 + + + 2 + + + 1 + + + )} +
{data.release.related_releases.length > 0 && (
@@ -331,7 +418,19 @@ export const ReleasePage = (props: any) => {
)} + {data.release.screenshot_images.length > 0 && ( + + + {data.release.screenshot_images.map( + (image: string, index: number) => ( + + ) + )} + + + )} +
) : (