From 743f5ffabc074fcc851ab5bb5aac68fb6a0501d7 Mon Sep 17 00:00:00 2001 From: Pas <74743263+Pasithea0@users.noreply.github.com> Date: Wed, 4 Jun 2025 13:16:39 -0600 Subject: [PATCH] fix more content page loading --- src/backend/metadata/traktApi.ts | 2 +- src/pages/discover/MoreContent.tsx | 4 ++-- src/pages/discover/components/MediaCarousel.tsx | 2 +- src/pages/discover/hooks/useDiscoverMedia.ts | 14 ++++++++++++-- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/backend/metadata/traktApi.ts b/src/backend/metadata/traktApi.ts index 35194782..9fb461ac 100644 --- a/src/backend/metadata/traktApi.ts +++ b/src/backend/metadata/traktApi.ts @@ -21,7 +21,7 @@ export interface TraktReleaseResponse { export type TraktContentType = "movie" | "episode"; -export const TRAKT_BASE_URL = "https://airdate.up.railway.app"; +export const TRAKT_BASE_URL = "https://fed-airdate.pstream.org"; export async function getLatestReleases(): Promise { const response = await fetch(`${TRAKT_BASE_URL}/latest`); diff --git a/src/pages/discover/MoreContent.tsx b/src/pages/discover/MoreContent.tsx index 930cc68d..3d10645e 100644 --- a/src/pages/discover/MoreContent.tsx +++ b/src/pages/discover/MoreContent.tsx @@ -88,7 +88,7 @@ export function MoreContent({ onShowDetails }: MoreContentProps) { // Handle content visibility useEffect(() => { - if (!isLoading) { + if (!isLoading || currentPage > 1) { // Small delay to ensure smooth transition const timer = setTimeout(() => { setIsContentVisible(true); @@ -96,7 +96,7 @@ export function MoreContent({ onShowDetails }: MoreContentProps) { return () => clearTimeout(timer); } setIsContentVisible(false); - }, [isLoading, mediaItems]); + }, [isLoading, mediaItems, currentPage]); const handleBack = () => { if (lastView) { diff --git a/src/pages/discover/components/MediaCarousel.tsx b/src/pages/discover/components/MediaCarousel.tsx index 90d853bb..63ab3a4c 100644 --- a/src/pages/discover/components/MediaCarousel.tsx +++ b/src/pages/discover/components/MediaCarousel.tsx @@ -503,7 +503,7 @@ export function MediaCarousel({
{media.length > 0 - ? media.map((item) => ( + ? media.slice(0, 20).map((item) => (
) => e.preventDefault() diff --git a/src/pages/discover/hooks/useDiscoverMedia.ts b/src/pages/discover/hooks/useDiscoverMedia.ts index 40b74b67..b6e3e1d8 100644 --- a/src/pages/discover/hooks/useDiscoverMedia.ts +++ b/src/pages/discover/hooks/useDiscoverMedia.ts @@ -276,11 +276,21 @@ export function useDiscoverMedia({ const [error, setError] = useState(null); const [hasMore, setHasMore] = useState(true); const [sectionTitle, setSectionTitle] = useState(""); + const [currentContentType, setCurrentContentType] = + useState(contentType); const { t } = useTranslation(); const userLanguage = useLanguageStore.getState().language; const formattedLanguage = getTmdbLanguageCode(userLanguage); + // Reset media when content type or media type changes + useEffect(() => { + if (contentType !== currentContentType) { + setMedia([]); + setCurrentContentType(contentType); + } + }, [contentType, currentContentType]); + const fetchTMDBMedia = useCallback( async (endpoint: string, params: Record = {}) => { try { @@ -477,7 +487,7 @@ export function useDiscoverMedia({ try { const data = await attemptFetch(contentType); - setMedia(data.results); + setMedia((prevMedia) => [...prevMedia, ...data.results]); setHasMore(data.hasMore); } catch (err) { console.error("Error fetching media:", err); @@ -488,7 +498,7 @@ export function useDiscoverMedia({ console.info(`Falling back from ${contentType} to ${fallbackType}`); try { const fallbackData = await attemptFetch(fallbackType); - setMedia(fallbackData.results); + setMedia((prevMedia) => [...prevMedia, ...fallbackData.results]); setHasMore(fallbackData.hasMore); setError(null); // Clear error if fallback succeeds } catch (fallbackErr) {