From c6dde10e4e713489b67bbeb3a2e345150012323e Mon Sep 17 00:00:00 2001 From: sowgro Date: Wed, 6 Nov 2024 18:08:30 -0500 Subject: Finish implementing setting system --- extension/src/Body.tsx | 57 ++++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 27 deletions(-) (limited to 'extension/src/Body.tsx') diff --git a/extension/src/Body.tsx b/extension/src/Body.tsx index 786ee27..f878ef4 100644 --- a/extension/src/Body.tsx +++ b/extension/src/Body.tsx @@ -3,50 +3,53 @@ import SettingsEditor from "./SettingsEditor.tsx"; import imageUrl from "./assets/settings.svg" import BookmarkTreeNode = browser.bookmarks.BookmarkTreeNode; import FolderBody from "./FolderBody.tsx"; +import {defaultSettings, ISettings, loadSettings, writeSettings} from "./Settings.ts"; +import {getBrowser} from "./main.tsx"; -// @ts-ignore -if (typeof browser === "undefined") { - var browser = chrome; -} - -export const RootFolder = React.createContext({ - rootFolder: '0', - setRootFolder: (arg0: string) => {} -}); - -export const BookmarkTree = React.createContext({ - bookmarkTree: [] as BookmarkTreeNode[], - setBookmarkTree: (arg0: BookmarkTreeNode[]) => {} -}) +export const Settings = + React.createContext<[ISettings, (arg0: ISettings) => void]>([ + defaultSettings, + () => {} +]); function Body() { const [settingsOpen, setSettingsOpen] = useState(false); - const [rootFolder, setRootFolder] = useState("root________"); + const [settings, setSettings] = useState(defaultSettings); const [bookmarkTree, setBookmarkTree] = useState([]) const [ogBookmarkTree, setOgBookmarkTree] = useState([]) - const [backgroundURL, setBackgroundURL] = useState("") useEffect(() => { - browser.bookmarks.getTree().then(t => { + loadSettings().then(r => { + setSettings(r); + }) + getBrowser().bookmarks.getTree().then(t => { setOgBookmarkTree(t); }) }, []) useEffect(() => { - browser.bookmarks.getSubTree(rootFolder).then(t => { - setBookmarkTree(t); - }); - }, [rootFolder]); + writeSettings(settings); + if (settings?.rootFolder) { + getBrowser().bookmarks.getSubTree(settings.rootFolder).then(t => { + setBookmarkTree(t); + }); + } else { + getBrowser().bookmarks.getTree().then(t => { + setBookmarkTree(t); + }) + } + }, [settings]); return ( - - - + + {(() => {switch (settings.backgroundMode) { + case "color": return () + case "image": return () + }})()} - {settingsOpen && ()} + {settingsOpen && ()} {bookmarkTree[0] && ()} - - + ) } -- cgit v1.2.3