fix(admin-web): guard versions list with Array.isArray + bump parse timeout to 300s
- Prevent TypeError if useApi returns non-array shape - Add HttpClient.get logging to trace raw vs unwrapped response - Parse timeout: 120s → 300s (matches upload, avoids timeout on large files) - Show hint for large files (>30MB) during parse Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
e011eacbe6
commit
30393c2867
|
|
@ -102,7 +102,10 @@ class HttpClient {
|
|||
|
||||
async get<T = unknown>(url: string, config?: AxiosRequestConfig): Promise<T> {
|
||||
const response: AxiosResponse = await this.client.get(url, config);
|
||||
return response.data?.data ?? response.data;
|
||||
const raw = response.data;
|
||||
const result = raw?.data ?? raw;
|
||||
console.log('[HttpClient.get]', url, '→ raw:', raw, '→ result:', result, 'isArray:', Array.isArray(result));
|
||||
return result;
|
||||
}
|
||||
|
||||
async post<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T> {
|
||||
|
|
|
|||
|
|
@ -150,7 +150,8 @@ export const AppVersionManagementPage: React.FC = () => {
|
|||
refetch();
|
||||
};
|
||||
|
||||
const list = versions ?? [];
|
||||
console.log('[AppVersions] useApi versions:', versions, 'isArray:', Array.isArray(versions));
|
||||
const list = Array.isArray(versions) ? versions : [];
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
|
@ -325,7 +326,7 @@ const UploadModal: React.FC<{
|
|||
versionCode?: number; versionName?: string; minSdkVersion?: string;
|
||||
}>('/api/v1/admin/versions/parse', formData, {
|
||||
headers: { 'Content-Type': 'multipart/form-data' },
|
||||
timeout: 120000,
|
||||
timeout: 300000,
|
||||
});
|
||||
console.log('[Upload] Parse result:', info);
|
||||
if (info?.versionName) setVersionName(info.versionName);
|
||||
|
|
@ -386,7 +387,7 @@ const UploadModal: React.FC<{
|
|||
{file.name} ({(file.size / 1024 / 1024).toFixed(1)} MB)
|
||||
</div>
|
||||
)}
|
||||
{parsing && <div style={{ font: 'var(--text-caption)', color: 'var(--color-info)', marginTop: 4 }}>{t('app_version_parsing')}</div>}
|
||||
{parsing && <div style={{ font: 'var(--text-caption)', color: 'var(--color-info)', marginTop: 4 }}>{t('app_version_parsing')}{file && file.size > 30 * 1024 * 1024 ? '(大文件,请耐心等待...)' : ''}</div>}
|
||||
{parseWarning && <div style={{ font: 'var(--text-caption)', color: 'var(--color-warning, #f90)', marginTop: 4 }}>{parseWarning}</div>}
|
||||
|
||||
<label style={labelStyle}>{t('app_version_platform')}</label>
|
||||
|
|
|
|||
Loading…
Reference in New Issue