Skip to content

Conversation

@CodFrm
Copy link
Member

@CodFrm CodFrm commented Dec 20, 2025

概述 Descriptions

修改了normalScriptCounts、backScriptCounts计数逻辑,不需要去分两个memo ,修复总数至少会为1的问题

删除了 scriptDataAsyncCounter,在useEffect中可以判断

删除了 extraData.lang , 在 popup 页面打开的情况下,不可能切换语言 (暂时未动)

这个 extraData 的逻辑。。。。真的绕,打开popup的script会更新的情况应该是很少数,为了很少数的情况做这个处理也是一种性能浪费,而且存在bug,暂时没排查出来不过大概是这一块的原因,今天先没时间了,想改成其它的逻辑了,还是改了,睡觉先

有时候列表显示全是空,但是实际上是有数据的 (2/6) (1/1):

image

变更内容 Changes

截图 Screenshots

@CodFrm CodFrm requested a review from cyfung1031 December 20, 2025 16:53
@cyfung1031
Copy link
Collaborator

cyfung1031 commented Dec 21, 2025

還沒看
不過如果只是顯示問題
#1010 那些一起處理會比較好
(現在的設計只考慮 -> 新navigation -> main frame pageload -> subframe pageload . History前後完全沒理會)

不然改完一次又要重新改 (我指popup資料保存/殘留的部份)

@cyfung1031
Copy link
Collaborator

所以問題是react沒正確繪畫,還是pageload那個儲存更新的問題呀?

@CodFrm
Copy link
Member Author

CodFrm commented Dec 21, 2025

還沒看 不過如果只是顯示問題 跟 #1010 那些一起處理會比較好 (現在的設計只考慮 -> 新navigation -> main frame pageload -> subframe pageload . History前後完全沒理會)

不然改完一次又要重新改 (我指popup資料保存/殘留的部份)

这里只是个bug修复,本来是打算发 v1.3.0-beta.1 的,发现了这个问题, #1010 我还没仔细看

所以問題是react沒正確繪畫,還是pageload那個儲存更新的問題呀?

不是react没正确绘制,没有深入看了,外面传入组件的数据是有的,计数都算出来了

Comment on lines +207 to +233
public getRecord(keys: string[]): Promise<Partial<Record<string, T>>> {
keys = keys.map((key) => this.joinKey(key));
if (this.useCache) {
return loadCache().then((cache) => {
const record: Partial<Record<string, T>> = {};
for (const key of keys) {
if (cache[key]) {
record[key] = Object.assign({}, cache[key]);
} else {
record[key] = cache[key];
}
}
return record;
});
}
return new Promise((resolve) => {
chrome.storage.local.get(keys, (result) => {
const lastError = chrome.runtime.lastError;
if (lastError) {
console.error("chrome.runtime.lastError in chrome.storage.local.get:", lastError);
// 无视storage API错误,继续执行
}
resolve(result as Partial<Record<string, T>>);
});
});
}

Copy link
Collaborator

Choose a reason for hiding this comment

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

這個是不是沒用到?

Copy link
Member Author

Choose a reason for hiding this comment

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

改了写法后没用了,不过觉得以后还是需要这种操作,就留下来了

@cyfung1031
Copy link
Collaborator

cyfung1031 commented Dec 21, 2025

extraData 那塊我有點失憶了。
你可以改。沒事能跑就好

extraData 是為了

src/pages/components/ScriptMenuList/index.tsx

Screenshot 2025-12-21 at 16 02 13

裡面 ScriptIcons 要取 icon

所以 metadata 只保留當前語言的 Name 和 單一Icon 就好

  const m = script.metadata[`name:${i18nLang()}`];
  return m ? m[0] : script.name;
const [icon] = m.icon || m.iconurl || m.icon64 || m.icon64url || [];

很多 userscripts 會有一堆多國語言名和 descriptions. icon 也是用 data URI (base64)

例子:

@cyfung1031
Copy link
Collaborator

cyfung1031 commented Dec 21, 2025

在 popup 页面打开的情况下,不可能切换语言 (暂时未动)

我记得是 vivaldi 或是什么浏览器,你打开了 popup 后,关掉再开还是同一个画面
Brave 好像是這種。
只是 React 一直乱跑重绘才没发现其实是同一个画面

所以关了popup 切换语言 后,React没乱跑重绘的话,显示不会切换到新语言

@CodFrm CodFrm merged commit 9c67e4a into release/v1.3 Dec 21, 2025
2 of 3 checks passed
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.

3 participants