Restore guest city panels while keeping Pro data protected

This commit is contained in:
2569718930@qq.com
2026-03-26 00:29:14 +08:00
parent a584da83f7
commit 961451aeff
5 changed files with 102 additions and 9 deletions
+13
View File
@@ -216,6 +216,7 @@ export function DashboardStoreProvider({
const [proAccess, setProAccess] = useState<ProAccessState>(
getInitialProAccessState,
);
const proAccessRef = useRef<ProAccessState>(getInitialProAccessState());
const mapStopMotionRef = useRef<() => void>(() => {});
const hydratedSelectionRef = useRef(false);
@@ -254,6 +255,10 @@ export function DashboardStoreProvider({
citySummariesRef.current = citySummariesByName;
}, [citySummariesByName]);
useEffect(() => {
proAccessRef.current = proAccess;
}, [proAccess]);
const scheduleBackgroundDetailRefresh = (
cityName: string,
cached: CityDetail,
@@ -481,6 +486,14 @@ export function DashboardStoreProvider({
setIsPanelOpen(true);
setSelectedForecastDate(null);
setFutureModalDate(null);
if (proAccessRef.current.loading) {
await refreshProAccess();
}
const access = proAccessRef.current;
if (!access.authenticated || !access.subscriptionActive) {
return;
}
setLoadingState((current) => ({ ...current, cityDetail: true }));
try {
const detail = await ensureCityDetail(cityName);