35 lines
1022 B
TypeScript
35 lines
1022 B
TypeScript
import browser from "@lumeweb/webextension-polyfill";
|
|
import type WebEngine from "./webEngine.js";
|
|
import type { Menus, Tabs } from "./types.js";
|
|
import IpfsProvider from "./contentProviders/ipfsProvider.js";
|
|
import { cacheDb } from "./databases.js";
|
|
|
|
export default function setup(engine: WebEngine) {
|
|
browser.menus.create({
|
|
title: "Clear Cache",
|
|
id: "clear-cache",
|
|
onclick: async (info: Menus.OnClickData, tab: Tabs.Tab) => {
|
|
// @ts-ignore
|
|
await cacheDb.items
|
|
.where("url")
|
|
.startsWithIgnoreCase(
|
|
`http://${new URL(info.pageUrl as string).hostname}`
|
|
)
|
|
.delete();
|
|
browser.tabs.reload(tab.id);
|
|
},
|
|
});
|
|
|
|
browser.menus.onShown.addListener((details: Menus.OnShownInfoType) => {
|
|
if (!details.pageUrl) {
|
|
return;
|
|
}
|
|
const provider = engine.getDomainContentProvider(
|
|
new URL(details.pageUrl as string).hostname
|
|
);
|
|
browser.menus.update("clear-cache", {
|
|
visible: provider instanceof IpfsProvider,
|
|
});
|
|
});
|
|
}
|