解决合伙人端上传图片循环调用接口的问题

This commit is contained in:
2026-07-12 17:29:50 +08:00
parent d3ef07bf65
commit b7db202632
2 changed files with 20 additions and 12 deletions
@@ -73,19 +73,23 @@ export default function OssUploadField({
const useWechatPicker = const useWechatPicker =
inWechat && (mediaType === 'IMAGE' || (mediaType === 'FILE' && acceptsImages(resolvedAccept))); inWechat && (mediaType === 'IMAGE' || (mediaType === 'FILE' && acceptsImages(resolvedAccept)));
const needsAuth = useWechatPicker && needsWechatAuth(profile, clientConfig) && wechatReady !== true; const needsAuth = useWechatPicker && needsWechatAuth(profile, clientConfig) && wechatReady !== true;
const onWechatReadyChangeRef = useRef(onWechatReadyChange);
onWechatReadyChangeRef.current = onWechatReadyChange;
useEffect(() => { useEffect(() => {
if (!useWechatPicker) return; if (!useWechatPicker) return;
void Promise.all([fetchPartnerProfile(), fetchClientConfig()]) void fetchClientConfig()
.then(([me, config]) => { .then(setClientConfig)
setProfile(me);
setClientConfig(config);
onWechatReadyChange?.(!!me.hasWechat);
})
.catch(() => { .catch(() => {
/* 未登录等场景由上传接口报错 */ /* 未登录等场景由上传接口报错 */
}); });
}, [useWechatPicker, onWechatReadyChange]); if (wechatReady === true) return;
void fetchPartnerProfile()
.then(setProfile)
.catch(() => {
/* 未登录等场景由上传接口报错 */
});
}, [useWechatPicker, wechatReady]);
useEffect(() => { useEffect(() => {
if (!useWechatPicker || needsAuth) return; if (!useWechatPicker || needsAuth) return;
@@ -122,7 +126,7 @@ export default function OssUploadField({
if (result) { if (result) {
const me = await fetchPartnerProfile(); const me = await fetchPartnerProfile();
setProfile(me); setProfile(me);
onWechatReadyChange?.(!!me.hasWechat); if (me.hasWechat) onWechatReadyChangeRef.current?.(true);
} }
} catch (e) { } catch (e) {
const text = e instanceof Error ? e.message : '微信授权失败'; const text = e instanceof Error ? e.message : '微信授权失败';
@@ -1,4 +1,4 @@
import { useEffect, useMemo, useState } from 'react'; import { useCallback, useEffect, useMemo, useState } from 'react';
import { useNavigate, useSearchParams } from 'react-router-dom'; import { useNavigate, useSearchParams } from 'react-router-dom';
@@ -86,6 +86,10 @@ export default function StoreCreatePage() {
const wechatReady = !!account?.hasWechat; const wechatReady = !!account?.hasWechat;
const handleWechatReadyChange = useCallback(() => {
void refresh();
}, [refresh]);
const [params, setParams] = useSearchParams(); const [params, setParams] = useSearchParams();
const saved = loadStoreDraft(accountId); const saved = loadStoreDraft(accountId);
@@ -717,7 +721,7 @@ export default function StoreCreatePage() {
wechatReady={wechatReady} wechatReady={wechatReady}
onWechatReadyChange={() => { void refresh(); }} onWechatReadyChange={handleWechatReadyChange}
onChange={(coverUrl) => patchForm({ coverUrl })} onChange={(coverUrl) => patchForm({ coverUrl })}
@@ -753,7 +757,7 @@ export default function StoreCreatePage() {
wechatReady={wechatReady} wechatReady={wechatReady}
onWechatReadyChange={() => { void refresh(); }} onWechatReadyChange={handleWechatReadyChange}
onChange={(nextUrl) => patchEnvPhotoUrl(index, nextUrl)} onChange={(nextUrl) => patchEnvPhotoUrl(index, nextUrl)}
@@ -785,7 +789,7 @@ export default function StoreCreatePage() {
wechatReady={wechatReady} wechatReady={wechatReady}
onWechatReadyChange={() => { void refresh(); }} onWechatReadyChange={handleWechatReadyChange}
onChange={(contractUrl) => patchForm({ contractUrl })} onChange={(contractUrl) => patchForm({ contractUrl })}