blob: 7bc5f3945dded0b3276ac540ef139fc19e96f4c8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import React, { useMemo } from "react";
import Link from "next/link";;
import { useQuery } from "react-query";;
import Image from "~/components/ui/image";;
import { getBanner } from "~/services/banner";
import { getRandomInt } from '@/utils/getRandomInt';
interface SideBannerProps {
query?: string; // Menentukan bahwa 'query' adalah string (bisa undefined)
}
const SideBanner: React.FC<SideBannerProps> = ({ query }) => {
const fetchSideBanner = useQuery({
queryKey: ["sideBanner", query],
queryFn: () => getBanner({ type: "side-banner-search", keyword: query }),
});
const length = useMemo(() => fetchSideBanner.data?.length, [fetchSideBanner.data]);
const randomIndex = useMemo(() => getRandomInt(length), [length]);
const banner = fetchSideBanner?.data?.[randomIndex] || false;
return banner && (
<>
{banner.url ? (
<Link href={banner.url}>
<Image src={banner.image} alt={banner.name} width={315} height={450} className='object-cover object-center rounded-lg' />
</Link>
) : (
<Image src={banner.image} alt={banner.name} width={315} height={450} className='object-cover object-center rounded-lg' />
)}
</>
)
}
export default SideBanner;
|