Skip to content

Commit e3fbaf5

Browse files
committed
🐛 修复数据清除错误
1 parent b5670c9 commit e3fbaf5

File tree

1 file changed

+47
-32
lines changed

1 file changed

+47
-32
lines changed

src/runtime/background/runtime.ts

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -273,44 +273,56 @@ export default class Runtime extends Manager {
273273
scriptNum.runNum += 1;
274274
}
275275
};
276-
chrome.tabs.onUpdated.addListener((tabId, changeInfo) => {
277-
if (changeInfo.status === "loading") {
278-
runScript.delete(tabId);
279-
}
280-
});
281276
chrome.tabs.onRemoved.addListener((tabId) => {
282277
runScript.delete(tabId);
283278
});
284279
// 给popup页面获取运行脚本,与菜单
285280
this.message.setHandler(
286281
"queryPageScript",
287-
(action: string, { tabId }: any) => {
282+
async (action: string, { tabId }: any) => {
288283
const tabMap = scriptMenu.get(tabId);
289284
const matchScripts = runScript.get(tabId) || [];
290-
const scriptList: ScriptMenu[] = [];
291-
matchScripts.forEach((item) => {
292-
const menus: ScriptMenuItem[] = [];
293-
if (tabMap) {
294-
tabMap.get(item.script.id)?.forEach((scriptItem) => {
295-
menus.push({
296-
name: scriptItem.request.params[1],
297-
accessKey: scriptItem.request.params[2],
298-
id: scriptItem.request.params[0],
299-
sender: scriptItem.request.sender,
300-
channelFlag: scriptItem.channel.flag,
285+
const allPromise: Promise<ScriptMenu>[] = Array.from(
286+
matchScripts,
287+
async ([, item]: [number, { script: Script; runNum: number }]) => {
288+
const menus: ScriptMenuItem[] = [];
289+
if (tabMap) {
290+
tabMap.get(item.script.id)?.forEach((scriptItem) => {
291+
menus.push({
292+
name: scriptItem.request.params[1],
293+
accessKey: scriptItem.request.params[2],
294+
id: scriptItem.request.params[0],
295+
sender: scriptItem.request.sender,
296+
channelFlag: scriptItem.channel.flag,
297+
});
301298
});
302-
});
299+
}
300+
const script = await this.scriptDAO.findById(item.script.id);
301+
if (!script) {
302+
return {
303+
id: item.script.id,
304+
name: item.script.name,
305+
enable: item.script.status === SCRIPT_STATUS_ENABLE,
306+
updatetime: item.script.updatetime || item.script.createtime,
307+
hasUserConfig: !!item.script.config,
308+
runNum: item.runNum,
309+
menus,
310+
};
311+
}
312+
return {
313+
id: script.id,
314+
name: script.name,
315+
enable: script.status === SCRIPT_STATUS_ENABLE,
316+
updatetime: script.updatetime || script.createtime,
317+
hasUserConfig: !!script?.config,
318+
runNum: item.runNum,
319+
menus,
320+
};
303321
}
304-
scriptList.push({
305-
id: item.script.id,
306-
name: item.script.name,
307-
enable: item.script.status === SCRIPT_STATUS_ENABLE,
308-
updatetime: item.script.updatetime || item.script.createtime,
309-
hasUserConfig: !!item.script.config,
310-
runNum: item.runNum,
311-
menus,
312-
});
313-
});
322+
);
323+
324+
const scriptList: ScriptMenu[] = await Promise.all(allPromise);
325+
314326
const backScriptList: ScriptMenu[] = [];
315327
const sandboxMenuMap = scriptMenu.get("sandbox");
316328
this.runBackScript.forEach((item) => {
@@ -355,20 +367,23 @@ export default class Runtime extends Manager {
355367
if (!(sender.url && sender.tabId)) {
356368
return;
357369
}
358-
370+
if (sender.frameId === undefined) {
371+
// 清理之前的数据
372+
runScript.delete(sender.tabId);
373+
}
359374
const filter: ScriptRunResouce[] = this.matchUrl(
360375
sender.url,
361376
(script) => {
362377
// 如果是iframe,判断是否允许在iframe里运行
363378
if (sender.frameId !== undefined) {
364379
if (script.metadata.noframes) {
365-
return false;
380+
return true;
366381
}
367382
addRunScript(sender.tabId!, script);
368-
return script.status === SCRIPT_STATUS_ENABLE;
383+
return script.status !== SCRIPT_STATUS_ENABLE;
369384
}
370385
addRunScript(sender.tabId!, script);
371-
return script.status === SCRIPT_STATUS_ENABLE;
386+
return script.status !== SCRIPT_STATUS_ENABLE;
372387
}
373388
);
374389

0 commit comments

Comments
 (0)