解决合伙人端上传图片循环调用接口的问题
This commit is contained in:
@@ -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 })}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user