schoolbox web extension :)
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix(plugins/changeLogo): types and migration

willow 58c229f5 4e4431c4

+15 -12
+1 -1
src/entrypoints/plugins/changeLogo/Menu.svelte
··· 10 10 {#await logos then logos} 11 11 {#each Object.entries(logos) as [id, logo] (id)} 12 12 <button 13 - onclick={() => settings.logo.set({ id })} 13 + onclick={() => settings.logo.set({ id: id as keyof typeof logos })} 14 14 class:highlight={settings.logo.state.id === id} 15 15 class="flex flex-col rounded-lg border border-(--ctp-accent) p-2"> 16 16 <span>{logo.name}</span>
+7 -7
src/entrypoints/plugins/changeLogo/index.ts
··· 56 56 logo: { id: "schooltape-rainbow" }, 57 57 }, 58 58 async (settings) => { 59 - const x = await logos; 59 + const resolvedLogos = await logos; 60 60 const logoId = (await settings.logo.get()).id; 61 - injectLogo(x[logoId]); 62 - if ((await settings.setAsFavicon.get()).toggle) injectFavicon(x[logoId]); 61 + injectLogo(resolvedLogos[logoId]); 62 + if ((await settings.setAsFavicon.get()).toggle) injectFavicon(resolvedLogos[logoId]); 63 63 }, 64 64 () => { 65 65 uninjectLogo(); ··· 106 106 if (favicon && originalFavicon) favicon.href = originalFavicon; 107 107 } 108 108 109 - async function buildLogos(logos: Record<string, ImageSource>): Promise<Record<string, LogoInfo>> { 110 - const output: Record<string, LogoInfo> = {}; 109 + async function buildLogos<T extends Record<string, ImageSource>>(logos: T): Promise<Record<keyof T, LogoInfo>> { 110 + const output: Record<keyof T, LogoInfo> = {} as Record<keyof T, LogoInfo>; 111 111 112 - for (const [key, value] of Object.entries(logos)) { 112 + for (const [key, value] of Object.entries(logos) as [keyof T, ImageSource][]) { 113 113 let url; 114 114 115 115 if (value.url) { ··· 127 127 url = `data:image/svg+xml;utf8,${encodeURIComponent(value.raw.replaceAll("currentColor", accentHex))}`; 128 128 } 129 129 130 - if (!url) throw new Error(`error getting URL for logo: ${key}`); 130 + if (!url) throw new Error("error getting URL for logo"); 131 131 132 132 output[key] = { 133 133 name: value.name,
+6 -1
src/utils/storage/global.ts
··· 27 27 28 28 if (changeLogo) { 29 29 const s = changeLogo.settings as LogoSettings; 30 - if (["schooltape", "schooltape-rainbow", "schooltape-legacy", "catppuccin", "schoolbox"].includes(themeLogo)) 30 + if (themeLogo !== "default") { 31 + // update logo 31 32 s.logo.set({ id: themeLogo }); 33 + } else { 34 + // disable changeLogo 35 + changeLogo.toggle.set({ toggle: false }); 36 + } 32 37 s.setAsFavicon.set({ toggle: themeLogoAsFavicon }); 33 38 } 34 39 return rest;
+1 -3
src/utils/storage/types.ts
··· 1 - import type { logos } from "@/entrypoints/plugins/changeLogo"; 2 - 3 1 // global 4 2 export interface SettingsV1 { 5 3 global: boolean; ··· 9 7 10 8 themeFlavour: Flavour; 11 9 themeAccent: Accent; 12 - themeLogo: keyof Awaited<typeof logos>; 10 + themeLogo: "default" | "schooltape" | "schooltape-rainbow" | "schooltape-legacy" | "catppuccin" | "schoolbox"; 13 11 themeLogoAsFavicon: boolean; 14 12 15 13 userSnippets: Record<string, UserSnippet>;