diff --git a/apps/h5-partner/src/components/OssUploadField.tsx b/apps/h5-partner/src/components/OssUploadField.tsx index 84b6990..2e12feb 100644 --- a/apps/h5-partner/src/components/OssUploadField.tsx +++ b/apps/h5-partner/src/components/OssUploadField.tsx @@ -39,10 +39,6 @@ function formatWechatUploadError(e: unknown): string { return msg; } -function shouldFallbackToNativePicker(msg: string): boolean { - return /permission|denied|接口未就绪|signature|JSSDK|签名校验|invalid signature|config:fail|未授权/i.test(msg); -} - function acceptsImages(accept: string) { return accept.includes('image'); } @@ -93,6 +89,7 @@ export default function OssUploadField({ useEffect(() => { if (!useWechatPicker || needsAuth) return; + weixinSdk.reset(); void weixinSdk.init().catch(() => { /* 点击上传时会再次初始化 */ }); @@ -135,10 +132,6 @@ export default function OssUploadField({ } } - function openNativeFilePicker() { - inputRef.current?.click(); - } - async function pickWechatImage() { setUploading(true); setError(''); @@ -150,21 +143,9 @@ export default function OssUploadField({ count: 1, sourceType: ['album', 'camera'], }); - if (!files) { - openNativeFilePicker(); - return; - } - if (!files[0]) return; + if (!files?.[0]) return; await uploadSelectedFile(files[0]); }); - } catch (e) { - const msg = e instanceof Error ? e.message : '无法打开相册'; - if (/cancel/i.test(msg)) return; - if (shouldFallbackToNativePicker(msg)) { - openNativeFilePicker(); - return; - } - throw e; } finally { setUploading(false); } @@ -186,16 +167,12 @@ export default function OssUploadField({ } catch (e) { const msg = e instanceof Error ? e.message : '无法打开相册'; if (/cancel/i.test(msg)) return; - if (shouldFallbackToNativePicker(msg)) { - openNativeFilePicker(); - return; - } showUploadError(formatWechatUploadError(e)); } return; } - openNativeFilePicker(); + inputRef.current?.click(); } const isImage = mediaType === 'IMAGE' && value; @@ -225,17 +202,19 @@ export default function OssUploadField({ )} - { - const file = e.target.files?.[0]; - if (file) void uploadSelectedFile(file); - }} - /> + {!useWechatPicker && ( + { + const file = e.target.files?.[0]; + if (file) void uploadSelectedFile(file); + }} + /> + )} {isImage ? (