2025-07-13 07:48:15 +00:00
|
|
|
"use client";
|
|
|
|
|
|
2026-02-02 08:08:30 +00:00
|
|
|
import { getBannerData } from "@/service/banner";
|
2025-07-13 07:48:15 +00:00
|
|
|
import Image from "next/image";
|
2026-02-02 08:08:30 +00:00
|
|
|
import { useEffect, useState } from "react";
|
|
|
|
|
|
|
|
|
|
type Banner = {
|
|
|
|
|
id: number;
|
|
|
|
|
title: string;
|
|
|
|
|
status_id: number;
|
|
|
|
|
thumbnail_url: string;
|
|
|
|
|
};
|
2025-07-13 07:48:15 +00:00
|
|
|
|
|
|
|
|
export default function Video() {
|
2026-02-02 08:08:30 +00:00
|
|
|
const [banner, setBanner] = useState<Banner | null>(null);
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
const fetchRandomBanner = async () => {
|
|
|
|
|
try {
|
|
|
|
|
const req = {
|
|
|
|
|
limit: "20", // ambil agak banyak biar random lebih terasa
|
|
|
|
|
page: 1,
|
|
|
|
|
search: "",
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const res = await getBannerData(req);
|
|
|
|
|
|
|
|
|
|
const banners: Banner[] = res?.data?.data || [];
|
|
|
|
|
|
|
|
|
|
const approvedBanners = banners.filter((item) => item.status_id === 2);
|
|
|
|
|
|
|
|
|
|
if (approvedBanners.length === 0) return;
|
|
|
|
|
|
|
|
|
|
const randomBanner =
|
|
|
|
|
approvedBanners[Math.floor(Math.random() * approvedBanners.length)];
|
|
|
|
|
|
|
|
|
|
setBanner(randomBanner);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error("Failed to fetch random banner:", error);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
fetchRandomBanner();
|
|
|
|
|
}, []);
|
|
|
|
|
|
2025-07-13 07:48:15 +00:00
|
|
|
return (
|
|
|
|
|
<section className="pt-10 bg-white">
|
2026-02-02 08:08:30 +00:00
|
|
|
<div className="relative mb-10 w-full h-[250px] sm:h-[600px] md:h-[800px]">
|
2025-07-13 11:27:37 +00:00
|
|
|
<Image
|
2026-02-02 08:08:30 +00:00
|
|
|
src={banner?.thumbnail_url || "/maintenance.png"}
|
|
|
|
|
alt={banner?.title || "Banner"}
|
2025-07-13 11:27:37 +00:00
|
|
|
fill
|
|
|
|
|
className="object-cover"
|
|
|
|
|
priority
|
|
|
|
|
/>
|
2026-02-02 08:08:30 +00:00
|
|
|
s
|
2025-07-13 07:48:15 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="relative w-full h-[500px] overflow-hidden">
|
|
|
|
|
<iframe
|
|
|
|
|
className="w-full h-full"
|
|
|
|
|
src="https://www.youtube.com/embed/qEfjAK4gVhU?autoplay=1&mute=1&loop=1&playlist=qEfjAK4gVhU"
|
|
|
|
|
title="YouTube video player"
|
|
|
|
|
frameBorder="0"
|
|
|
|
|
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
|
|
|
|
allowFullScreen
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</section>
|
|
|
|
|
);
|
|
|
|
|
}
|