feat(partner): require WeChat OAuth before store photo upload
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -6,6 +6,11 @@ import OssUploadField from '../components/OssUploadField';
|
||||
import { request } from '../lib/api';
|
||||
import { resolveRegionBinding } from '../lib/china-region';
|
||||
import { fetchPartnerCities, type OpenCityOption } from '../lib/upload';
|
||||
import {
|
||||
fetchPartnerProfile,
|
||||
handlePartnerWechatCallback,
|
||||
savePartnerWechatAuth,
|
||||
} from '../lib/wechat-auth';
|
||||
import { isWechatEnv, weixinSdk } from '../lib/weixin';
|
||||
import {
|
||||
clearStoreDraft,
|
||||
@@ -28,6 +33,7 @@ export default function StoreCreatePage() {
|
||||
const [submitting, setSubmitting] = useState(false);
|
||||
const [cities, setCities] = useState<OpenCityOption[]>([]);
|
||||
const [citiesError, setCitiesError] = useState('');
|
||||
const [wechatReady, setWechatReady] = useState(false);
|
||||
|
||||
const stepFromUrl = Number(params.get('step') || 0);
|
||||
const step = stepFromUrl >= 1 && stepFromUrl <= 3 ? stepFromUrl : (saved?.step ?? 1);
|
||||
@@ -44,11 +50,25 @@ export default function StoreCreatePage() {
|
||||
|
||||
useEffect(() => {
|
||||
if (step !== 2 || !isWechatEnv()) return;
|
||||
void fetchPartnerProfile()
|
||||
.then((me) => setWechatReady(!!me.hasWechat))
|
||||
.catch(() => setWechatReady(false));
|
||||
void weixinSdk.init().catch(() => {
|
||||
/* OssUploadField 点击时会再次初始化 */
|
||||
});
|
||||
}, [step]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!isWechatEnv() || !params.get('code')) return;
|
||||
void handlePartnerWechatCallback()
|
||||
.then((result) => {
|
||||
if (result && savePartnerWechatAuth(result)) {
|
||||
setWechatReady(true);
|
||||
}
|
||||
})
|
||||
.catch((e) => setError(e instanceof Error ? e.message : '微信授权失败'));
|
||||
}, [params]);
|
||||
|
||||
useEffect(() => {
|
||||
void fetchPartnerCities()
|
||||
.then((items) => {
|
||||
@@ -259,6 +279,8 @@ export default function StoreCreatePage() {
|
||||
bizType="STORE_TITLE"
|
||||
mediaType="IMAGE"
|
||||
value={form.coverUrl}
|
||||
wechatReady={wechatReady}
|
||||
onWechatReadyChange={setWechatReady}
|
||||
onChange={(coverUrl) => patchForm({ coverUrl })}
|
||||
label="点击或拖拽上传"
|
||||
/>
|
||||
@@ -275,6 +297,8 @@ export default function StoreCreatePage() {
|
||||
bizType="STORE_ENV"
|
||||
mediaType="IMAGE"
|
||||
value={url}
|
||||
wechatReady={wechatReady}
|
||||
onWechatReadyChange={setWechatReady}
|
||||
label="添加照片"
|
||||
onChange={(nextUrl) => {
|
||||
const envPhotoUrls = [...form.envPhotoUrls];
|
||||
@@ -294,6 +318,8 @@ export default function StoreCreatePage() {
|
||||
mediaType="FILE"
|
||||
accept="image/*,.pdf"
|
||||
value={form.contractUrl}
|
||||
wechatReady={wechatReady}
|
||||
onWechatReadyChange={setWechatReady}
|
||||
onChange={(contractUrl) => patchForm({ contractUrl })}
|
||||
label="上传合同副本"
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user