From 2328a9a69e5f06dc5281e3f2cbac587a12553f37 Mon Sep 17 00:00:00 2001 From: mtvpls Date: Mon, 25 May 2026 20:42:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=9F=B3=E4=B9=90=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E6=B7=BB=E5=8A=A0=E9=87=8D=E5=A4=8D=E6=AD=8C=E5=8D=95?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/music/page.tsx | 13 +++++++++++-- src/components/AddToPlaylistModal.tsx | 13 +++++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/app/music/page.tsx b/src/app/music/page.tsx index c390e38..f9688e2 100644 --- a/src/app/music/page.tsx +++ b/src/app/music/page.tsx @@ -15,6 +15,15 @@ const SPECTRUM_REFERENCE_VOLUME = 10; const SPECTRUM_MIN_VOLUME = 5; const SPECTRUM_MAX_REFERENCE_VOLUME = 15; +function getApiErrorMessage(error: unknown, fallback: string): string { + if (typeof error === 'string') return error; + if (error && typeof error === 'object' && 'message' in error) { + const message = (error as { message?: unknown }).message; + if (typeof message === 'string' && message.trim()) return message; + } + return fallback; +} + type MusicSource = 'wy' | 'tx' | 'kw' | 'kg' | 'mg'; type MusicQuality = '128k' | '320k' | 'flac' | 'flac24bit'; @@ -1164,7 +1173,7 @@ export default function MusicPage() { } else { const data = await response.json(); setToast({ - message: data.error || '删除失败', + message: getApiErrorMessage(data.error, '删除失败'), type: 'error', onClose: () => setToast(null), }); @@ -1217,7 +1226,7 @@ export default function MusicPage() { } else { const data = await response.json(); setToast({ - message: data.error || '移除失败', + message: getApiErrorMessage(data.error, '移除失败'), type: 'error', onClose: () => setToast(null), }); diff --git a/src/components/AddToPlaylistModal.tsx b/src/components/AddToPlaylistModal.tsx index a6effdd..c9cd5ad 100644 --- a/src/components/AddToPlaylistModal.tsx +++ b/src/components/AddToPlaylistModal.tsx @@ -31,6 +31,15 @@ interface AddToPlaylistModalProps { onError?: (message: string) => void; } +function getApiErrorMessage(error: unknown, fallback: string): string { + if (typeof error === 'string') return error; + if (error && typeof error === 'object' && 'message' in error) { + const message = (error as { message?: unknown }).message; + if (typeof message === 'string' && message.trim()) return message; + } + return fallback; +} + function MusicLoadingIndicator({ text, size = 'md', @@ -139,7 +148,7 @@ export default function AddToPlaylistModal({ await loadPlaylists(); } else { const data = await response.json(); - onError?.(data.error || '创建歌单失败'); + onError?.(getApiErrorMessage(data.error, '创建歌单失败')); } } catch (error) { console.error('创建歌单失败:', error); @@ -175,7 +184,7 @@ export default function AddToPlaylistModal({ onClose(); } else { const data = await response.json(); - onError?.(data.error || '添加失败'); + onError?.(getApiErrorMessage(data.error, '添加失败')); } } catch (error) { console.error('添加到歌单失败:', error);