From 5177d4be8323572c03d9461610a1ab4c9adf47f5 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Sat, 25 Apr 2026 00:19:30 +0800 Subject: [PATCH] Use Pro paywall for scan access --- .../dashboard/ProFeaturePaywall.tsx | 2 +- .../dashboard/ScanTerminalDashboard.tsx | 44 ++++++++++++++++--- .../subscription/UnlockProOverlay.tsx | 2 + 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/frontend/components/dashboard/ProFeaturePaywall.tsx b/frontend/components/dashboard/ProFeaturePaywall.tsx index 5a2109f5..33e99c54 100644 --- a/frontend/components/dashboard/ProFeaturePaywall.tsx +++ b/frontend/components/dashboard/ProFeaturePaywall.tsx @@ -14,7 +14,7 @@ const TELEGRAM_GROUP_URL = String( const SUBSCRIPTION_HELP_HREF = "/subscription-help"; type ProFeaturePaywallProps = { - feature: "today" | "history" | "future" | "assistant"; + feature: "today" | "history" | "future" | "assistant" | "scan"; onClose?: () => void; }; diff --git a/frontend/components/dashboard/ScanTerminalDashboard.tsx b/frontend/components/dashboard/ScanTerminalDashboard.tsx index 74ff37ee..9a515339 100644 --- a/frontend/components/dashboard/ScanTerminalDashboard.tsx +++ b/frontend/components/dashboard/ScanTerminalDashboard.tsx @@ -27,6 +27,7 @@ import { MapCanvas } from "@/components/dashboard/MapCanvas"; import { getWindowPhaseMeta } from "@/components/dashboard/OpportunityTable"; import { ScanKPIBar } from "@/components/dashboard/ScanKPIBar"; import { OpportunityTable } from "@/components/dashboard/OpportunityTable"; +import { ProFeaturePaywall } from "@/components/dashboard/ProFeaturePaywall"; import { DashboardStoreProvider, useDashboardStore, @@ -243,6 +244,7 @@ function ScanTerminalScreen() { const [selectedRowId, setSelectedRowId] = useState(null); const [activeView, setActiveView] = useState("map"); const [mapSelectedCityName, setMapSelectedCityName] = useState(null); + const [showScanPaywall, setShowScanPaywall] = useState(false); const [userLocalTime, setUserLocalTime] = useState("--"); const [themeMode, setThemeMode] = useState("dark"); const deferredRows = useDeferredValue(terminalData?.rows || []); @@ -490,6 +492,10 @@ function ScanTerminalScreen() { void store.selectCity(row.city); }, [store]); + const openScanPaywall = useCallback(() => { + setShowScanPaywall(true); + }, []); + const renderMainView = () => { if (resolvedView === "map") { return ( @@ -635,12 +641,16 @@ function ScanTerminalScreen() { ) : ( - + )}