Skip to content

优化 ipc-lyric#854

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

优化 ipc-lyric#854
imsyy merged 14 commits into
devfrom
dev-ipc

Conversation

@kazukokawagawa
Copy link
Copy Markdown
Collaborator

@kazukokawagawa kazukokawagawa commented Feb 9, 2026

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 类,封装状态与逻辑 - 提取通用方法如窗口状态检查、事件绑定与消息发送 - 优化主窗口交互时的鼠标穿透防抖逻辑 - 统一配置存储操作,减少重复代码 优化 ipc-lyric 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
Copy link
Copy Markdown
Member

imsyy commented Feb 10, 2026

/gemini review

Copy link
Copy Markdown
Contributor

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

Choose a reason for hiding this comment

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

Code Review

本次 PR 对 IPC 层的代码进行了大规模的重构,特别是文件处理和歌词相关的逻辑。通过将逻辑拆分到 DownloadServiceMusicMetadataService 等服务中,代码的可维护性和结构清晰度得到了显著提升。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 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.

2 participants