import React, {useEffect, useState} from "react"; 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"; export const Settings = React.createContext<[ISettings, (arg0: ISettings) => void]>([ defaultSettings, () => {} ]); /** * A component for the full body of the application * Also stores the trees and settings */ function Body() { const [settingsOpen, setSettingsOpen] = useState(false); const [settings, setSettings] = useState(defaultSettings); const [selectedBookmarkTree, setSelectedBookmarkTree] = useState([]) const [fullBookmarkTree, setFullBookmarkTree] = useState([]) useEffect(() => { loadSettings().then(r => { setSettings(r); }) getBrowser().bookmarks.getTree().then(t => { setFullBookmarkTree(t); }) }, []) useEffect(() => { writeSettings(settings); if (settings?.rootFolder) { getBrowser().bookmarks.getSubTree(settings.rootFolder).then(t => { setSelectedBookmarkTree(t); }); } else { getBrowser().bookmarks.getTree().then(t => { setSelectedBookmarkTree(t); }) } }, [settings]); return ( {(() => {switch (settings.backgroundMode) { case "color": return () case "image": return () }})()} {selectedBookmarkTree[0] && ()} ) } export default Body