From d0e91f7099fec2c709a63f94a12e81baa7fa6233 Mon Sep 17 00:00:00 2001 From: David Ralph Date: Sat, 24 Jan 2026 13:43:40 +0000 Subject: [PATCH] fix: stats, marketplace, deep links on preview --- src/features/misc/modals/Modals.jsx | 9 +++++++++ src/features/misc/views/Discover.jsx | 17 ++++++++++------- src/features/stats/api/stats.js | 5 +++++ 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/features/misc/modals/Modals.jsx b/src/features/misc/modals/Modals.jsx index bff1010b..c90e7227 100644 --- a/src/features/misc/modals/Modals.jsx +++ b/src/features/misc/modals/Modals.jsx @@ -20,6 +20,15 @@ const Modals = () => { const [deepLinkData, setDeepLinkData] = useState(null); useEffect(() => { + // Check for preview mode - block deep links and redirect to / + const isPreviewMode = localStorage.getItem('showWelcome') === 'true'; + if (isPreviewMode && shouldAutoOpenModal()) { + window.history.replaceState(null, null, '/'); + setWelcomeModal(true); + setPreview(false); + return; + } + // Check for deep link first (has priority) if (shouldAutoOpenModal()) { const linkData = parseDeepLink(); diff --git a/src/features/misc/views/Discover.jsx b/src/features/misc/views/Discover.jsx index 97508211..6baaa3ed 100644 --- a/src/features/misc/views/Discover.jsx +++ b/src/features/misc/views/Discover.jsx @@ -16,6 +16,9 @@ function DiscoverContent({ category, onBreadcrumbsChange }) { // Check for offline mode const offlineMode = localStorage.getItem('offlineMode') === 'true'; + // Check for preview mode + const isPreviewMode = localStorage.getItem('welcomePreview') === 'true'; + const previewParam = isPreviewMode ? '&preview=true' : ''; const isOffline = navigator.onLine === false || offlineMode; // Clear breadcrumbs when component unmounts (navigating away from discover) @@ -39,12 +42,12 @@ function DiscoverContent({ category, onBreadcrumbsChange }) { if (iframeRef.current) { // Collections use path-based routing, others use query params if (category === 'collections') { - iframeRef.current.src = `${MARKETPLACE_URL}/collections?embed=true`; + iframeRef.current.src = `${MARKETPLACE_URL}/collections?embed=true${previewParam}`; } else { - iframeRef.current.src = `${MARKETPLACE_URL}?embed=true&type=${category}`; + iframeRef.current.src = `${MARKETPLACE_URL}?embed=true&type=${category}${previewParam}`; } } - }, [category, onBreadcrumbsChange]); + }, [category, onBreadcrumbsChange, previewParam]); useEffect(() => { // Check for item parameter in URL and update iframe @@ -72,10 +75,10 @@ function DiscoverContent({ category, onBreadcrumbsChange }) { const itemIdToUse = item.id || itemId; // Navigate to /packs/{id} or /presets/{id} - iframeRef.current.src = `${MARKETPLACE_URL}/${pathSegment}/${itemIdToUse}?embed=true`; + iframeRef.current.src = `${MARKETPLACE_URL}/${pathSegment}/${itemIdToUse}?embed=true${previewParam}`; } else { // Fallback if item not found in localStorage - iframeRef.current.src = `${MARKETPLACE_URL}/packs/${itemId}?embed=true`; + iframeRef.current.src = `${MARKETPLACE_URL}/packs/${itemId}?embed=true${previewParam}`; } } }; @@ -91,7 +94,7 @@ function DiscoverContent({ category, onBreadcrumbsChange }) { window.removeEventListener('hashchange', checkAndLoadItem); window.removeEventListener('popstate', checkAndLoadItem); }; - }, [category]); + }, [category, previewParam]); useEffect(() => { // Listen for postMessage events from the iframe @@ -229,7 +232,7 @@ function DiscoverContent({ category, onBreadcrumbsChange }) { )}