Skip to content
This repository was archived by the owner on Jul 17, 2026. It is now read-only.

优化 ipc-lyric - #854

Merged
imsyy merged 14 commits into
devfrom
dev-ipc
Feb 10, 2026
Merged

imsyy merged 14 commits into
devfrom
dev-ipc

Conversation

@kazukokawagawa

@kazukokawagawa kazukokawagawa commented Feb 9, 2026 •

Copy link
Copy Markdown
Collaborator

refactor(lyric): 重构桌面歌词管理器为类结构以提升可维护性 - 将过程式代码重构为 DesktopLyricManager 类,封装状态与逻辑 - 提取通用方法如窗口状态检查、事件绑定与消息发送 - 优化主窗口交互时的鼠标穿透防抖逻辑 - 统一配置存储操作,减少重复代码

- 将过程式代码重构为 DesktopLyricManager 类,封装状态与逻辑
- 提取通用方法如窗口状态检查、事件绑定与消息发送
- 优化主窗口交互时的鼠标穿透防抖逻辑
- 统一配置存储操作,减少重复代码
将 toggle-desktop-lyric-lock IPC 通信的参数从多个独立参数重构为单一对象参数,提高代码可读性和可扩展性。修改涉及主进程和渲染进程的多个文件,确保参数传递方式一致。
@kazukokawagawa
kazukokawagawa marked this pull request as ready for review February 9, 2026 13:42
@kazukokawagawa kazukokawagawa self-assigned this Feb 9, 2026
@gemini-code-assist

This comment was marked as outdated.

gemini-code-assist[bot]

This comment was marked as outdated.

- 将文件操作、下载和音乐元数据处理逻辑提取到独立的服务类中
- 重构 ipc-file.ts 以使用新服务,减少代码重复并提高可维护性
- 在 SongCard 组件中使用 formatFileSize 格式化文件大小显示
- 公开 LocalMusicService 的 paths getter 和错误常量
- 将音乐库同步的扫描、封面处理与分块发送逻辑封装到 LocalMusicService.syncLibrary 方法
- 重构 MusicFileService 的元数据解析为分批处理以避免内存压力
- 将 DownloadService 的下载流程拆分为准备、执行、后处理等独立方法
- 简化 IPC 处理程序,移除重复的封面处理与分块逻辑
- 将 DownloadService 改为 EventEmitter 以支持进度事件
- 在 IPC 层添加下载映射,将进度事件转发给对应的渲染进程
- 重构下载流程,分离原始下载与元数据处理逻辑
- 使用 Electron net 模块下载专辑封面并临时存储
- 提供默认下载选项,增强代码健壮性
- 提取网络下载功能到独立的 network.ts 工具模块
- 提取艺术家格式化功能到独立的 artist.ts 工具模块
- 重构 DownloadService,分离下载逻辑与后处理逻辑
- 简化 ipc-file.ts 中的下载进度广播逻辑,移除 WebContents 映射
- 统一下载入口为 downloadMusic 方法,增强参数处理
使用展开运算符合并默认值时,如果传入的选项包含显式的 undefined,会错误地覆盖默认值。改为使用空值合并运算符(??)确保默认值只在选项为 null 或 undefined 时生效。

同时优化封面下载的文件名生成,通过 URL 解析去除查询参数,避免生成非法文件名。
优化媒体会话封面处理逻辑,在更新播放歌曲时传递已获取的封面数据给媒体会话管理器,避免对 blob URL 封面进行重复的网络请求。同时将 blob URL 的获取方式从 axios 统一为 fetch 以保持一致性。
@imsyy imsyy changed the title refactor(lyric): 重构桌面歌词管理器为类结构以提升可维护性 - 将过程式代码重构为 DesktopLyricManager 类,封装状态与逻辑 - 提取通用方法如窗口状态检查、事件绑定与消息发送 - 优化主窗口交互时的鼠标穿透防抖逻辑 - 统一配置存储操作,减少重复代码 Feb 9, 2026
imsyy and others added 5 commits February 9, 2026 23:53
refactor: 提取文件、下载和音乐文件服务以重构 IPC 模块  - 将文件操作、下载和音乐元数据处理逻辑提取到独立的服务类中 - 重构 ipc-file.ts 以使用新服务,减少代码重复并提高可维护性 - 在 SongCard 组件中使用 formatFileSize 格式化文件大小显示 - 公开 LocalMusicService 的 paths getter 和错误常量ipc 01
@imsyy
imsyy marked this pull request as draft February 10, 2026 10:14
@imsyy

imsyy commented Feb 10, 2026

Copy link
Copy Markdown
Member

/gemini review

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

本次 PR 对 IPC 层的代码进行了大规模的重构,特别是文件处理和歌词相关的逻辑。通过将逻辑拆分到 DownloadService 和 MusicMetadataService 等服务中,代码的可维护性和结构清晰度得到了显著提升。IPC 通道也统一使用了命名空间,这是一个很好的实践。总的来说,这是一次出色的重构,有效提升了代码质量。我发现了一个可以改进的小地方,请查看我的具体评论。

Comment thread electron/main/ipc/ipc-file.ts
@imsyy
imsyy marked this pull request as ready for review February 10, 2026 12:57
@imsyy
imsyy merged commit 5be2e63 into dev Feb 10, 2026
4 checks passed
@imsyy
imsyy deleted the dev-ipc branch February 10, 2026 13:24
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

2 participants