2025-01-20 11:53:01 +00:00
|
|
|
"use client";
|
2024-08-19 12:44:56 +00:00
|
|
|
// NextJs components
|
2025-01-20 11:53:01 +00:00
|
|
|
import Image from "next/image";
|
|
|
|
|
import Link from "next/link";
|
2024-08-19 12:44:56 +00:00
|
|
|
// React query
|
2025-01-20 11:53:01 +00:00
|
|
|
import { useQuery } from "@tanstack/react-query";
|
|
|
|
|
import { Queries } from "@/api/queries";
|
2024-08-19 12:44:56 +00:00
|
|
|
// Components
|
2025-01-20 11:53:01 +00:00
|
|
|
import Loader from "./Loader";
|
|
|
|
|
import VideoPlayer from "./VideoPlayer";
|
|
|
|
|
import SectionTitle from "./SectionTitle";
|
2024-08-19 12:44:56 +00:00
|
|
|
// Images and cions
|
2025-01-20 11:53:01 +00:00
|
|
|
import { SlEye } from "react-icons/sl";
|
|
|
|
|
import aydym from "@/public/aydym-com.webp";
|
|
|
|
|
import horjun from "@/public/horjun.png";
|
|
|
|
|
import belet from "@/public/belet.jpg";
|
2024-09-12 10:50:33 +00:00
|
|
|
|
2025-01-20 11:53:01 +00:00
|
|
|
import ReactionsBlock from "./treasury/ReactionsBlock";
|
2024-08-19 12:44:56 +00:00
|
|
|
|
|
|
|
|
interface IProps {
|
|
|
|
|
video_id: number;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const InfoBlock = ({ video_id }: IProps) => {
|
|
|
|
|
const { data, isFetching, error } = useQuery({
|
2025-01-20 11:53:01 +00:00
|
|
|
queryKey: ["video", video_id],
|
2024-08-19 12:44:56 +00:00
|
|
|
queryFn: () => Queries.getVideo(video_id),
|
|
|
|
|
});
|
|
|
|
|
|
2025-01-20 11:53:01 +00:00
|
|
|
if (isFetching)
|
|
|
|
|
return (
|
|
|
|
|
<div className="w-full h-[500px] sm:h-[667px] md:h-[600px] l flex items-center justify-center">
|
|
|
|
|
<Loader height={700} />
|
|
|
|
|
</div>
|
|
|
|
|
);
|
2024-08-19 12:44:56 +00:00
|
|
|
if (error) return <h1>{JSON.stringify(error)}</h1>;
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<div className="flex gap-6 max-w-[1220px] w-full justify-between h-full">
|
|
|
|
|
<div className="flex flex-col gap-6 w-full h-full">
|
|
|
|
|
<div className="flex justify-between gap-[32px] w-full h-full">
|
|
|
|
|
<div className="w-full flex flex-col gap-6 h-full">
|
|
|
|
|
<div className=" flex flex-col gap-2">
|
|
|
|
|
<SectionTitle title={data!.data.title} />
|
|
|
|
|
<div className="flex gap-2 items-center">
|
|
|
|
|
<SlEye
|
2025-01-20 11:53:01 +00:00
|
|
|
style={{
|
|
|
|
|
transition: "150ms all cubic-bezier(0.4, 0, 0.2, 1)",
|
|
|
|
|
}}
|
2024-08-19 12:44:56 +00:00
|
|
|
width={30}
|
|
|
|
|
height={18}
|
|
|
|
|
className="w-[30px] h-[18px]"
|
|
|
|
|
/>
|
|
|
|
|
<span className="font-roboto text-lg font-normal text-[#494949] transition-all dark:text-white">
|
|
|
|
|
{data!.data.view}
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="flex flex-col gap-[40px] h-full w-full">
|
|
|
|
|
<div className="flex gap-[40px] md:flex-row flex-col h-full w-full">
|
|
|
|
|
<div>
|
2025-01-20 11:53:01 +00:00
|
|
|
<VideoPlayer
|
|
|
|
|
video_id={video_id}
|
|
|
|
|
maxHeight="700px"
|
|
|
|
|
maxWidth="100%"
|
|
|
|
|
/>
|
2024-08-19 12:44:56 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="flex flex-col gap-6">
|
|
|
|
|
{data?.data.desc ? (
|
2025-01-20 11:53:01 +00:00
|
|
|
<p className="font-roboto text-lg w-full text-black">
|
|
|
|
|
{data!.data.desc}
|
|
|
|
|
</p>
|
2024-08-19 12:44:56 +00:00
|
|
|
) : null}
|
2024-09-12 10:50:33 +00:00
|
|
|
|
|
|
|
|
<ReactionsBlock video_id={video_id} />
|
|
|
|
|
|
2024-08-19 12:44:56 +00:00
|
|
|
{data?.data.aydym_com_url ||
|
|
|
|
|
data?.data.horjun_content_url ||
|
|
|
|
|
data?.data.belet_url ? (
|
|
|
|
|
<div className="flex flex-col gap-6">
|
2025-01-20 11:53:01 +00:00
|
|
|
<h2 className="text-2xl font-semibold">
|
|
|
|
|
Beýleki platformalarda seret:
|
|
|
|
|
</h2>
|
2024-08-19 12:44:56 +00:00
|
|
|
<div className="flex gap-11 items-center">
|
|
|
|
|
{data?.data.aydym_com_url ? (
|
|
|
|
|
<Link
|
|
|
|
|
href={data?.data.aydym_com_url}
|
|
|
|
|
target="_blank"
|
2025-01-20 11:53:01 +00:00
|
|
|
className="flex flex-col items-center justify-center gap-2"
|
|
|
|
|
>
|
2024-08-19 12:44:56 +00:00
|
|
|
<div className="relative h-16 w-16 flex items-center justify-center overflow-hidden border-[#00AEFF] border-[1.5px] p-2 rounded-full">
|
2025-01-20 11:53:01 +00:00
|
|
|
<Image
|
|
|
|
|
src={aydym}
|
|
|
|
|
alt="Aydym.com"
|
|
|
|
|
className="rounded-full"
|
|
|
|
|
/>
|
2024-08-19 12:44:56 +00:00
|
|
|
</div>
|
|
|
|
|
<h3>Aydym.com</h3>
|
|
|
|
|
</Link>
|
|
|
|
|
) : null}
|
|
|
|
|
{data?.data.horjun_content_url ? (
|
|
|
|
|
<Link
|
|
|
|
|
href={data?.data.horjun_content_url}
|
|
|
|
|
target="_blank"
|
2025-01-20 11:53:01 +00:00
|
|
|
className="flex flex-col items-center justify-center gap-2"
|
|
|
|
|
>
|
2024-08-19 12:44:56 +00:00
|
|
|
<div className="relative h-16 w-16 flex items-center justify-center overflow-hidden border-[#00AEFF] border-[1.5px] p-2 rounded-full">
|
2025-01-20 11:53:01 +00:00
|
|
|
<Image
|
|
|
|
|
src={horjun}
|
|
|
|
|
alt="HorjunTv"
|
|
|
|
|
className="rounded-full"
|
|
|
|
|
/>
|
2024-08-19 12:44:56 +00:00
|
|
|
</div>
|
|
|
|
|
<h3>HorjunTv</h3>
|
|
|
|
|
</Link>
|
|
|
|
|
) : null}
|
|
|
|
|
{data?.data.belet_url ? (
|
|
|
|
|
<Link
|
|
|
|
|
href={data.data.belet_url}
|
|
|
|
|
target="_blank"
|
2025-01-20 11:53:01 +00:00
|
|
|
className="flex flex-col items-center justify-center gap-2"
|
|
|
|
|
>
|
2024-08-19 12:44:56 +00:00
|
|
|
<div className="relative h-16 w-16 flex items-center justify-center overflow-hidden border-[#00AEFF] border-[1.5px] p-2 rounded-full">
|
2025-01-20 11:53:01 +00:00
|
|
|
<Image
|
|
|
|
|
src={belet}
|
|
|
|
|
alt="BeletTv"
|
|
|
|
|
className="rounded-full"
|
|
|
|
|
/>
|
2024-08-19 12:44:56 +00:00
|
|
|
</div>
|
|
|
|
|
<h3>BeletFilm</h3>
|
|
|
|
|
</Link>
|
|
|
|
|
) : null}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
) : null}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default InfoBlock;
|