import { useEffect, useState } from "react"; import { Helmet } from "react-helmet-async"; import { useTranslation } from "react-i18next"; import { Loading } from "@/components/layout/Loading"; import { WideContainer } from "@/components/layout/WideContainer"; import { useDebounce } from "@/hooks/useDebounce"; import { useRandomTranslation } from "@/hooks/useRandomTranslation"; import { useSearchQuery } from "@/hooks/useSearchQuery"; import { HomeLayout } from "@/pages/layouts/HomeLayout"; import { BookmarksPart } from "@/pages/parts/home/BookmarksPart"; import { HeroPart } from "@/pages/parts/home/HeroPart"; import { WatchingPart } from "@/pages/parts/home/WatchingPart"; import { SearchListPart } from "@/pages/parts/search/SearchListPart"; import { SearchLoadingPart } from "@/pages/parts/search/SearchLoadingPart"; import DiscoverContent from "@/utils/discoverContent"; function useSearch(search: string) { const [searching, setSearching] = useState(false); const [loading, setLoading] = useState(false); const debouncedSearch = useDebounce(search, 500); useEffect(() => { setSearching(search !== ""); setLoading(search !== ""); }, [search]); useEffect(() => { setLoading(false); }, [debouncedSearch]); return { loading, searching, }; } // What the sigma? export function HomePage() { const { t } = useTranslation(); const { t: randomT } = useRandomTranslation(); const emptyText = randomT(`home.search.empty`); const [showBg, setShowBg] = useState(false); const searchParams = useSearchQuery(); const [search] = searchParams; const s = useSearch(search); const [showBookmarks, setShowBookmarks] = useState(false); const [showWatching, setShowWatching] = useState(false); // State to track whether content is loading or loaded const [loading, setLoading] = useState(true); // Simulate loading media cards useEffect(() => { const simulateLoading = async () => { // Simulate a loading time with setTimeout or fetch data here await new Promise((resolve) => { setTimeout(resolve, 2000); }); // Simulate 2s loading time setLoading(false); // After loading, set loading to false }; simulateLoading(); }, []); return (
{t("global.name")}
{s.loading ? ( ) : s.searching ? ( ) : (
)} {!(showBookmarks || showWatching) ? (

{emptyText}

) : null}
{/* Conditional rendering: show loading screen or the content */} {loading ? (

Fetching the latest movies & TV shows...

Please wait while we load the best recommendations for you.

) : (
)}
); }