@@ -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 = { } ;
1817const 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
4044const specialTabs = [
4145 {
@@ -401,10 +405,12 @@ const allScriptInTabs = [
401405async 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