From d2b38dcbe2e6ef9cfce1b9648c70d8c2eb568c90 Mon Sep 17 00:00:00 2001 From: Radiquum Date: Tue, 25 Mar 2025 20:39:25 +0500 Subject: [PATCH 01/12] refactor: set release poster to center on release page on mobile BREAKING: disable all image rendering --- .../ReleaseInfo/ReleaseInfo.Basics.tsx | 14 +++++------- app/components/ReleaseLink/ReleaseLink.tsx | 13 ++++++----- app/components/ReleasePoster/Poster.tsx | 22 +++++++++++++++++++ 3 files changed, 36 insertions(+), 13 deletions(-) create mode 100644 app/components/ReleasePoster/Poster.tsx diff --git a/app/components/ReleaseInfo/ReleaseInfo.Basics.tsx b/app/components/ReleaseInfo/ReleaseInfo.Basics.tsx index c23cf4f..1bf9448 100644 --- a/app/components/ReleaseInfo/ReleaseInfo.Basics.tsx +++ b/app/components/ReleaseInfo/ReleaseInfo.Basics.tsx @@ -2,6 +2,7 @@ import { Card, Button } from "flowbite-react"; import { useState } from "react"; import Image from "next/image"; import { ReleaseInfoStreaming } from "./ReleaseInfo.LicensedPlatforms"; +import { Poster } from "../ReleasePoster/Poster"; export const ReleaseInfoBasics = (props: { release_id: number; @@ -14,14 +15,11 @@ export const ReleaseInfoBasics = (props: { return ( -
- +
+
+ + +

diff --git a/app/components/ReleaseLink/ReleaseLink.tsx b/app/components/ReleaseLink/ReleaseLink.tsx index f81e277..3e8f0b9 100644 --- a/app/components/ReleaseLink/ReleaseLink.tsx +++ b/app/components/ReleaseLink/ReleaseLink.tsx @@ -2,18 +2,21 @@ import { ReleaseLink169 } from "./ReleaseLink.16_9FullImage"; import { ReleaseLink169Poster } from "./ReleaseLink.16_9Poster"; import { ReleaseLinkPoster } from "./ReleaseLink.Poster"; -export const ReleaseLink = (props: {type?: "16_9"|"poster"}) => { +export const ReleaseLink = (props: { type?: "16_9" | "poster" }) => { const type = props.type || "16_9"; if (type == "16_9") { return ( <> -

-
+
TYPE=16/9
+ + {/*
*/} + {/*
*/} - ) + ); } if (type == "poster") { - return ; + return
TYPE=POSTER
; + // return ; } }; diff --git a/app/components/ReleasePoster/Poster.tsx b/app/components/ReleasePoster/Poster.tsx new file mode 100644 index 0000000..a7a4a56 --- /dev/null +++ b/app/components/ReleasePoster/Poster.tsx @@ -0,0 +1,22 @@ +import Image from "next/image"; + +export const Poster = (props: { + image: string; + alt?: string; + // title: { ru: string; original: string }; + // note: string | null; + // description: string; + type?: "image_only"; + className?: string; +}) => { + return ( + {props.alt + ); +}; From 6cade5a7d04e1566a12a7e2a0eefde56982d96c7 Mon Sep 17 00:00:00 2001 From: Radiquum Date: Tue, 25 Mar 2025 23:01:11 +0500 Subject: [PATCH 02/12] refactor: update style of Related Releases Card on Release page --- app/components/Chip/Chip.tsx | 14 +- .../ReleaseInfo/ReleaseInfo.Related.tsx | 8 +- ....tsx => ReleaseLink.16_9FullImage_old.tsx} | 0 ...ter.tsx => ReleaseLink.16_9Poster_old.tsx} | 2 +- ...ed.tsx => ReleaseLink.16_9Related_old.tsx} | 0 ....Poster.tsx => ReleaseLink.Poster_old.tsx} | 0 app/components/ReleaseLink/ReleaseLink.tsx | 70 +++++++--- .../ReleaseLink/ReleaseLinkUpdate.tsx | 25 ++++ app/components/ReleasePoster/Chips.tsx | 79 +++++++++++ app/components/ReleasePoster/Poster.tsx | 2 +- .../ReleasePoster/PosterWithStuff.tsx | 129 ++++++++++++++++++ 11 files changed, 296 insertions(+), 33 deletions(-) rename app/components/ReleaseLink/{ReleaseLink.16_9FullImage.tsx => ReleaseLink.16_9FullImage_old.tsx} (100%) rename app/components/ReleaseLink/{ReleaseLink.16_9Poster.tsx => ReleaseLink.16_9Poster_old.tsx} (99%) rename app/components/ReleaseLink/{ReleaseLink.16_9Related.tsx => ReleaseLink.16_9Related_old.tsx} (100%) rename app/components/ReleaseLink/{ReleaseLink.Poster.tsx => ReleaseLink.Poster_old.tsx} (100%) create mode 100644 app/components/ReleaseLink/ReleaseLinkUpdate.tsx create mode 100644 app/components/ReleasePoster/Chips.tsx create mode 100644 app/components/ReleasePoster/PosterWithStuff.tsx diff --git a/app/components/Chip/Chip.tsx b/app/components/Chip/Chip.tsx index a7e8e7f..bd0225c 100644 --- a/app/components/Chip/Chip.tsx +++ b/app/components/Chip/Chip.tsx @@ -6,26 +6,22 @@ export const Chip = (props: { devider?: string; bg_color?: string; style?: React.CSSProperties; + className?: string; }) => { return ( -
+
{props.icon_name && ( )} -

+

{props.name} {props.name && props.devider ? props.devider : " "} {props.name_2} diff --git a/app/components/ReleaseInfo/ReleaseInfo.Related.tsx b/app/components/ReleaseInfo/ReleaseInfo.Related.tsx index dbd6c40..496d342 100644 --- a/app/components/ReleaseInfo/ReleaseInfo.Related.tsx +++ b/app/components/ReleaseInfo/ReleaseInfo.Related.tsx @@ -1,7 +1,7 @@ "use client"; import { Card, Carousel, CustomFlowbiteTheme } from "flowbite-react"; -import { ReleaseLink } from "#/components/ReleaseLink/ReleaseLink"; +import { ReleaseLink } from "#/components/ReleaseLink/ReleaseLinkUpdate"; import Link from "next/link"; const CarouselTheme: CustomFlowbiteTheme["carousel"] = { @@ -39,7 +39,11 @@ export const ReleaseInfoRelated = (props: { }) .map((release: any) => { return ( - + ); })} diff --git a/app/components/ReleaseLink/ReleaseLink.16_9FullImage.tsx b/app/components/ReleaseLink/ReleaseLink.16_9FullImage_old.tsx similarity index 100% rename from app/components/ReleaseLink/ReleaseLink.16_9FullImage.tsx rename to app/components/ReleaseLink/ReleaseLink.16_9FullImage_old.tsx diff --git a/app/components/ReleaseLink/ReleaseLink.16_9Poster.tsx b/app/components/ReleaseLink/ReleaseLink.16_9Poster_old.tsx similarity index 99% rename from app/components/ReleaseLink/ReleaseLink.16_9Poster.tsx rename to app/components/ReleaseLink/ReleaseLink.16_9Poster_old.tsx index 384c914..5a02d6b 100644 --- a/app/components/ReleaseLink/ReleaseLink.16_9Poster.tsx +++ b/app/components/ReleaseLink/ReleaseLink.16_9Poster_old.tsx @@ -21,7 +21,7 @@ export const ReleaseLink169Poster = (props: any) => { } return ( { - const type = props.type || "16_9"; - - if (type == "16_9") { - return ( - <> -

TYPE=16/9
- - {/*
*/} - {/*
*/} - - ); - } - if (type == "poster") { - return
TYPE=POSTER
; - // return ; - } +const profile_lists = { + // 0: "Не смотрю", + 1: { name: "Смотрю", bg_color: "bg-green-500" }, + 2: { name: "В планах", bg_color: "bg-purple-500" }, + 3: { name: "Просмотрено", bg_color: "bg-blue-500" }, + 4: { name: "Отложено", bg_color: "bg-yellow-500" }, + 5: { name: "Брошено", bg_color: "bg-red-500" }, +}; + +export const ReleaseLink = (props: { + // type?: "16_9" | "poster"; + image: string; + title_ru: string; + title_original: string; + genres?: string; + grade?: number; + id: number; + settings?: { + showGenres?: boolean; + }; + profile_list_status?: number; + status?: { + name: string; + }; + status_id?: number; +}) => { + // const type = props.type || "16_9"; + + // if (type == "16_9") { + // return ( + // <> + //
TYPE=16/9
+ + // {/*
*/} + // {/*
*/} + // + // ); + // } + // if (props.type == "poster") { + return ( + <>You NEED to fix this. Replace import to `ReleaseLinkUpdate` + ); + // return ; + // } }; diff --git a/app/components/ReleaseLink/ReleaseLinkUpdate.tsx b/app/components/ReleaseLink/ReleaseLinkUpdate.tsx new file mode 100644 index 0000000..4467f96 --- /dev/null +++ b/app/components/ReleaseLink/ReleaseLinkUpdate.tsx @@ -0,0 +1,25 @@ +import Link from "next/link"; +import { PosterWithStuff } from "../ReleasePoster/PosterWithStuff"; + +export const ReleaseLink = (props: { + image: string; + title_ru: string; + title_original: string; + genres?: string; + grade?: number; + id: number; + settings?: { + showGenres?: boolean; + }; + profile_list_status?: number; + status?: { + name: string; + }; + status_id?: number; +}) => { + return ( + + + + ); +}; diff --git a/app/components/ReleasePoster/Chips.tsx b/app/components/ReleasePoster/Chips.tsx new file mode 100644 index 0000000..0787772 --- /dev/null +++ b/app/components/ReleasePoster/Chips.tsx @@ -0,0 +1,79 @@ +import { Chip } from "../Chip/Chip"; + +interface ChipProps { + settings?: any; + grade?: any; + status?: any; + status_id?: any; + user_list?: any; + episodes_released?: any; + episodes_total?: any; + category?: any; + is_favorite?: any; +} + +export const ReleaseChips = ({ + settings, + grade, + status, + status_id, + user_list, + episodes_released, + episodes_total, + category, + is_favorite, +}: ChipProps) => { + return ( +
+ {!settings.chips.gradeHidden && grade ? + + : ""} + {!settings.chips.listHidden && user_list && ( + + )} + {!settings.chips.statusHidden && status ? + + : status_id != 0 && ( + + ) + } + {!settings.chips.episodesHidden && ( + + )} + {!settings.chips.categoryHidden && category && ( + + )} + {!settings.chips.favHidden && is_favorite && ( +
+ +
+ )} +
+ ); +}; diff --git a/app/components/ReleasePoster/Poster.tsx b/app/components/ReleasePoster/Poster.tsx index a7a4a56..315e411 100644 --- a/app/components/ReleasePoster/Poster.tsx +++ b/app/components/ReleasePoster/Poster.tsx @@ -6,7 +6,7 @@ export const Poster = (props: { // title: { ru: string; original: string }; // note: string | null; // description: string; - type?: "image_only"; +// type?: "image_only"; className?: string; }) => { return ( diff --git a/app/components/ReleasePoster/PosterWithStuff.tsx b/app/components/ReleasePoster/PosterWithStuff.tsx new file mode 100644 index 0000000..cf4c7a7 --- /dev/null +++ b/app/components/ReleasePoster/PosterWithStuff.tsx @@ -0,0 +1,129 @@ +import Link from "next/link"; +import { Poster } from "./Poster"; +import { Chip } from "../Chip/Chip"; +import { ReleaseChips } from "./Chips"; + +const profile_lists = { + // 0: "Не смотрю", + 1: { name: "Смотрю", bg_color: "bg-green-500" }, + 2: { name: "В планах", bg_color: "bg-purple-500" }, + 3: { name: "Просмотрено", bg_color: "bg-blue-500" }, + 4: { name: "Отложено", bg_color: "bg-yellow-500" }, + 5: { name: "Брошено", bg_color: "bg-red-500" }, +}; + +export const PosterWithStuff = (props: { + image: string; + title_ru: string; + title_original: string; + description?: string; + genres?: string; + grade?: number; + id: number; + settings?: { + showGenres?: boolean; + showDescription?: boolean; + chips?: { + enabled: boolean; + gradeHidden?: boolean; + statusHidden?: boolean; + categoryHidden?: boolean; + episodesHidden?: boolean; + listHidden?: boolean; + favHidden?: boolean; + lastWatchedHidden?: boolean; + }; + }; + profile_list_status?: number; + status?: { + name: string; + }; + category?: { + name: string; + }; + status_id?: number; + episodes_released?: string; + episodes_total?: string; + is_favorite?: boolean; +}) => { + const genres = []; + const settings = { + showGenres: true, + showDescription: true, + chips: { + enabled: true, + gradeHidden: false, + statusHidden: false, + categoryHidden: false, + episodesHidden: false, + listHidden: false, + favHidden: false, + lastWatchedHidden: false, + }, + ...props.settings, + }; + const grade = props.grade ? Number(props.grade.toFixed(1)) : null; + const profile_list_status = props.profile_list_status || null; + let user_list = null; + if (profile_list_status != null || profile_list_status != 0) { + user_list = profile_lists[profile_list_status]; + } + if (props.genres) { + const genres_array = props.genres.split(","); + genres_array.forEach((genre) => { + genres.push(genre); + }); + } + + return ( +
+
+ +
+
+
+ {settings.showGenres && + genres.length > 0 && + genres.map((genre: string, index: number) => { + return ( + + {index > 0 && ", "} + + {genre} + + + ); + })} + {props.title_ru && ( +

+ {props.title_ru} +

+ )} + {props.title_original && ( +

+ {props.title_original} +

+ )} +
+ {settings.showDescription && props.description && ( +

+ {props.description} +

+ )} +
+
+ +
+ ); +}; From 4496a7280bba4b62719b038ac8027aca81800d7f Mon Sep 17 00:00:00 2001 From: Radiquum Date: Tue, 25 Mar 2025 23:35:20 +0500 Subject: [PATCH 03/12] refactor: related releases page --- .../ReleasePoster/PosterWithStuff.tsx | 3 +- app/pages/Related.tsx | 122 ++++++++++++++++-- 2 files changed, 115 insertions(+), 10 deletions(-) diff --git a/app/components/ReleasePoster/PosterWithStuff.tsx b/app/components/ReleasePoster/PosterWithStuff.tsx index cf4c7a7..3af1bce 100644 --- a/app/components/ReleasePoster/PosterWithStuff.tsx +++ b/app/components/ReleasePoster/PosterWithStuff.tsx @@ -1,6 +1,5 @@ import Link from "next/link"; import { Poster } from "./Poster"; -import { Chip } from "../Chip/Chip"; import { ReleaseChips } from "./Chips"; const profile_lists = { @@ -71,7 +70,7 @@ export const PosterWithStuff = (props: { if (props.genres) { const genres_array = props.genres.split(","); genres_array.forEach((genre) => { - genres.push(genre); + genres.push(genre.trim()); }); } diff --git a/app/pages/Related.tsx b/app/pages/Related.tsx index beb5d05..98cbfb0 100644 --- a/app/pages/Related.tsx +++ b/app/pages/Related.tsx @@ -5,11 +5,25 @@ import { useState, useEffect } from "react"; import { useScrollPosition } from "#/hooks/useScrollPosition"; import { useUserStore } from "../store/auth"; import { ENDPOINTS } from "#/api/config"; -import { ReleaseLink169Related } from "#/components/ReleaseLink/ReleaseLink.16_9Related"; +// import { ReleaseLink169Related } from "#/components/ReleaseLink/ReleaseLink.16_9Related"; import { useSWRfetcher } from "#/api/utils"; +import { Card } from "flowbite-react"; +import { Poster } from "#/components/ReleasePoster/Poster"; +import { ReleaseChips } from "#/components/ReleasePoster/Chips"; +import { PosterWithStuff } from "#/components/ReleasePoster/PosterWithStuff"; +import Link from "next/link"; +const profile_lists = { + // 0: "Не смотрю", + 1: { name: "Смотрю", bg_color: "bg-green-500" }, + 2: { name: "В планах", bg_color: "bg-purple-500" }, + 3: { name: "Просмотрено", bg_color: "bg-blue-500" }, + 4: { name: "Отложено", bg_color: "bg-yellow-500" }, + 5: { name: "Брошено", bg_color: "bg-red-500" }, +}; +const YearSeason = ["_", "Зима", "Весна", "Лето", "Осень"]; -export function RelatedPage(props: {id: number|string, title: string}) { +export function RelatedPage(props: { id: number | string; title: string }) { const token = useUserStore((state) => state.token); const getKey = (pageIndex: number, previousPageData: any) => { @@ -52,22 +66,114 @@ export function RelatedPage(props: {id: number|string, title: string}) { Франшиза {props.title}
- {content && content.length > 0 ? ( + {content && content.length > 0 ?
{content.map((release, index) => { - return + const genres = []; + const settings = { + showGenres: true, + showDescription: true, + chips: { + enabled: true, + gradeHidden: false, + statusHidden: false, + categoryHidden: false, + episodesHidden: false, + listHidden: false, + favHidden: false, + lastWatchedHidden: false, + }, + }; + const grade = + release.grade ? Number(release.grade.toFixed(1)) : null; + const profile_list_status = release.profile_list_status || null; + let user_list = null; + if (profile_list_status != null || profile_list_status != 0) { + user_list = profile_lists[profile_list_status]; + } + if (release.genres) { + const genres_array = release.genres.split(","); + genres_array.forEach((genre) => { + genres.push(genre.trim()); + }); + } + // return + return ( + +
+
+

+ {release.season ? YearSeason[release.season] : ""} + {release.season ? +
+ : ""} + {release.year ? release.year : ""} +

+
+
+
+ +
+
+
+ +
+
+ +
+ {settings.showGenres && + genres.length > 0 && + genres.map((genre: string, index: number) => { + return ( + + {index > 0 && ", "} + + {genre} + + + ); + })} +
+ {release.title_ru && ( +

+ {release.title_ru} +

+ )} + {release.title_original && ( +

+ {release.title_original} +

+ )} + {settings.showDescription && release.description && ( +

+ {release.description} +

+ )} +
+
+
+ ); })}
- ) : isLoading ? ( + : isLoading ?
- ) : ( -
+ :

В франшизе пока ничего нет...

- )} + } {data && data[data.length - 1].current_page < data[data.length - 1].total_page_count && ( From 34bbcc489353c61041202577e06884e0c8abac50 Mon Sep 17 00:00:00 2001 From: Radiquum Date: Tue, 25 Mar 2025 23:45:14 +0500 Subject: [PATCH 04/12] fix: link --- app/pages/Related.tsx | 120 +++++++++++++++++++++--------------------- 1 file changed, 61 insertions(+), 59 deletions(-) diff --git a/app/pages/Related.tsx b/app/pages/Related.tsx index 98cbfb0..af8ebf9 100644 --- a/app/pages/Related.tsx +++ b/app/pages/Related.tsx @@ -99,69 +99,71 @@ export function RelatedPage(props: { id: number | string; title: string }) { } // return return ( - -
-
-

- {release.season ? YearSeason[release.season] : ""} - {release.season ? -
- : ""} - {release.year ? release.year : ""} -

-
-
-
- + + +
+
+

+ {release.season ? YearSeason[release.season] : ""} + {release.season ? +
+ : ""} + {release.year ? release.year : ""} +

-
-
- -
-
- -
- {settings.showGenres && - genres.length > 0 && - genres.map((genre: string, index: number) => { - return ( - - {index > 0 && ", "} - +
+ +
+
+
+ +
+
+ +
+ {settings.showGenres && + genres.length > 0 && + genres.map((genre: string, index: number) => { + return ( + - {genre} - - - ); - })} + {index > 0 && ", "} + + {genre} + + + ); + })} +
+ {release.title_ru && ( +

+ {release.title_ru} +

+ )} + {release.title_original && ( +

+ {release.title_original} +

+ )} + {settings.showDescription && release.description && ( +

+ {release.description} +

+ )}
- {release.title_ru && ( -

- {release.title_ru} -

- )} - {release.title_original && ( -

- {release.title_original} -

- )} - {settings.showDescription && release.description && ( -

- {release.description} -

- )}
-
- + + ); })}
From e1e176c24b247d71e9dc876569e6c072b05b89cd Mon Sep 17 00:00:00 2001 From: Radiquum Date: Wed, 26 Mar 2025 00:08:33 +0500 Subject: [PATCH 05/12] refactor: release courusel --- .../ReleaseCourusel/ReleaseCourusel.tsx | 7 +- .../ReleaseLink.16_9Related_old.tsx | 136 ------------------ app/components/ReleasePoster/Poster.tsx | 8 +- .../ReleasePoster/PosterWithStuff.tsx | 27 ++-- app/pages/Related.tsx | 14 +- 5 files changed, 24 insertions(+), 168 deletions(-) delete mode 100644 app/components/ReleaseLink/ReleaseLink.16_9Related_old.tsx diff --git a/app/components/ReleaseCourusel/ReleaseCourusel.tsx b/app/components/ReleaseCourusel/ReleaseCourusel.tsx index d7e333a..32a85da 100644 --- a/app/components/ReleaseCourusel/ReleaseCourusel.tsx +++ b/app/components/ReleaseCourusel/ReleaseCourusel.tsx @@ -1,5 +1,5 @@ "use client"; -import { ReleaseLink } from "../ReleaseLink/ReleaseLink"; +import { ReleaseLink } from "../ReleaseLink/ReleaseLinkUpdate"; import Link from "next/link"; import { Swiper, SwiperSlide } from 'swiper/react'; @@ -42,7 +42,7 @@ export const ReleaseCourusel = (props: { allowTouchMove={true} breakpoints={{ 1800: { - initialSlide: 1, + initialSlide: 2, centeredSlides: true } }} @@ -52,7 +52,8 @@ export const ReleaseCourusel = (props: { return ( diff --git a/app/components/ReleaseLink/ReleaseLink.16_9Related_old.tsx b/app/components/ReleaseLink/ReleaseLink.16_9Related_old.tsx deleted file mode 100644 index aa2959f..0000000 --- a/app/components/ReleaseLink/ReleaseLink.16_9Related_old.tsx +++ /dev/null @@ -1,136 +0,0 @@ -import Link from "next/link"; -import { sinceUnixDate } from "#/api/utils"; -import { Chip } from "#/components/Chip/Chip"; -import Image from "next/image"; - -const profile_lists = { - // 0: "Не смотрю", - 1: { name: "Смотрю", bg_color: "bg-green-500" }, - 2: { name: "В планах", bg_color: "bg-purple-500" }, - 3: { name: "Просмотрено", bg_color: "bg-blue-500" }, - 4: { name: "Отложено", bg_color: "bg-yellow-500" }, - 5: { name: "Брошено", bg_color: "bg-red-500" }, -}; -const YearSeason = ["_", "Зима", "Весна", "Лето", "Осень"]; - -export const ReleaseLink169Related = (props: any) => { - const grade = props.grade.toFixed(1); - const profile_list_status = props.profile_list_status; - let user_list = null; - if (profile_list_status != null || profile_list_status != 0) { - user_list = profile_lists[profile_list_status]; - } - return ( - -
-

- {props.season ? YearSeason[props.season] : ""} -
- {props.year ? props.year : ""} -

-
-
-
-
- {props.title -
-
-
- {props.genres && ( -

- {props.genres} -

- )} -

- {`${props.title_ru.slice(0, 47)}${ - props.title_ru.length > 47 ? "..." : "" - }`} -

-

- {`${props.description.slice(0, 97)}${ - props.description.length > 97 ? "..." : "" - }`} -

-

- {props.title_ru} -

-

- {props.description} -

-
-
- - {user_list && ( - - )} - {props.status ? ( - - ) : ( - props.status_id != 0 && ( - - ) - )} - - {props.category && } - {props.season || props.year ? ( - - ) : ( - "" - )} - {props.is_favorite && ( -
- -
- )} -
-
-
-
- - ); -}; diff --git a/app/components/ReleasePoster/Poster.tsx b/app/components/ReleasePoster/Poster.tsx index 315e411..4d500cb 100644 --- a/app/components/ReleasePoster/Poster.tsx +++ b/app/components/ReleasePoster/Poster.tsx @@ -3,10 +3,6 @@ import Image from "next/image"; export const Poster = (props: { image: string; alt?: string; - // title: { ru: string; original: string }; - // note: string | null; - // description: string; -// type?: "image_only"; className?: string; }) => { return ( @@ -17,6 +13,10 @@ export const Poster = (props: { alt={props.alt || ""} width={285} height={385} + style={{ + width: "100%", + height: "auto", + }} /> ); }; diff --git a/app/components/ReleasePoster/PosterWithStuff.tsx b/app/components/ReleasePoster/PosterWithStuff.tsx index 3af1bce..f46cf2e 100644 --- a/app/components/ReleasePoster/PosterWithStuff.tsx +++ b/app/components/ReleasePoster/PosterWithStuff.tsx @@ -1,4 +1,3 @@ -import Link from "next/link"; import { Poster } from "./Poster"; import { ReleaseChips } from "./Chips"; @@ -75,7 +74,7 @@ export const PosterWithStuff = (props: { } return ( -
+
0 && genres.map((genre: string, index: number) => { return ( - + {index > 0 && ", "} - - {genre} - + {genre} ); })} @@ -113,15 +110,15 @@ export const PosterWithStuff = (props: { )}
{settings.showDescription && props.description && ( -

- {props.description} -

- )} +

+ {props.description} +

+ )}
-
+
); diff --git a/app/pages/Related.tsx b/app/pages/Related.tsx index af8ebf9..1cb7343 100644 --- a/app/pages/Related.tsx +++ b/app/pages/Related.tsx @@ -5,7 +5,6 @@ import { useState, useEffect } from "react"; import { useScrollPosition } from "#/hooks/useScrollPosition"; import { useUserStore } from "../store/auth"; import { ENDPOINTS } from "#/api/config"; -// import { ReleaseLink169Related } from "#/components/ReleaseLink/ReleaseLink.16_9Related"; import { useSWRfetcher } from "#/api/utils"; import { Card } from "flowbite-react"; import { Poster } from "#/components/ReleasePoster/Poster"; @@ -97,7 +96,6 @@ export function RelatedPage(props: { id: number | string; title: string }) { genres.push(genre.trim()); }); } - // return return ( @@ -112,12 +110,12 @@ export function RelatedPage(props: { id: number | string; title: string }) {
-
+
- +
{index > 0 && ", "} - - {genre} - + {genre} ); })} From 1530fa3937a0a5c826f8d8dd71d4557666366869 Mon Sep 17 00:00:00 2001 From: Radiquum Date: Wed, 26 Mar 2025 00:51:30 +0500 Subject: [PATCH 06/12] refactor: release section --- .../ReleaseCourusel/ReleaseCourusel.tsx | 1 - .../ReleaseLink/ReleaseLinkUpdate.tsx | 18 +++++++ .../ReleaseLink.16_9FullImage_old.tsx | 0 .../ReleaseLink.16_9Poster_old.tsx | 0 .../ReleaseLink.Poster_old.tsx | 0 app/components/ReleaseLinkOld/ReleaseLink.tsx | 52 +++++++++++++++++++ .../ReleaseLinkOld/ReleaseLinkUpdate.tsx | 25 +++++++++ app/components/ReleasePoster/Chips.tsx | 46 ++++++++++++---- .../ReleasePoster/PosterWithStuff.tsx | 36 +++++-------- .../ReleaseSection/ReleaseSection.tsx | 23 ++++++-- app/pages/Related.tsx | 22 ++------ 11 files changed, 167 insertions(+), 56 deletions(-) rename app/components/{ReleaseLink => ReleaseLinkOld}/ReleaseLink.16_9FullImage_old.tsx (100%) rename app/components/{ReleaseLink => ReleaseLinkOld}/ReleaseLink.16_9Poster_old.tsx (100%) rename app/components/{ReleaseLink => ReleaseLinkOld}/ReleaseLink.Poster_old.tsx (100%) create mode 100644 app/components/ReleaseLinkOld/ReleaseLink.tsx create mode 100644 app/components/ReleaseLinkOld/ReleaseLinkUpdate.tsx diff --git a/app/components/ReleaseCourusel/ReleaseCourusel.tsx b/app/components/ReleaseCourusel/ReleaseCourusel.tsx index 32a85da..69bd9ee 100644 --- a/app/components/ReleaseCourusel/ReleaseCourusel.tsx +++ b/app/components/ReleaseCourusel/ReleaseCourusel.tsx @@ -53,7 +53,6 @@ export const ReleaseCourusel = (props: { diff --git a/app/components/ReleaseLink/ReleaseLinkUpdate.tsx b/app/components/ReleaseLink/ReleaseLinkUpdate.tsx index 4467f96..e448809 100644 --- a/app/components/ReleaseLink/ReleaseLinkUpdate.tsx +++ b/app/components/ReleaseLink/ReleaseLinkUpdate.tsx @@ -5,17 +5,35 @@ export const ReleaseLink = (props: { image: string; title_ru: string; title_original: string; + description?: string; genres?: string; grade?: number; id: number; settings?: { showGenres?: boolean; + showDescription?: boolean; + }; + chipsSettings?: { + enabled: boolean; + gradeHidden?: boolean; + statusHidden?: boolean; + categoryHidden?: boolean; + episodesHidden?: boolean; + listHidden?: boolean; + favHidden?: boolean; + lastWatchedHidden?: boolean; }; profile_list_status?: number; status?: { name: string; }; + category?: { + name: string; + }; status_id?: number; + episodes_released?: string; + episodes_total?: string; + is_favorite?: boolean; }) => { return ( diff --git a/app/components/ReleaseLink/ReleaseLink.16_9FullImage_old.tsx b/app/components/ReleaseLinkOld/ReleaseLink.16_9FullImage_old.tsx similarity index 100% rename from app/components/ReleaseLink/ReleaseLink.16_9FullImage_old.tsx rename to app/components/ReleaseLinkOld/ReleaseLink.16_9FullImage_old.tsx diff --git a/app/components/ReleaseLink/ReleaseLink.16_9Poster_old.tsx b/app/components/ReleaseLinkOld/ReleaseLink.16_9Poster_old.tsx similarity index 100% rename from app/components/ReleaseLink/ReleaseLink.16_9Poster_old.tsx rename to app/components/ReleaseLinkOld/ReleaseLink.16_9Poster_old.tsx diff --git a/app/components/ReleaseLink/ReleaseLink.Poster_old.tsx b/app/components/ReleaseLinkOld/ReleaseLink.Poster_old.tsx similarity index 100% rename from app/components/ReleaseLink/ReleaseLink.Poster_old.tsx rename to app/components/ReleaseLinkOld/ReleaseLink.Poster_old.tsx diff --git a/app/components/ReleaseLinkOld/ReleaseLink.tsx b/app/components/ReleaseLinkOld/ReleaseLink.tsx new file mode 100644 index 0000000..8bc9e80 --- /dev/null +++ b/app/components/ReleaseLinkOld/ReleaseLink.tsx @@ -0,0 +1,52 @@ +import Link from "next/link"; +import { Poster } from "../ReleasePoster/Poster"; +import { Chip } from "../Chip/Chip"; +// import { ReleaseLink169 } from "./ReleaseLink.16_9FullImage"; +// import { ReleaseLink169Poster } from "./ReleaseLink.16_9Poster"; +// import { ReleaseLinkPoster } from "./ReleaseLink.Poster"; + +const profile_lists = { + // 0: "Не смотрю", + 1: { name: "Смотрю", bg_color: "bg-green-500" }, + 2: { name: "В планах", bg_color: "bg-purple-500" }, + 3: { name: "Просмотрено", bg_color: "bg-blue-500" }, + 4: { name: "Отложено", bg_color: "bg-yellow-500" }, + 5: { name: "Брошено", bg_color: "bg-red-500" }, +}; + +export const ReleaseLink = (props: { + // type?: "16_9" | "poster"; + image: string; + title_ru: string; + title_original: string; + genres?: string; + grade?: number; + id: number; + settings?: { + showGenres?: boolean; + }; + profile_list_status?: number; + status?: { + name: string; + }; + status_id?: number; +}) => { + // const type = props.type || "16_9"; + + // if (type == "16_9") { + // return ( + // <> + //
TYPE=16/9
+ + // {/*
*/} + // {/*
*/} + // + // ); + // } + // if (props.type == "poster") { + return ( + <>You NEED to fix this. Replace import to `ReleaseLinkUpdate` + ); + // return ; + // } +}; diff --git a/app/components/ReleaseLinkOld/ReleaseLinkUpdate.tsx b/app/components/ReleaseLinkOld/ReleaseLinkUpdate.tsx new file mode 100644 index 0000000..4467f96 --- /dev/null +++ b/app/components/ReleaseLinkOld/ReleaseLinkUpdate.tsx @@ -0,0 +1,25 @@ +import Link from "next/link"; +import { PosterWithStuff } from "../ReleasePoster/PosterWithStuff"; + +export const ReleaseLink = (props: { + image: string; + title_ru: string; + title_original: string; + genres?: string; + grade?: number; + id: number; + settings?: { + showGenres?: boolean; + }; + profile_list_status?: number; + status?: { + name: string; + }; + status_id?: number; +}) => { + return ( + + + + ); +}; diff --git a/app/components/ReleasePoster/Chips.tsx b/app/components/ReleasePoster/Chips.tsx index 0787772..8e1784b 100644 --- a/app/components/ReleasePoster/Chips.tsx +++ b/app/components/ReleasePoster/Chips.tsx @@ -1,3 +1,4 @@ +import { sinceUnixDate } from "#/api/utils"; import { Chip } from "../Chip/Chip"; interface ChipProps { @@ -10,6 +11,8 @@ interface ChipProps { episodes_total?: any; category?: any; is_favorite?: any; + last_view_episode?: any; + last_view_timestamp?: any; } export const ReleaseChips = ({ @@ -22,12 +25,24 @@ export const ReleaseChips = ({ episodes_total, category, is_favorite, + last_view_episode, + last_view_timestamp, }: ChipProps) => { + const chipSettings = { + enabled: true, + gradeHidden: false, + statusHidden: false, + categoryHidden: false, + episodesHidden: false, + listHidden: false, + favHidden: false, + lastWatchedHidden: true, + ...settings, + }; + return ( -
- {!settings.chips.gradeHidden && grade ? +
+ {!chipSettings.gradeHidden && grade ? : ""} - {!settings.chips.listHidden && user_list && ( + {!chipSettings.listHidden && user_list && ( )} - {!settings.chips.statusHidden && status ? + {!chipSettings.statusHidden && status ? : status_id != 0 && ( ) } - {!settings.chips.episodesHidden && ( + {!chipSettings.episodesHidden && ( )} - {!settings.chips.categoryHidden && category && ( - - )} - {!settings.chips.favHidden && is_favorite && ( + {!chipSettings.categoryHidden && category && } + {!chipSettings.favHidden && is_favorite && (
)} + {!chipSettings.lastWatchedHidden && last_view_episode && ( + + )}
); }; diff --git a/app/components/ReleasePoster/PosterWithStuff.tsx b/app/components/ReleasePoster/PosterWithStuff.tsx index f46cf2e..5f067ac 100644 --- a/app/components/ReleasePoster/PosterWithStuff.tsx +++ b/app/components/ReleasePoster/PosterWithStuff.tsx @@ -21,16 +21,16 @@ export const PosterWithStuff = (props: { settings?: { showGenres?: boolean; showDescription?: boolean; - chips?: { - enabled: boolean; - gradeHidden?: boolean; - statusHidden?: boolean; - categoryHidden?: boolean; - episodesHidden?: boolean; - listHidden?: boolean; - favHidden?: boolean; - lastWatchedHidden?: boolean; - }; + }; + chipsSettings?: { + enabled: boolean; + gradeHidden?: boolean; + statusHidden?: boolean; + categoryHidden?: boolean; + episodesHidden?: boolean; + listHidden?: boolean; + favHidden?: boolean; + lastWatchedHidden?: boolean; }; profile_list_status?: number; status?: { @@ -48,18 +48,10 @@ export const PosterWithStuff = (props: { const settings = { showGenres: true, showDescription: true, - chips: { - enabled: true, - gradeHidden: false, - statusHidden: false, - categoryHidden: false, - episodesHidden: false, - listHidden: false, - favHidden: false, - lastWatchedHidden: false, - }, ...props.settings, }; + const chipsSettings = props.chipsSettings || {} + const grade = props.grade ? Number(props.grade.toFixed(1)) : null; const profile_list_status = props.profile_list_status || null; let user_list = null; @@ -74,13 +66,13 @@ export const PosterWithStuff = (props: { } return ( -
+
diff --git a/app/components/ReleaseSection/ReleaseSection.tsx b/app/components/ReleaseSection/ReleaseSection.tsx index 734e388..a5b85c9 100644 --- a/app/components/ReleaseSection/ReleaseSection.tsx +++ b/app/components/ReleaseSection/ReleaseSection.tsx @@ -1,4 +1,4 @@ -import { ReleaseLink } from "../ReleaseLink/ReleaseLink"; +import { ReleaseLink } from "../ReleaseLink/ReleaseLinkUpdate"; export const ReleaseSection = (props: { sectionTitle?: string; @@ -14,7 +14,24 @@ export const ReleaseSection = (props: {
)}
-
+
+ {props.content.map((release) => { + return ( +
+ +
+ ); + })} +
+ {/*
{props.content.map((release) => { return (
@@ -23,7 +40,7 @@ export const ReleaseSection = (props: { ); })} {props.content.length == 1 &&
} -
+
*/}
); diff --git a/app/pages/Related.tsx b/app/pages/Related.tsx index 1cb7343..9865c8a 100644 --- a/app/pages/Related.tsx +++ b/app/pages/Related.tsx @@ -69,20 +69,6 @@ export function RelatedPage(props: { id: number | string; title: string }) {
{content.map((release, index) => { const genres = []; - const settings = { - showGenres: true, - showDescription: true, - chips: { - enabled: true, - gradeHidden: false, - statusHidden: false, - categoryHidden: false, - episodesHidden: false, - listHidden: false, - favHidden: false, - lastWatchedHidden: false, - }, - }; const grade = release.grade ? Number(release.grade.toFixed(1)) : null; const profile_list_status = release.profile_list_status || null; @@ -111,7 +97,7 @@ export function RelatedPage(props: { id: number | string; title: string }) {
- +
@@ -122,11 +108,9 @@ export function RelatedPage(props: { id: number | string; title: string }) { {...release} user_list={user_list} grade={grade} - settings={settings} />
- {settings.showGenres && - genres.length > 0 && + {genres.length > 0 && genres.map((genre: string, index: number) => { return ( )} - {settings.showDescription && release.description && ( + {release.description && (

{release.description}

From 967b9cfbb05b6a6e38b2976f2c79d5ec8ca43893 Mon Sep 17 00:00:00 2001 From: Radiquum Date: Wed, 26 Mar 2025 01:08:59 +0500 Subject: [PATCH 07/12] refactor: profile page recently watched --- .../Profile/Profile.ReleaseHistory.tsx | 30 ++++++++++++------- .../ReleaseInfo/ReleaseInfo.Related.tsx | 18 ++++++++++- .../ReleaseSection/ReleaseSection.tsx | 10 ------- 3 files changed, 37 insertions(+), 21 deletions(-) diff --git a/app/components/Profile/Profile.ReleaseHistory.tsx b/app/components/Profile/Profile.ReleaseHistory.tsx index e17c2d9..b579c11 100644 --- a/app/components/Profile/Profile.ReleaseHistory.tsx +++ b/app/components/Profile/Profile.ReleaseHistory.tsx @@ -1,25 +1,29 @@ -import { Card, Carousel, RatingStar, Rating } from "flowbite-react"; +import { Card, Carousel } from "flowbite-react"; import type { FlowbiteCarouselIndicatorsTheme, FlowbiteCarouselControlTheme, + CustomFlowbiteTheme, } from "flowbite-react"; -import { ReleaseLink } from "../ReleaseLink/ReleaseLink"; +import { ReleaseLink } from "../ReleaseLink/ReleaseLinkUpdate"; const CarouselIndicatorsTheme: FlowbiteCarouselIndicatorsTheme = { active: { - off: "bg-gray-300/50 hover:bg-gray-400 dark:bg-gray-400/50 dark:hover:bg-gray-200", - on: "bg-gray-600 dark:bg-gray-200", + off: "bg-gray-400/50 hover:bg-gray-200", + on: "bg-gray-200", }, - base: "h-3 w-3 rounded-full", + base: "h-3 w-3 rounded-full max-w-[300px]", wrapper: "absolute bottom-5 left-1/2 flex -translate-x-1/2 space-x-3", }; const CarouselControlsTheme: FlowbiteCarouselControlTheme = { - base: "inline-flex h-8 w-8 items-center justify-center rounded-full bg-gray-600/30 group-hover:bg-gray-600/50 group-focus:outline-none group-focus:ring-4 group-focus:ring-gray-600 dark:bg-gray-400/30 dark:group-hover:bg-gray-400/60 dark:group-focus:ring-gray-400/70 sm:h-10 sm:w-10", - icon: "h-5 w-5 text-gray-600 dark:text-gray-400 sm:h-6 sm:w-6", + base: "inline-flex h-8 w-8 items-center justify-center rounded-full group-focus:outline-none group-focus:ring-4 bg-gray-400/30 group-hover:bg-gray-400/60 group-focus:ring-gray-400/70 sm:h-10 sm:w-10", + icon: "h-5 w-5 text-gray-400 sm:h-6 sm:w-6", }; -const CarouselTheme = { +const CarouselTheme: CustomFlowbiteTheme["carousel"] = { + root: { + base: "relative h-full w-full max-w-[375px]", + }, indicators: CarouselIndicatorsTheme, control: CarouselControlsTheme, }; @@ -28,10 +32,16 @@ export const ProfileReleaseHistory = (props: any) => { return (

Недавно просмотренные

-
+
{props.history.map((release) => { - return ; + return ( + + ); })}
diff --git a/app/components/ReleaseInfo/ReleaseInfo.Related.tsx b/app/components/ReleaseInfo/ReleaseInfo.Related.tsx index 496d342..80a5cac 100644 --- a/app/components/ReleaseInfo/ReleaseInfo.Related.tsx +++ b/app/components/ReleaseInfo/ReleaseInfo.Related.tsx @@ -1,13 +1,29 @@ "use client"; -import { Card, Carousel, CustomFlowbiteTheme } from "flowbite-react"; +import { Card, Carousel, CustomFlowbiteTheme, FlowbiteCarouselControlTheme, FlowbiteCarouselIndicatorsTheme } from "flowbite-react"; import { ReleaseLink } from "#/components/ReleaseLink/ReleaseLinkUpdate"; import Link from "next/link"; +const CarouselIndicatorsTheme: FlowbiteCarouselIndicatorsTheme = { + active: { + off: "bg-gray-400/50 hover:bg-gray-200", + on: "bg-gray-200", + }, + base: "h-3 w-3 rounded-full max-w-[300px]", + wrapper: "absolute bottom-5 left-1/2 flex -translate-x-1/2 space-x-3", +}; + +const CarouselControlsTheme: FlowbiteCarouselControlTheme = { + base: "inline-flex h-8 w-8 items-center justify-center rounded-full group-focus:outline-none group-focus:ring-4 bg-gray-400/30 group-hover:bg-gray-400/60 group-focus:ring-gray-400/70 sm:h-10 sm:w-10", + icon: "h-5 w-5 text-gray-400 sm:h-6 sm:w-6", +}; + const CarouselTheme: CustomFlowbiteTheme["carousel"] = { root: { base: "relative h-full w-full max-w-[300px]", }, + indicators: CarouselIndicatorsTheme, + control: CarouselControlsTheme, }; export const ReleaseInfoRelated = (props: { diff --git a/app/components/ReleaseSection/ReleaseSection.tsx b/app/components/ReleaseSection/ReleaseSection.tsx index a5b85c9..b826085 100644 --- a/app/components/ReleaseSection/ReleaseSection.tsx +++ b/app/components/ReleaseSection/ReleaseSection.tsx @@ -31,16 +31,6 @@ export const ReleaseSection = (props: { ); })}
- {/*
- {props.content.map((release) => { - return ( -
- -
- ); - })} - {props.content.length == 1 &&
} -
*/}
); From 5abb6e8f11b297625ce644ead0caa63b0d111a84 Mon Sep 17 00:00:00 2001 From: Radiquum Date: Wed, 26 Mar 2025 01:47:47 +0500 Subject: [PATCH 08/12] refactor: create collection page release poster --- .../ReleasePoster/PosterWithStuff.tsx | 2 +- app/pages/CreateCollection.tsx | 43 ++++++++++--------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/app/components/ReleasePoster/PosterWithStuff.tsx b/app/components/ReleasePoster/PosterWithStuff.tsx index 5f067ac..adffc49 100644 --- a/app/components/ReleasePoster/PosterWithStuff.tsx +++ b/app/components/ReleasePoster/PosterWithStuff.tsx @@ -66,7 +66,7 @@ export const PosterWithStuff = (props: { } return ( -
+
{
-
+
{addedReleases.map((release) => { return ( -
+
- +
); })} @@ -592,6 +589,9 @@ export const ReleasesEditModal = (props: { return; } + const newContent = content.filter((r) => r.id !== release.id); + + setContent(newContent); props.setReleases([...props.releases, release]); props.setReleasesIds([...props.releasesIds, release.id]); } @@ -611,11 +611,7 @@ export const ReleasesEditModal = (props: { >
{ - e.preventDefault(); - setContent([]); - setQuery(e.target[0].value.trim()); - }} + onSubmit={(e) => e.preventDefault()} >
-
+
{content.map((release) => { return ( ); })} - {content.length == 1 &&
}
{isLoading && (
From f6b82028773b87d681e3fc93095736011b3825bf Mon Sep 17 00:00:00 2001 From: Radiquum Date: Wed, 26 Mar 2025 01:50:10 +0500 Subject: [PATCH 09/12] remove old stuff --- app/components/ReleaseLink/ReleaseLink.tsx | 52 ------- .../ReleaseLink.16_9FullImage_old.tsx | 133 ------------------ .../ReleaseLink.16_9Poster_old.tsx | 124 ---------------- .../ReleaseLinkOld/ReleaseLink.Poster_old.tsx | 84 ----------- app/components/ReleaseLinkOld/ReleaseLink.tsx | 52 ------- .../ReleaseLinkOld/ReleaseLinkUpdate.tsx | 25 ---- 6 files changed, 470 deletions(-) delete mode 100644 app/components/ReleaseLink/ReleaseLink.tsx delete mode 100644 app/components/ReleaseLinkOld/ReleaseLink.16_9FullImage_old.tsx delete mode 100644 app/components/ReleaseLinkOld/ReleaseLink.16_9Poster_old.tsx delete mode 100644 app/components/ReleaseLinkOld/ReleaseLink.Poster_old.tsx delete mode 100644 app/components/ReleaseLinkOld/ReleaseLink.tsx delete mode 100644 app/components/ReleaseLinkOld/ReleaseLinkUpdate.tsx diff --git a/app/components/ReleaseLink/ReleaseLink.tsx b/app/components/ReleaseLink/ReleaseLink.tsx deleted file mode 100644 index 8bc9e80..0000000 --- a/app/components/ReleaseLink/ReleaseLink.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import Link from "next/link"; -import { Poster } from "../ReleasePoster/Poster"; -import { Chip } from "../Chip/Chip"; -// import { ReleaseLink169 } from "./ReleaseLink.16_9FullImage"; -// import { ReleaseLink169Poster } from "./ReleaseLink.16_9Poster"; -// import { ReleaseLinkPoster } from "./ReleaseLink.Poster"; - -const profile_lists = { - // 0: "Не смотрю", - 1: { name: "Смотрю", bg_color: "bg-green-500" }, - 2: { name: "В планах", bg_color: "bg-purple-500" }, - 3: { name: "Просмотрено", bg_color: "bg-blue-500" }, - 4: { name: "Отложено", bg_color: "bg-yellow-500" }, - 5: { name: "Брошено", bg_color: "bg-red-500" }, -}; - -export const ReleaseLink = (props: { - // type?: "16_9" | "poster"; - image: string; - title_ru: string; - title_original: string; - genres?: string; - grade?: number; - id: number; - settings?: { - showGenres?: boolean; - }; - profile_list_status?: number; - status?: { - name: string; - }; - status_id?: number; -}) => { - // const type = props.type || "16_9"; - - // if (type == "16_9") { - // return ( - // <> - //
TYPE=16/9
- - // {/*
*/} - // {/*
*/} - // - // ); - // } - // if (props.type == "poster") { - return ( - <>You NEED to fix this. Replace import to `ReleaseLinkUpdate` - ); - // return ; - // } -}; diff --git a/app/components/ReleaseLinkOld/ReleaseLink.16_9FullImage_old.tsx b/app/components/ReleaseLinkOld/ReleaseLink.16_9FullImage_old.tsx deleted file mode 100644 index b62e0ce..0000000 --- a/app/components/ReleaseLinkOld/ReleaseLink.16_9FullImage_old.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import Link from "next/link"; -import { sinceUnixDate } from "#/api/utils"; -import { Chip } from "#/components/Chip/Chip"; -import Image from "next/image"; - -const profile_lists = { - // 0: "Не смотрю", - 1: { name: "Смотрю", bg_color: "bg-green-500" }, - 2: { name: "В планах", bg_color: "bg-purple-500" }, - 3: { name: "Просмотрено", bg_color: "bg-blue-500" }, - 4: { name: "Отложено", bg_color: "bg-yellow-500" }, - 5: { name: "Брошено", bg_color: "bg-red-500" }, -}; - -export const ReleaseLink169 = (props: any) => { - const grade = props.grade ? props.grade.toFixed(1) : null; - const profile_list_status = props.profile_list_status; - let user_list = null; - if (profile_list_status != null || profile_list_status != 0) { - user_list = profile_lists[profile_list_status]; - } - return ( - -
-
- {props.title -
- {grade ? ( - - ) : ( - "" - )} - {user_list && ( - - )} - {props.status ? ( - - ) : ( - props.status_id != 0 && ( - - ) - )} - - {props.last_view_episode && ( - - )} - {props.category && } - {props.is_favorite && ( -
- -
- )} -
-
-
- {props.genres && ( -

- {props.genres} -

- )} -

- {props.title_ru} -

-
-

- {`${props.description.slice(0, 125)}${ - props.description.length > 125 ? "..." : "" - }`} -

-
-
-
- - ); -}; diff --git a/app/components/ReleaseLinkOld/ReleaseLink.16_9Poster_old.tsx b/app/components/ReleaseLinkOld/ReleaseLink.16_9Poster_old.tsx deleted file mode 100644 index 5a02d6b..0000000 --- a/app/components/ReleaseLinkOld/ReleaseLink.16_9Poster_old.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import Link from "next/link"; -import { sinceUnixDate } from "#/api/utils"; -import { Chip } from "#/components/Chip/Chip"; -import Image from "next/image"; - -const profile_lists = { - // 0: "Не смотрю", - 1: { name: "Смотрю", bg_color: "bg-green-500" }, - 2: { name: "В планах", bg_color: "bg-purple-500" }, - 3: { name: "Просмотрено", bg_color: "bg-blue-500" }, - 4: { name: "Отложено", bg_color: "bg-yellow-500" }, - 5: { name: "Брошено", bg_color: "bg-red-500" }, -}; - -export const ReleaseLink169Poster = (props: any) => { - const grade = props.grade ? props.grade.toFixed(1) : null; - const profile_list_status = props.profile_list_status; - let user_list = null; - if (profile_list_status != null || profile_list_status != 0) { - user_list = profile_lists[profile_list_status]; - } - return ( - -
-
-
- {props.title -
-
-
- {props.genres && ( -

- {props.genres} -

- )} -

- {`${props.title_ru.slice(0, 47)}${ - props.title_ru.length > 47 ? "..." : "" - }`} -

-

- {`${props.description.slice(0, 97)}${ - props.description.length > 97 ? "..." : "" - }`} -

-
-
- {grade ? : ""} - {user_list && ( - - )} - {props.status ? ( - - ) : ( - props.status_id != 0 && ( - - ) - )} - - {props.last_view_episode && ( - - )} - {props.category && } - {props.is_favorite && ( -
- -
- )} -
-
-
-
- - ); -}; diff --git a/app/components/ReleaseLinkOld/ReleaseLink.Poster_old.tsx b/app/components/ReleaseLinkOld/ReleaseLink.Poster_old.tsx deleted file mode 100644 index 438b7b6..0000000 --- a/app/components/ReleaseLinkOld/ReleaseLink.Poster_old.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import Link from "next/link"; -import { Chip } from "#/components/Chip/Chip"; - -const profile_lists = { - // 0: "Не смотрю", - 1: { name: "Смотрю", bg_color: "bg-green-500" }, - 2: { name: "В планах", bg_color: "bg-purple-500" }, - 3: { name: "Просмотрено", bg_color: "bg-blue-500" }, - 4: { name: "Отложено", bg_color: "bg-yellow-500" }, - 5: { name: "Брошено", bg_color: "bg-red-500" }, -}; - -export const ReleaseLinkPoster = (props: any) => { - const grade = props.grade.toFixed(1); - const profile_list_status = props.profile_list_status; - let user_list = null; - if (profile_list_status != null || profile_list_status != 0) { - user_list = profile_lists[profile_list_status]; - } - return ( - -
-
- - {props.status ? ( - - ) : ( - - )} - -
-
- {props.title_ru && ( -

- {props.title_ru} -

- )} - {props.title_original && ( -

- {props.title_original} -

- )} -
-
- - ); -}; diff --git a/app/components/ReleaseLinkOld/ReleaseLink.tsx b/app/components/ReleaseLinkOld/ReleaseLink.tsx deleted file mode 100644 index 8bc9e80..0000000 --- a/app/components/ReleaseLinkOld/ReleaseLink.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import Link from "next/link"; -import { Poster } from "../ReleasePoster/Poster"; -import { Chip } from "../Chip/Chip"; -// import { ReleaseLink169 } from "./ReleaseLink.16_9FullImage"; -// import { ReleaseLink169Poster } from "./ReleaseLink.16_9Poster"; -// import { ReleaseLinkPoster } from "./ReleaseLink.Poster"; - -const profile_lists = { - // 0: "Не смотрю", - 1: { name: "Смотрю", bg_color: "bg-green-500" }, - 2: { name: "В планах", bg_color: "bg-purple-500" }, - 3: { name: "Просмотрено", bg_color: "bg-blue-500" }, - 4: { name: "Отложено", bg_color: "bg-yellow-500" }, - 5: { name: "Брошено", bg_color: "bg-red-500" }, -}; - -export const ReleaseLink = (props: { - // type?: "16_9" | "poster"; - image: string; - title_ru: string; - title_original: string; - genres?: string; - grade?: number; - id: number; - settings?: { - showGenres?: boolean; - }; - profile_list_status?: number; - status?: { - name: string; - }; - status_id?: number; -}) => { - // const type = props.type || "16_9"; - - // if (type == "16_9") { - // return ( - // <> - //
TYPE=16/9
- - // {/*
*/} - // {/*
*/} - // - // ); - // } - // if (props.type == "poster") { - return ( - <>You NEED to fix this. Replace import to `ReleaseLinkUpdate` - ); - // return ; - // } -}; diff --git a/app/components/ReleaseLinkOld/ReleaseLinkUpdate.tsx b/app/components/ReleaseLinkOld/ReleaseLinkUpdate.tsx deleted file mode 100644 index 4467f96..0000000 --- a/app/components/ReleaseLinkOld/ReleaseLinkUpdate.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import Link from "next/link"; -import { PosterWithStuff } from "../ReleasePoster/PosterWithStuff"; - -export const ReleaseLink = (props: { - image: string; - title_ru: string; - title_original: string; - genres?: string; - grade?: number; - id: number; - settings?: { - showGenres?: boolean; - }; - profile_list_status?: number; - status?: { - name: string; - }; - status_id?: number; -}) => { - return ( - - - - ); -}; From ba5c149779678ff3907be88e9b7f9b3632de48fd Mon Sep 17 00:00:00 2001 From: Radiquum Date: Wed, 26 Mar 2025 01:57:20 +0500 Subject: [PATCH 10/12] refactor: Profile release ratings --- .../Profile/Profile.ReleaseRatings.tsx | 32 ++++++++----------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/app/components/Profile/Profile.ReleaseRatings.tsx b/app/components/Profile/Profile.ReleaseRatings.tsx index 6c6f978..75af80d 100644 --- a/app/components/Profile/Profile.ReleaseRatings.tsx +++ b/app/components/Profile/Profile.ReleaseRatings.tsx @@ -17,6 +17,7 @@ import { useCallback, useEffect, useState } from "react"; import { ENDPOINTS } from "#/api/config"; import useSWRInfinite from "swr/infinite"; import { Spinner } from "../Spinner/Spinner"; +import { Poster } from "../ReleasePoster/Poster"; const CarouselIndicatorsTheme: FlowbiteCarouselIndicatorsTheme = { active: { @@ -33,6 +34,9 @@ const CarouselControlsTheme: FlowbiteCarouselControlTheme = { }; const CarouselTheme = { + root: { + base: "relative h-full w-full max-w-[700px]", + }, indicators: CarouselIndicatorsTheme, control: CarouselControlsTheme, }; @@ -47,19 +51,15 @@ export const ProfileReleaseRatings = (props: any) => { Посмотреть все
-
+
{props.ratings.map((release) => { return (
- +
+ +

{release.title_ru}

@@ -155,7 +155,7 @@ const ProfileReleaseRatingsModal = (props: { ref={modalRef} > {isLoading && } - {content && content.length > 0 ? ( + {content && content.length > 0 ? content.map((release) => { return (
- +
+ +

{release.title_ru}

@@ -200,9 +196,7 @@ const ProfileReleaseRatingsModal = (props: { ); }) - ) : ( -

Оценок нет

- )} + :

Оценок нет

}
); From ac2425ba551ae3a010b42ca86b21b13b2bd67f9b Mon Sep 17 00:00:00 2001 From: Radiquum Date: Wed, 26 Mar 2025 15:34:58 +0500 Subject: [PATCH 11/12] refactor: licensed platform location --- .../ReleaseInfo/ReleaseInfo.Basics.tsx | 16 ++++++++++++---- .../ReleaseInfo.LicensedPlatforms.tsx | 8 ++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/app/components/ReleaseInfo/ReleaseInfo.Basics.tsx b/app/components/ReleaseInfo/ReleaseInfo.Basics.tsx index 1bf9448..63a576c 100644 --- a/app/components/ReleaseInfo/ReleaseInfo.Basics.tsx +++ b/app/components/ReleaseInfo/ReleaseInfo.Basics.tsx @@ -16,9 +16,18 @@ export const ReleaseInfoBasics = (props: { return (
-
- - +
+
+ + +
+
@@ -52,7 +61,6 @@ export const ReleaseInfoBasics = (props: { > {isFullDescription ? "Скрыть" : "Показать полностью"} -
diff --git a/app/components/ReleaseInfo/ReleaseInfo.LicensedPlatforms.tsx b/app/components/ReleaseInfo/ReleaseInfo.LicensedPlatforms.tsx index 6a1c72b..25f4d24 100644 --- a/app/components/ReleaseInfo/ReleaseInfo.LicensedPlatforms.tsx +++ b/app/components/ReleaseInfo/ReleaseInfo.LicensedPlatforms.tsx @@ -23,17 +23,17 @@ export const ReleaseInfoStreaming = (props: { release_id: number }) => { : !(data.content.length > 0) ? "" :
-

Официальные источники:

-
+
{data.content.map((item: any) => { return ( -

{item.name}

+

{item.name}

); })} From 07c93338cb733074cf2cd25c139fe18603b2e637 Mon Sep 17 00:00:00 2001 From: Radiquum Date: Wed, 26 Mar 2025 15:45:25 +0500 Subject: [PATCH 12/12] fix: poster aspect ration in release carousel --- app/components/ReleaseCourusel/ReleaseCourusel.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/components/ReleaseCourusel/ReleaseCourusel.tsx b/app/components/ReleaseCourusel/ReleaseCourusel.tsx index 69bd9ee..503c814 100644 --- a/app/components/ReleaseCourusel/ReleaseCourusel.tsx +++ b/app/components/ReleaseCourusel/ReleaseCourusel.tsx @@ -52,7 +52,7 @@ export const ReleaseCourusel = (props: { return (