Skip to content

Commit 6fd1cfb

Browse files
committed
hotfix: remove import allScript
1 parent 28f825f commit 6fd1cfb

File tree

7 files changed

+47
-20
lines changed

7 files changed

+47
-20
lines changed

README-en.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,12 @@ Try online [Here](https://useful-scripts-extension.github.io/useful-script/popup
3232

3333
Current Versions:
3434

35-
- **v2.0**: Hotfix bug crash popup
35+
- **v2.1**: Fix optimization error: remove import @allScripts in storageScripts.js
3636

3737
<details>
3838
<summary>Old versions</summary>
3939

40+
- <del>- **v2.0**: Hotfix bug crash popup</del>
4041
- <del>- **v1.9**: optimize scripts, load popup faster than x100 (ERROR)</del>
4142
- <del>- **v1.8**: douyin + facebook + youtube update 22/08/2024</del>
4243
- <del>v1.7: tiktok update (28/07/2024)</del>

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,12 @@ Xem [Lịch sử cập nhật](/md/CHANGELOGS.md)
3232

3333
Phiên bản hiện tại:
3434

35-
- **v2.0**: Hotfix bug crash popup
35+
- **v2.1**: Sửa lỗi tối ưu hoá: xoá import @allScripts trong storageScripts.js
3636

3737
<details>
3838
<summary>Xem phiên bản cũ hơn</summary>
3939

40+
- <del>- **v2.0**: Hotfix bug crash popup</del>
4041
- <del>- **v1.9**: tối ưu hoá script, load popup nhanh hơn x100 (LỖI)</del>
4142
- <del>- **v1.8**: douyin + facebook + youtube update 22/08/2024</del>
4243
- <del>v1.7: tiktok update (28/07/2024)</del>

manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"name": "Useful Scripts",
55
"description": "Scripts that can make your life faster and better",
66
"homepage_url": "https://github.com/Useful-Scripts-Extension/useful-script",
7-
"version": "2.0",
7+
"version": "2.1",
88
"icons": {
99
"16": "./assets/icon16.png",
1010
"32": "./assets/icon32.png",

md/CHANGELOGS.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
## Change logs
22

3+
<details>
4+
<summary>v2.1 - 26/11/2025</summary>
5+
6+
- Optimize popup loading time, load popup faster than x100
7+
- Fix import @allScripts in storageScripts.js
8+
9+
</details>
10+
311
<details>
412
<summary>v2.0 - 08/11/2025</summary>
513

md/claude-fix/OPTIMIZATION_DONE.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,14 @@ Popup loading optimization has been successfully implemented using lazy loading
2323
- Updated auto-run checkbox handler to lazy load
2424
- Updated restore settings to use lazy loading
2525

26-
### 4. Created `package.json`
26+
### 4. Updated `popup/helpers/storageScripts.js` (NEW)
27+
28+
- **Before:** Imported full scripts via `@allScripts.js`
29+
- **After:** Imports only metadata via `@metadata.js`
30+
- Fixed `getIds()` filter to check against metadata
31+
- Fixed `get()` to return metadata objects
32+
33+
### 5. Created `package.json`
2734
- Added build script: `npm run build:metadata`
2835
- Set type to "module" for ES6 imports
2936

@@ -91,7 +98,8 @@ Created:
9198
9299
Modified:
93100
├── popup/tabs.js # Now uses metadata
94-
└── popup/index.js # Added lazy loading
101+
├── popup/index.js # Added lazy loading
102+
└── popup/helpers/storageScripts.js # Now uses metadata (fixed!)
95103
```
96104

97105
## 🔄 Development Workflow
@@ -174,6 +182,7 @@ export { onClick } from './script-impl.js';
174182
- [x] Metadata file generated (173 scripts)
175183
- [x] popup/tabs.js uses metadata
176184
- [x] popup/index.js implements lazy loading
185+
- [x] popup/helpers/storageScripts.js uses metadata (FIXED!)
177186
- [x] runScript() lazy loads before execution
178187
- [x] Auto-run toggle lazy loads before onEnable/onDisable
179188
- [x] Restore settings lazy loads scripts

popup/helpers/storageScripts.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
import allScripts from "../../scripts/@allScripts.js";
1+
// ⚡ LAZY LOADING OPTIMIZATION
2+
// Import only metadata instead of full scripts for faster popup loading
3+
import metadata from "../../scripts/@metadata.js";
24

35
const createScriptsSaver = (key, addToHead = true) => {
46
const getIds = () =>
57
JSON.parse(localStorage.getItem(key) ?? "[]").filter(
6-
(savedScriptId) => savedScriptId in allScripts
8+
(savedScriptId) => savedScriptId in metadata
79
);
810
const has = (script) => {
911
let current = getIds();
@@ -31,7 +33,7 @@ const createScriptsSaver = (key, addToHead = true) => {
3133
const clear = () => {
3234
localStorage.setItem(key, "[]");
3335
};
34-
const get = () => getIds().map((savedScriptId) => allScripts[savedScriptId]);
36+
const get = () => getIds().map((savedScriptId) => metadata[savedScriptId]);
3537

3638
return { add, remove, has, toggle, clear, getIds, get };
3739
};

popup/tabs.js

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,32 @@ const createTitle = (en, vi) => ({ name: { en, vi } });
1414

1515
// Create script proxy from metadata (lightweight, no implementation code)
1616
// Add dummy context objects so canClick() and canAutoRun() work correctly
17-
const s = {};
1817
const dummyFn = () => {}; // Placeholder function
18+
const s = Object.entries(metadata).reduce((acc, [id, meta]) => {
19+
acc[id] = enrichMetadata(meta);
20+
return acc;
21+
}, {});
1922

20-
Object.entries(metadata).forEach(([id, meta]) => {
21-
s[id] = {
23+
function enrichMetadata(meta) {
24+
const res = {
2225
...meta,
2326
// Add context objects with dummy functions based on metadata
2427
// This allows popup/helpers/utils.js to correctly identify clickable scripts
2528
// Real functions are loaded lazily in index.js
2629
popupScript: meta.contexts?.popup ? { onClick: dummyFn } : undefined,
2730
contentScript: meta.contexts?.content ? { onClick: dummyFn } : undefined,
2831
pageScript: meta.contexts?.page ? { onClick: dummyFn } : undefined,
29-
backgroundScript: meta.contexts?.background ? { onClick: dummyFn } : undefined,
32+
backgroundScript: meta.contexts?.background
33+
? { onClick: dummyFn }
34+
: undefined,
3035
};
31-
32-
// If marked as canAutoRun, add dummy lifecycle function
3336
if (meta.canAutoRun) {
34-
if (s[id].contentScript) s[id].contentScript.onDocumentIdle = dummyFn;
35-
if (s[id].pageScript) s[id].pageScript.onDocumentIdle = dummyFn;
36-
if (s[id].backgroundScript) s[id].backgroundScript.onDocumentIdle = dummyFn;
37+
if (res.contentScript) res.contentScript.onDocumentIdle = dummyFn;
38+
if (res.pageScript) res.pageScript.onDocumentIdle = dummyFn;
39+
if (res.backgroundScript) res.backgroundScript.onDocumentIdle = dummyFn;
3740
}
38-
});
41+
return res;
42+
}
3943

4044
const specialTabs = [
4145
{
@@ -401,10 +405,12 @@ const allScriptInTabs = [
401405
async function refreshSpecialTabs() {
402406
// add data to special tabs
403407
let recentTab = specialTabs.find((tab) => tab.id === CATEGORY.recently.id);
404-
if (recentTab) recentTab.scripts = recentScriptsSaver.get();
408+
if (recentTab)
409+
recentTab.scripts = recentScriptsSaver.get().map(enrichMetadata);
405410

406411
let favoriteTab = specialTabs.find((tab) => tab.id === CATEGORY.favorite.id);
407-
if (favoriteTab) favoriteTab.scripts = favoriteScriptsSaver.get();
412+
if (favoriteTab)
413+
favoriteTab.scripts = favoriteScriptsSaver.get().map(enrichMetadata);
408414

409415
let allTab = specialTabs.find((tab) => tab.id === CATEGORY.all.id);
410416
if (allTab) allTab.scripts = sortScriptsByTab(allScriptInTabs, tabs);

0 commit comments

Comments
 (0)