Skip to content

fix: 适配我喜欢的歌单获取,统一歌单列表渲染 - #34

Merged
Re-BeiChen merged 1 commit into
SPlayer-Dev:devfrom
Shomi-FJS:api-next
Jun 6, 2026
Merged

fix: 适配我喜欢的歌单获取,统一歌单列表渲染#34
Re-BeiChen merged 1 commit into
SPlayer-Dev:devfrom
Shomi-FJS:api-next

Conversation

@Shomi-FJS

Copy link
Copy Markdown
  • 为歌单详情接口新增可选 noCookie 参数,支持动态控制请求是否携带登录态
  • 在获取“我喜欢的音乐”歌单详情时关闭 noCookie,确保私有歌单可正确获取详情与歌曲权限数据
  • 移除“我喜欢的音乐”页面手机端单独的全量 SongCard 渲染逻辑,统一使用 SongList 虚拟列表组件渲染
  • 清理无用导入、方法和样式代码,降低页面维护成本

📌 变更类型

  • ✨ feat — 新功能
  • 🐞 fix — Bug 修复
  • 🎨 style — 仅样式 / 格式,不影响逻辑
  • ♻️ refactor — 重构,不改变外部行为
  • ⚡ perf — 性能优化
  • 📝 docs — 仅文档
  • 🧪 test — 新增 / 修改测试
  • 🔧 chore — 构建 / 脚本 / 依赖
  • 🚀 ci — 仅 CI 配置
  • ⏪ revert — 回滚

📝 变更说明

本次修复主要解决用户从首页进入“我喜欢的音乐”时出现卡顿、空白,以及刷新缓存时私有歌单详情请求返回 401 Unauthorized 的问题。

此前“我喜欢的音乐”页面在手机端使用单独的 SongCard 分支渲染歌曲列表,会一次性渲染完整歌曲数据。当用户喜欢的歌曲数量较多,或页面正在刷新缓存时,容易造成 WebView 主线程压力过大,出现明显卡顿甚至页面空白。现在该页面统一使用已有的 SongList 虚拟列表组件,仅渲染可视区域内的歌曲项,从而降低首次进入和刷新缓存时的渲染压力。

同时,歌单详情接口原先固定传入 noCookie: true,导致获取“我喜欢的音乐”这类私有歌单详情时不会携带登录态,在 Android 内置 API 链路下会触发 401 Unauthorized。本次为 playlistDetail 新增可选 noCookie 参数,默认仍保持原有行为;仅在“我喜欢的音乐”页面显式关闭 noCookie,使请求通过 X-SPlayer-Cookie 携带登录态,并由内置 API 转换为接口需要的标准 Cookie 请求。

该调整保留了 SongList 在手机端的单击播放能力,同时保留默认排序、非搜索状态下的拖拽排序能力,避免因性能修复引入播放交互回归。

🔗 关联 Issue

Closes #33

📱 影响范围

  • 🎵 播放引擎 / 音频
  • 📝 歌词 / 桌面歌词
  • 🔔 通知栏 / MediaSession
  • 🌐 在线音乐 (网易云 / Jellyfin / Navidrome / Emby / Subsonic / Last.fm)
  • 🧩 内置 API (nodejs-mobile)
  • 🎨 UI / 主题 / 布局
  • 📦 构建 / 打包 / 签名
  • 📱 Capacitor / 原生 Android 代码
  • 📄 文档 / README

✅ 自检清单

  • 本 PR 目标分支为 dev
  • 本地已执行 pnpm lint 且无 warning
  • 本地已执行 pnpm typecheck 且无报错
  • 已在 至少一台真机 上构建并验证关键路径
  • UI 改动已兼顾 手机竖屏 + 平板横屏 两种布局
  • 新增 / 修改的文案使用中文,与项目整体风格一致
  • 未引入不必要的依赖 / 大体积资源
  • 未修改签名密钥 / CI Secrets 相关文件

📸 截图 / 录屏 (UI 类 PR 必填)

改动前 改动后
用户进入“我喜欢的音乐”时可能出现空白或长时间卡顿;刷新缓存时可能出现 401 Unauthorized 页面统一使用虚拟列表渲染,进入与刷新缓存更稳定;私有歌单详情可正常请求

🧪 测试方式

  1. 从首页进入“我喜欢的音乐”,确认页面不再出现长时间空白,歌曲列表可正常展示。
  2. 在“我喜欢的音乐”页面点击“刷新缓存”,确认控制台不再出现 /playlist/detail401 Unauthorized,缓存刷新后歌曲数量与内容正常。
  3. 在手机竖屏环境下点击歌曲,确认可单击播放;在默认排序、非搜索状态下长按歌曲,确认仍可进行拖拽排序。
  4. 在歌曲数量较多的账号下重复进入“我喜欢的音乐”,确认页面滚动、播放、搜索和批量操作入口表现正常。
  5. 执行 pnpm lintpnpm typecheck,确认无 warning、无类型错误。

💬 其他说明 (选填)

  • playlistDetail 新增的 noCookie 参数默认值仍为 true,其他调用方不受影响。
  • X-SPlayer-Cookie 仅用于前端到 SPlayer API 的本地/代理请求链路,不会以该自定义 Header 名称直接转发到服务器;其值会在 SPlayer API 层转换为接口需要的标准 Cookie。
  • “我喜欢的音乐”页面改为统一使用 SongList 后,手机端也会保留 SongList 的单击播放与长按拖拽排序能力。

- 为歌单详情接口新增可选noCookie参数,支持动态控制
- 在获取我喜欢的歌单时关闭noCookie以正确获取数据
- 移除手机端单独的歌单渲染逻辑,统一使用SongList组件渲染
- 清理无用导入、方法和样式代码
@Re-BeiChen
Re-BeiChen merged commit 9a722b3 into SPlayer-Dev:dev Jun 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] "我喜欢的音乐"不显示封面与内容

2 participants