import { Routes, Route, Navigate, useLocation, useNavigate } from 'react-router-dom'; import { useEffect } from 'react'; import TabLayout from './layouts/TabLayout'; import LoginPage from './pages/LoginPage'; import HomePage from './pages/HomePage'; import StoreListPage from './pages/StoreListPage'; import StoreDetailPage from './pages/StoreDetailPage'; import StoreCreatePage from './pages/StoreCreatePage'; import OrderListPage from './pages/OrderListPage'; import OrderDetailPage from './pages/OrderDetailPage'; import CenterPage from './pages/CenterPage'; import BillsPage from './pages/BillsPage'; import ReshipPage from './pages/ReshipPage'; import WeeklyReportPage from './pages/WeeklyReportPage'; import LeaderboardPage from './pages/LeaderboardPage'; import { handlePartnerWechatCallback, savePartnerWechatAuth } from './lib/wechat-auth'; import { isWechatEnv } from './lib/weixin'; function WechatOAuthHandler() { const location = useLocation(); const navigate = useNavigate(); useEffect(() => { if (!isWechatEnv() || !location.search.includes('code=')) return; if (location.pathname === '/login') return; void handlePartnerWechatCallback() .then((result) => { if (!result || !savePartnerWechatAuth(result)) return; const params = new URLSearchParams(location.search); params.delete('code'); params.delete('state'); const qs = params.toString(); navigate(`${location.pathname}${qs ? `?${qs}` : ''}`, { replace: true }); }) .catch(() => { /* 页面内组件会提示 */ }); }, [location.pathname, location.search, navigate]); return null; } export default function App() { return ( <> } /> }> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ); }