schoolbox web extension :)
at refactor/storage 36 lines 1.2 kB view raw
1import { browser, defineContentScript } from "#imports"; 2import { injectCatppuccin, injectLogo, injectStylesheet, injectUserSnippets } from "@/utils"; 3import { EXCLUDE_MATCHES, LOGO_INFO } from "@/utils/constants"; 4import type { LogoId } from "@/utils/storage"; 5import { globalSettings, schoolboxUrls } from "@/utils/storage"; 6import cssUrl from "./catppuccin.css?url"; 7 8export default defineContentScript({ 9 matches: ["<all_urls>"], 10 cssInjectionMode: "manual", 11 runAt: "document_start", 12 excludeMatches: EXCLUDE_MATCHES, 13 async main() { 14 const settings = await globalSettings.storage.getValue(); 15 const urls = (await schoolboxUrls.storage.getValue()).urls; 16 17 if (settings.global && urls.includes(window.location.origin)) { 18 // inject themes 19 if (settings.themes) { 20 injectStylesheet(cssUrl); 21 injectCatppuccin(settings.themeFlavour, settings.themeAccent); 22 } 23 24 // inject logo 25 injectLogo(LOGO_INFO[settings.themeLogo as LogoId], settings.themeLogoAsFavicon); 26 27 // inject snippets 28 if (settings.snippets) { 29 injectUserSnippets(settings.userSnippets); 30 } 31 32 // update icon 33 browser.runtime.sendMessage({ updateIcon: true }); 34 } 35 }, 36});