子账号登录微信授权

This commit is contained in:
2026-07-10 11:03:11 +08:00
parent f4f4f1b4aa
commit 9c5cb69730
11 changed files with 535 additions and 251 deletions
+8 -62
View File
@@ -17,20 +17,8 @@ import { checkStorePhoneAvailable } from '../lib/storePhone';
import { fetchPartnerCities, type OpenCityOption } from '../lib/upload';
import {
fetchPartnerProfile,
handlePartnerWechatCallback,
savePartnerWechatAuth,
} from '../lib/wechat-auth';
import { isWechatEnv, weixinSdk } from '../lib/weixin';
import { stripOAuthParamsFromLocation } from '@dukang/weixin-sdk';
import { usePartnerSession } from '../contexts/PartnerSessionContext';
import {
@@ -79,10 +67,12 @@ export default function StoreCreatePage() {
const navigate = useNavigate();
const { account } = usePartnerSession();
const { account, refresh } = usePartnerSession();
const accountId = account?.id;
const wechatReady = !!account?.hasWechat;
const [params, setParams] = useSearchParams();
const saved = loadStoreDraft(accountId);
@@ -101,8 +91,6 @@ export default function StoreCreatePage() {
const [citiesError, setCitiesError] = useState('');
const [wechatReady, setWechatReady] = useState(false);
function reportFormError(message: string) {
setSubmitError(message);
toastError(message);
@@ -138,11 +126,7 @@ export default function StoreCreatePage() {
if (step !== 2 || !isWechatEnv()) return;
void fetchPartnerProfile()
.then((me) => setWechatReady(!!me.hasWechat))
.catch(() => setWechatReady(false));
void refresh();
void weixinSdk.init().catch(() => {
@@ -150,45 +134,7 @@ export default function StoreCreatePage() {
});
}, [step]);
useEffect(() => {
if (!isWechatEnv() || !params.get('code')) return;
void handlePartnerWechatCallback()
.then((result) => {
if (result && savePartnerWechatAuth(result)) {
setWechatReady(true);
}
stripOAuthParamsFromLocation();
const next = new URLSearchParams(params);
next.delete('code');
next.delete('state');
setParams(next, { replace: true });
void weixinSdk.init().catch(() => {
/* OssUploadField 点击时会再次初始化 */
});
})
.catch((e) => reportFormError(e instanceof Error ? e.message : '微信授权失败'));
}, [params, setParams]);
}, [step, refresh]);
@@ -693,7 +639,7 @@ export default function StoreCreatePage() {
wechatReady={wechatReady}
onWechatReadyChange={setWechatReady}
onWechatReadyChange={() => { void refresh(); }}
onChange={(coverUrl) => patchForm({ coverUrl })}
@@ -729,7 +675,7 @@ export default function StoreCreatePage() {
wechatReady={wechatReady}
onWechatReadyChange={setWechatReady}
onWechatReadyChange={() => { void refresh(); }}
onChange={(nextUrl) => {
@@ -769,7 +715,7 @@ export default function StoreCreatePage() {
wechatReady={wechatReady}
onWechatReadyChange={setWechatReady}
onWechatReadyChange={() => { void refresh(); }}
onChange={(contractUrl) => patchForm({ contractUrl })}