import { useEffect, useMemo, useState } from "react"; import styles from "./styles.module.css"; import { getCategoryIdByZodiacSign, getZodiacSignByDate, } from "@/services/zodiac-sign"; import { useSelector } from "react-redux"; import { selectors } from "@/store"; import { useTranslation } from "react-i18next"; import { useApi } from "@/api"; import { getRandomArbitrary } from "@/services/random-value"; interface INameHoroscopeSliderProps { data: INameHoroscope; onClick: () => void; } export interface INameHoroscope { period: string; name: string; } function NameHoroscopeSlider({ data, onClick, }: INameHoroscopeSliderProps): JSX.Element { const api = useApi(); const { i18n } = useTranslation(); const locale = i18n.language; const birthDate = useSelector(selectors.selectBirthdate); const zodiacSign = useMemo(() => getZodiacSignByDate(birthDate), [birthDate]); const [backgroundUrl, setBackgroundUrl] = useState(""); useEffect(() => { (async () => { try { const { asset_categories } = await api.getAssetCategories({ locale }); const categoryId = getCategoryIdByZodiacSign( zodiacSign, asset_categories ); const assets = ( await api.getAssets({ category: String(categoryId || "1") }) ).assets; const randomAsset = assets[getRandomArbitrary(0, assets.length - 1)]; setBackgroundUrl(randomAsset.url); } catch (error) { console.error("Error: ", error); } })(); }, [api, locale, zodiacSign]); return (
{data.period}
{data.name}