From 6c4f9f8203fde85f82bbdf5d834c6fbcd0a4ca19 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Wed, 8 Apr 2026 17:17:51 +0800 Subject: [PATCH] Gate dashboard detail caches behind pro access --- frontend/hooks/useDashboardStore.tsx | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/frontend/hooks/useDashboardStore.tsx b/frontend/hooks/useDashboardStore.tsx index a466db34..959abf7b 100644 --- a/frontend/hooks/useDashboardStore.tsx +++ b/frontend/hooks/useDashboardStore.tsx @@ -182,9 +182,10 @@ export function DashboardStoreProvider({ ]), ), ); - const selectedDetail = selectedCity - ? cityDetailsByName[selectedCity] || null - : null; + const selectedDetail = + selectedCity && proAccess.subscriptionActive + ? cityDetailsByName[selectedCity] || null + : null; const selectedMarketDate = futureModalDate || selectedForecastDate || @@ -193,9 +194,10 @@ export function DashboardStoreProvider({ const selectedMarketScanKey = selectedCity ? getMarketScanCacheKey(selectedCity, selectedMarketDate) : null; - const selectedMarketScan = selectedCity - ? marketScanByCityName[selectedMarketScanKey || ""] || null - : null; + const selectedMarketScan = + selectedCity && proAccess.subscriptionActive + ? marketScanByCityName[selectedMarketScanKey || ""] || null + : null; useEffect(() => { dashboardClient.writeCityDetailCacheBundle( @@ -212,6 +214,15 @@ export function DashboardStoreProvider({ proAccessRef.current = proAccess; }, [proAccess]); + useEffect(() => { + if (proAccess.loading) return; + if (proAccess.authenticated && proAccess.subscriptionActive) return; + dashboardClient.clearCityDetailCache(); + setCityDetailsByName({}); + setCityDetailMetaByName({}); + setMarketScanByCityName({}); + }, [proAccess]); + const scheduleBackgroundDetailRefresh = ( cityName: string, cached: CityDetail,