import { useNavigate } from "react-router-dom"; import { useTranslation } from "react-i18next"; import routes from "@/routes"; import styles from "./styles.module.css"; import { useApi, useApiCall } from "@/api"; import { Asset } from "@/api/resources/Assets"; import { useCallback, useEffect, useRef, useState } from "react"; import BlurringSubstrate from "../BlurringSubstrate"; import EnergyValues from "../EnergyValues"; import { UserAura } from "@/api/resources/Auras"; import { useDispatch, useSelector } from "react-redux"; import { getCategoryIdByZodiacSign, getZodiacSignByDate, } from "@/services/zodiac-sign"; import { actions, selectors } from "@/store"; import { getRandomArbitrary } from "@/services/random-value"; import Title from "../Title"; import { UserDailyForecast } from "@/api/resources/UserDailyForecasts"; import { EPathsFromHome } from "@/store/siteConfig"; import { buildFilename, saveFile } from "../WallpaperPage/utils"; import Onboarding from "../Onboarding"; import TextWithFinger from "../TextWithFinger"; const buttonTextFormatter = (text: string): JSX.Element => { const sentences = text.split("."); return ( <> {sentences[0]} {sentences[1]} > ); }; function HomePage(): JSX.Element { const token = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOjIzNjEyLCJpYXQiOjE2OTM0MTg5MTAsImV4cCI6MTcwMjA1ODkxMCwianRpIjoiNzg5MjkwYWItODg0YS00MGUyLTkyNjEtOWI2OGEyNjkwNmE0IiwiZW1haWwiOiJvdGhlckBleGFtcGxlLmNvbSIsInN0YXRlIjoicHJvdmVuIiwibG9jIjoiZW4iLCJ0eiI6LTI4ODAwLCJ0eXBlIjoiZW1haWwiLCJpc3MiOiJjb20ubGlmZS5hdXJhIn0.J2ocWIv5jKzuKMcwMgWMiNMyGg5qLlMAeln-bQm_9lw"; const { t } = useTranslation(); const navigate = useNavigate(); const dispatch = useDispatch(); const buttonsRef = useRef(null); const homeConfig = useSelector(selectors.selectHome); const isShowNavbar = homeConfig.isShowNavbar; const onboardingConfigHome = useSelector(selectors.selectOnboardingHome); const [isShowOnboardingHome, setIsShowOnboardingHome] = useState( !onboardingConfigHome?.isShown ); useEffect(() => { dispatch( actions.onboardingConfig.update({ home: { isShown: true, }, }) ); }, [dispatch]); const handleCompatibility = () => { dispatch( actions.siteConfig.update({ home: { pathFromHome: EPathsFromHome.compatibility, isShowNavbar }, }) ); navigate(routes.client.compatibility()); }; const handleBreath = () => { dispatch( actions.siteConfig.update({ home: { pathFromHome: EPathsFromHome.breath, isShowNavbar }, }) ); navigate(routes.client.breath()); }; const { i18n } = useTranslation(); const locale = i18n.language; const birthdate = useSelector(selectors.selectBirthdate); const zodiacSign = getZodiacSignByDate(birthdate); const [asset, setAsset] = useState(); const api = useApi(); const assetsData = useCallback(async () => { const { asset_categories } = await api.getAssetCategories({ locale }); const categoryId = getCategoryIdByZodiacSign(zodiacSign, asset_categories); const { assets } = await api.getAssets({ category: String(categoryId || "1"), }); return assets; }, [api, locale, zodiacSign]); const { data: assets, // isPending } = useApiCall(assetsData); useEffect(() => { if (assets) { setAsset(assets[getRandomArbitrary(0, assets?.length || 0)]); } }, [assets]); const auraData = useCallback(async () => { const { user_aura } = await api.getAuras({ token }); return user_aura; }, [api, token]); const { data: aura, // isPending } = useApiCall(auraData); const dailyForecastData = useCallback(async () => { const { user_daily_forecast } = await api.getDailyForecasts({ token }); return user_daily_forecast; }, [api, token]); const { data: dailyForecast, // isPending } = useApiCall(dailyForecastData); const downloadImg = () => { if (!asset) return; saveFile(asset.url.replace("http://", "https://"), buildFilename("1")); }; return ( Your energy today {aura && } {/* */} { setIsShowOnboardingHome(false)} /> {buttonTextFormatter(t("aura-money_compatibility-button"))} {buttonTextFormatter(t("aura-10_breath-button"))} } {dailyForecast && dailyForecast.forecasts.map((forecast, index) => ( {forecast.category} {forecast.body} ))} ); } export default HomePage;
{forecast.body}