From 4fdd656ece78ddd829cfc4b74e68dee58a0641b6 Mon Sep 17 00:00:00 2001 From: strobie <0xstrobe@protonmail.com> Date: Tue, 9 Jul 2024 02:57:57 +0200 Subject: [PATCH 1/4] optimize db update --- src/pages/background/index.ts | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/pages/background/index.ts b/src/pages/background/index.ts index f679a59..2b18061 100644 --- a/src/pages/background/index.ts +++ b/src/pages/background/index.ts @@ -14,7 +14,7 @@ import { DEFILLAMA_DIRECTORY_API, PROTOCOL_TVL_THRESHOLD, } from "../libs/constants"; -import { getStorage } from "../libs/helpers"; +import { getStorage, setStorage } from "../libs/helpers"; import { checkDomain } from "../libs/phishing-detector"; startupTasks(); @@ -91,6 +91,16 @@ async function handlePhishingCheck() { } export async function updateProtocolsDb() { + const lastUpdate = await getStorage("local", "lastUpdate:protocols", 0); + const now = Date.now(); + if (now - lastUpdate < 4 * 60 * 60 * 1000) { + console.log("updateProtocolsDb", "last update was less than 4 hours ago, skipping"); + return; + } + + console.log("updateProtocolsDb", "start"); + await setStorage("local", "lastUpdate:protocols", now); + const raw = await fetch(PROTOCOLS_API).then((res) => res.json()); const protocols = (raw["protocols"]?.map((x: any) => ({ name: x.name, @@ -110,7 +120,16 @@ export async function updateProtocolsDb() { } export async function updateDomainDbs() { + const lastUpdate = await getStorage("local", "lastUpdate:domains", 0); + const now = Date.now(); + if (now - lastUpdate < 4 * 60 * 60 * 1000) { + console.log("updateDomainDbs", "last update was less than 4 hours ago, skipping"); + return; + } + console.log("updateDomainDbs", "start"); + await setStorage("local", "lastUpdate:domains", now); + const rawProtocols = await fetch(PROTOCOLS_API).then((res) => res.json()); const protocols = ( (rawProtocols["protocols"]?.map((x: any) => ({ From b4ba9ed28427409a3e6dd0721639611327840a96 Mon Sep 17 00:00:00 2001 From: strobie <0xstrobe@protonmail.com> Date: Tue, 9 Jul 2024 02:59:18 +0200 Subject: [PATCH 2/4] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d7e0ba8..bc874ac 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "defillama-extension", "private": true, - "version": "0.0.8.2", + "version": "0.0.8.3", "type": "module", "description": "DefiLlama Extension", "displayName": "DefiLlama", From e83bb342f07b3bd24045a1b8bf99e44b68468c47 Mon Sep 17 00:00:00 2001 From: strobie <0xstrobe@protonmail.com> Date: Tue, 9 Jul 2024 12:37:46 +0200 Subject: [PATCH 3/4] revert prev changes to async etc cuz icon updates on page change no longer works all the time --- src/pages/background/index.ts | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/pages/background/index.ts b/src/pages/background/index.ts index 2b18061..2147b79 100644 --- a/src/pages/background/index.ts +++ b/src/pages/background/index.ts @@ -28,7 +28,7 @@ async function getCurrentTab() { async function handlePhishingCheck() { const phishingDetector = await getStorage("local", "settings:phishingDetector", true); if (!phishingDetector) { - await Browser.action.setIcon({ path: cute }); + Browser.action.setIcon({ path: cute }); return; } @@ -202,7 +202,7 @@ export async function updateDomainDbs() { Browser.tabs.onUpdated.addListener(async (tabId, onUpdatedInfo, tab) => { // console.log("onUpdated", onUpdatedInfo.status, onUpdatedInfo.url); if (onUpdatedInfo.status === "complete" && tab.active) { - await Browser.tabs.sendMessage(tabId, { message: "TabUpdated" }); + Browser.tabs.sendMessage(tabId, { message: "TabUpdated" }); } await handlePhishingCheck(); }); @@ -210,26 +210,30 @@ Browser.tabs.onUpdated.addListener(async (tabId, onUpdatedInfo, tab) => { // monitor tab activations, when the user switches to a different tab that was already open but not active Browser.tabs.onActivated.addListener(async (onActivatedInfo) => { // console.log("onActivated"); - await Browser.tabs.sendMessage(onActivatedInfo.tabId, { message: "TabActivated" }); + Browser.tabs.sendMessage(onActivatedInfo.tabId, { message: "TabActivated" }); await handlePhishingCheck(); }); async function setupUpdateProtocolsDb() { console.log("setupUpdateProtocolsDb"); - await Browser.alarms.clear("updateProtocolsDb"); - - console.log("setupUpdateProtocolsDb", "create"); - await updateProtocolsDb(); - Browser.alarms.create("updateProtocolsDb", { periodInMinutes: 4 * 60 }); // update once every 4 hours + Browser.alarms.get("updateProtocolsDb").then((a) => { + if (!a) { + console.log("setupUpdateProtocolsDb", "create"); + updateProtocolsDb(); + Browser.alarms.create("updateProtocolsDb", { periodInMinutes: 4 * 60 }); // update once every 4 hours + } + }); } async function setupUpdateDomainDbs() { console.log("setupUpdateDomainDbs"); - await Browser.alarms.clear("updateDomainDbs"); - - console.log("setupUpdateDomainDbs", "create"); - await updateDomainDbs(); - Browser.alarms.create("updateDomainDbs", { periodInMinutes: 4 * 60 }); // update once every 4 hours + Browser.alarms.get("updateDomainDbs").then((a) => { + if (!a) { + console.log("setupUpdateDomainDbs", "create"); + updateDomainDbs(); + Browser.alarms.create("updateDomainDbs", { periodInMinutes: 4 * 60 }); // update once every 4 hours + } + }); } function startupTasks() { From 713c0999eea7bba14c4d9cb1b440d867e17e7549 Mon Sep 17 00:00:00 2001 From: strobie <0xstrobe@protonmail.com> Date: Tue, 9 Jul 2024 13:01:48 +0200 Subject: [PATCH 4/4] attempt to run updates during startup and print more info to console --- src/pages/background/index.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/pages/background/index.ts b/src/pages/background/index.ts index 2147b79..23c17d6 100644 --- a/src/pages/background/index.ts +++ b/src/pages/background/index.ts @@ -93,8 +93,9 @@ async function handlePhishingCheck() { export async function updateProtocolsDb() { const lastUpdate = await getStorage("local", "lastUpdate:protocols", 0); const now = Date.now(); - if (now - lastUpdate < 4 * 60 * 60 * 1000) { - console.log("updateProtocolsDb", "last update was less than 4 hours ago, skipping"); + const diff = now - lastUpdate; + if (diff < 4 * 60 * 60 * 1000) { + console.log("updateProtocolsDb", `last update was less than ${Math.ceil(diff / 1000 / 60)} minutes ago, skipping`); return; } @@ -122,8 +123,9 @@ export async function updateProtocolsDb() { export async function updateDomainDbs() { const lastUpdate = await getStorage("local", "lastUpdate:domains", 0); const now = Date.now(); - if (now - lastUpdate < 4 * 60 * 60 * 1000) { - console.log("updateDomainDbs", "last update was less than 4 hours ago, skipping"); + const diff = now - lastUpdate; + if (diff < 4 * 60 * 60 * 1000) { + console.log("updateDomainDbs", `last update was less than ${Math.ceil(diff / 1000 / 60)} minutes ago, skipping`); return; } @@ -240,6 +242,8 @@ function startupTasks() { console.log("startupTasks", "start"); setupUpdateProtocolsDb(); setupUpdateDomainDbs(); + updateProtocolsDb(); + updateDomainDbs(); Browser.action.setIcon({ path: cute }); console.log("startupTasks", "done"); }