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

🐞 fix: 修复被错误移除的cloneDeep和lint问题 - #767

Merged
imsyy merged 1 commit into
devfrom
dev-sett
Jan 25, 2026
Merged

imsyy merged 1 commit into
devfrom
dev-sett

Conversation

@kazukokawagawa

Copy link
Copy Markdown
Collaborator

No description provided.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @kazukokawagawa, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

此拉取请求主要致力于解决数据不变性相关的关键问题,并通过处理各种 Lint 警告来提高代码质量。重新引入 cloneDeep 确保了歌词数据的正确处理,而 Lint 修复则增强了 Electron 主进程、服务器和渲染器组件之间的代码一致性和可维护性。

Highlights

  • 恢复 cloneDeep: 在 src/components/Player/PlayerLyric/AMLyric.vue 中重新引入了 lodash-es 的 cloneDeep 方法,以修复之前因错误移除 cloneDeep 导致的潜在崩溃问题,确保歌词数据的正确处理,避免浅拷贝带来的副作用。
  • 解决 Lint 问题: 修复了多处代码风格和潜在错误,包括移除 catch 块中未使用的 e 或 error 变量,为有意未使用的变量添加 eslint-disable-next-line 注释,以及为 switch 语句中的 case 块添加大括号,提升了代码的规范性和可维护性。
  • 增强代码可读性: 在 electron/server/qqmusic/index.ts 和 electron/server/qqmusic/qrc.ts 的空 catch 块中添加了注释,明确了错误处理的意图和回退逻辑,使代码意图更加清晰。
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩

@imsyy
imsyy merged commit 4a2b74b into dev Jan 25, 2026
4 checks passed

@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 主要修复了几个 lint 问题,并重新引入了 cloneDeep 来解决一个潜在的 bug。这些 lint 修复包括:使用 if 语句替代逻辑与短路求值、移除 catch 块中未使用的错误变量、为 switch 的 case 语句添加花括号作用域等,这些都提升了代码的可读性和一致性。在 AMLyric.vue 组件中,重新引入 cloneDeep 是一个正确的决定,它能有效防止对 Vuex/Pinia store 状态的意外修改。我对歌词处理逻辑的性能和健壮性提出了一点改进建议。

Comment on lines +91 to +121
// 检查是否要不显示某一部分并删去
const showTran = settingStore.showTran;
const showRoma = settingStore.showRoma;
const showWordsRoma = settingStore.showWordsRoma;

if (!showTran || !showRoma || !showWordsRoma) {
clonedLyrics.forEach((line) => {
if (!showTran) line.translatedLyric = "";
if (!showRoma) line.romanLyric = "";
if (!showWordsRoma) line.words.forEach((word) => (word.romanWord = ""));
});
}



// 调换翻译与音译位置
if (settingStore.swapTranRoma) {
clonedLyrics.forEach((line) => {
const temp = line.translatedLyric;
line.translatedLyric = line.romanLyric;
line.romanLyric = temp;
});
}

// 如果开启了歌词靠右,反转 isDuet
if (settingStore.lyricAlignRight) {
clonedLyrics.forEach((line) => {
line.isDuet = !line.isDuet;
});
}

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.

high

当前实现使用了多个 forEach 循环来处理歌词数据,对于较长的歌词可能会有性能影响。此外,if (!showWordsRoma) line.words.forEach(...) 这行代码在 line.words 未定义时可能会导致运行时错误,缺少了对 line.words 是否存在的检查。

建议将这些操作合并到一个循环中以提高性能,并增加对 line.words 的空值检查以增强代码的健壮性,就像之前版本中的做法一样。

  const { showTran, showRoma, showWordsRoma, swapTranRoma, lyricAlignRight } = settingStore;

  clonedLyrics.forEach((line) => {
    if (!showTran) {
      line.translatedLyric = "";
    }
    if (!showRoma) {
      line.romanLyric = "";
    }
    if (!showWordsRoma && line.words) {
      line.words.forEach((word) => (word.romanWord = ""));
    }

    if (swapTranRoma) {
      const temp = line.translatedLyric;
      line.translatedLyric = line.romanLyric;
      line.romanLyric = temp;
    }

    if (lyricAlignRight) {
      line.isDuet = !line.isDuet;
    }
  });

return newLine;
}) as LyricLine[];

const clonedLyrics = cloneDeep(lyrics) as LyricLine[];

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

注释放在这里吧,放在上面可能不太引人注目(

import { getLyricLanguage } from "@/utils/format";
import { usePlayerController } from "@/core/player/PlayerController";

// 此处cloneDeep 删除会暴毙 不要动

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

这注释放下去吧

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants