From 82bc478b999ba0cacce1d2ca9a6edf30dbe2ba7f Mon Sep 17 00:00:00 2001 From: sowgro Date: Sat, 23 Nov 2024 21:06:09 -0500 Subject: HIGH QUALITY ICONS --- extension/src/assets/globe.svg | 1 + extension/src/components/Bookmark.tsx | 32 +++++++++++++++++++++++--------- extension/src/main.tsx | 9 +++++++++ 3 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 extension/src/assets/globe.svg (limited to 'extension/src') diff --git a/extension/src/assets/globe.svg b/extension/src/assets/globe.svg new file mode 100644 index 0000000..b87a4d9 --- /dev/null +++ b/extension/src/assets/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/extension/src/components/Bookmark.tsx b/extension/src/components/Bookmark.tsx index 75badd7..c12da35 100644 --- a/extension/src/components/Bookmark.tsx +++ b/extension/src/components/Bookmark.tsx @@ -1,4 +1,7 @@ import BookmarkTreeNode = browser.bookmarks.BookmarkTreeNode; +import GlobeIcon from "../assets/globe.svg" +import React, {useEffect} from "react"; +import {getBrowser} from "../main.tsx"; /** * A component for a single bookmark @@ -6,9 +9,19 @@ import BookmarkTreeNode = browser.bookmarks.BookmarkTreeNode; * @param props.data The BookmarkTreeNode with the data for the bookmark */ function Bookmark(props: {data: BookmarkTreeNode}) { + let [favicon, setFavicon] = React.useState(GlobeIcon); + useEffect(() => { + // faviconURL(props.data.url).then(o => o && setFavicon(o)) + faviconURL(props.data).then(r => { + if (r) { + setFavicon(r); + } + }) + }, []); + return( - Bookmark icon + Bookmark icon {props.data.title} ); @@ -17,18 +30,19 @@ function Bookmark(props: {data: BookmarkTreeNode}) { /** * Gets the icon for a bookmark * - * @param u The URL of the link + * @param data The URL of the link * @return The URL of the icon */ -function faviconURL(u: string | undefined) { - if (!u) return ""; - u = new URL(u).hostname.toString(); +async function faviconURL(data: BookmarkTreeNode) { + + let i = (await getBrowser().storage.local.get("icon-"+data.id))["icon-"+data.id]; + if (i) return i.toString() const url = new URL('https://www.google.com/s2/favicons'); url.searchParams.set("sz", "256"); - // u = u.split(".")[u.split(".").length-2] +"."+ u.split(".")[u.split(".").length-1] - url.searchParams.set("domain_url", u); - return url.toString(); - + url.searchParams.set("domain_url", data.url!); + if ((await fetch(url)).ok) { + return url.toString(); + } } export default Bookmark; \ No newline at end of file diff --git a/extension/src/main.tsx b/extension/src/main.tsx index d1fa6c2..40cc4f4 100644 --- a/extension/src/main.tsx +++ b/extension/src/main.tsx @@ -9,6 +9,15 @@ export function getBrowser() { return browser; } } +// +// getBrowser().runtime.onMessage.addListener((message) => { +// console.log(message); +// if (message[0] === "icon") { +// getBrowser().bookmarks.search({url : message[1]}).then(r => { +// getBrowser().storage.local.set({["icon-"+r[0].id] : message[2]}); +// }) +// } +// }) createRoot(document.body).render() -- cgit v1.2.3