import { Storage } from "@plasmohq/storage"; import { getRenderedHtml, initQueues, initWebHistory } from "~utils/commons"; import type { WebHistory } from "~utils/interfaces"; chrome.tabs.onCreated.addListener(async (tab: any) => { try { await initWebHistory(tab.id); await initQueues(tab.id); } catch (error) { console.log(error); } }); chrome.tabs.onUpdated.addListener(async (tabId: number, changeInfo: any, tab: any) => { if (changeInfo.status === "complete" && tab.url) { const storage = new Storage({ area: "local" }); await initWebHistory(tab.id); await initQueues(tab.id); const result = await chrome.scripting.executeScript({ // @ts-ignore target: { tabId: tab.id }, // @ts-ignore func: getRenderedHtml, }); const toPushInTabHistory: any = result[0].result; // const { renderedHtml, title, url, entryTime } = result[0].result; const urlQueueListObj: any = await storage.get("urlQueueList"); const timeQueueListObj: any = await storage.get("timeQueueList"); urlQueueListObj.urlQueueList .find((data: WebHistory) => data.tabsessionId === tabId) .urlQueue.push(toPushInTabHistory.url); timeQueueListObj.timeQueueList .find((data: WebHistory) => data.tabsessionId === tabId) .timeQueue.push(toPushInTabHistory.entryTime); await storage.set("urlQueueList", { urlQueueList: urlQueueListObj.urlQueueList, }); await storage.set("timeQueueList", { timeQueueList: timeQueueListObj.timeQueueList, }); } }); chrome.tabs.onRemoved.addListener(async (tabId: number, removeInfo: object) => { const storage = new Storage({ area: "local" }); const urlQueueListObj: any = await storage.get("urlQueueList"); const timeQueueListObj: any = await storage.get("timeQueueList"); if (urlQueueListObj.urlQueueList && timeQueueListObj.timeQueueList) { const urlQueueListToSave = urlQueueListObj.urlQueueList.map((element: WebHistory) => { if (element.tabsessionId !== tabId) { return element; } }); const timeQueueListSave = timeQueueListObj.timeQueueList.map((element: WebHistory) => { if (element.tabsessionId !== tabId) { return element; } }); await storage.set("urlQueueList", { urlQueueList: urlQueueListToSave.filter((item: any) => item), }); await storage.set("timeQueueList", { timeQueueList: timeQueueListSave.filter((item: any) => item), }); } });