turkmentv_front/components/InfoBlock.tsx

148 lines
5.7 KiB
TypeScript
Raw Permalink Normal View History

"use client";
2024-08-19 12:44:56 +00:00
// NextJs components
import Image from "next/image";
import Link from "next/link";
2024-08-19 12:44:56 +00:00
// React query
import { useQuery } from "@tanstack/react-query";
import { Queries } from "@/api/queries";
2024-08-19 12:44:56 +00:00
// Components
import Loader from "./Loader";
import VideoPlayer from "./VideoPlayer";
import SectionTitle from "./SectionTitle";
2024-08-19 12:44:56 +00:00
// Images and cions
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
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({
queryKey: ["video", video_id],
2024-08-19 12:44:56 +00:00
queryFn: () => Queries.getVideo(video_id),
});
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
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>
<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 ? (
<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">
<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"
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">
<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"
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">
<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"
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">
<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;