diff options
author | Tyler Ferrari <69283684+Sowgro@users.noreply.github.com> | 2024-12-17 11:25:44 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-17 11:25:44 -0500 |
commit | 69b7a1fae3aa7ed474877889cd68b8a6415480d7 (patch) | |
tree | 6b3d111f4bc0915e36937476177a2bf8f67c2fb3 /extension/src/components/FolderBody.tsx | |
parent | a2689fd6ed8f39d4aee98ad193973c743ec1ae4d (diff) | |
parent | 1ca4340e46f7fec3d2689cb8a3c60f9018ead048 (diff) | |
download | bookmarks-home-69b7a1fae3aa7ed474877889cd68b8a6415480d7.tar.gz bookmarks-home-69b7a1fae3aa7ed474877889cd68b8a6415480d7.tar.bz2 bookmarks-home-69b7a1fae3aa7ed474877889cd68b8a6415480d7.zip |
Merge pull request #2 from ATO-b2/drag-n-drop
Drag n drop
Diffstat (limited to 'extension/src/components/FolderBody.tsx')
-rw-r--r-- | extension/src/components/FolderBody.tsx | 46 |
1 files changed, 31 insertions, 15 deletions
diff --git a/extension/src/components/FolderBody.tsx b/extension/src/components/FolderBody.tsx index a573a6e..e75fcc7 100644 --- a/extension/src/components/FolderBody.tsx +++ b/extension/src/components/FolderBody.tsx @@ -1,32 +1,48 @@ import BookmarkTreeNode = browser.bookmarks.BookmarkTreeNode; +import {ReactElement, useContext, useEffect, useState} from "react"; +import {Settings} from "./Body.tsx"; +import {getBrowser} from "../main.tsx"; import Bookmark from "./Bookmark.tsx"; import FolderButton from "./FolderButton.tsx"; -import {useContext} from "react"; -import {Settings} from "./Body.tsx"; /** * A component that displays the contents of a bookmark folder - * - * @param props.data The BookmarkTreeNode with data for the folder - * @constructor */ -function FolderBody (props: {data: BookmarkTreeNode}) { - const [settings, _] = useContext(Settings) +function FolderBody (props: {id: string}) { + + const [settings, ] = useContext(Settings) - if (!props.data.children) return; + const [children, setChildren] = useState<BookmarkTreeNode[]>([]) - let content = [...props.data.children].sort(getSortFunction(settings.sort)) - if (settings.foldersFirst) { - let [bookmarks, folders] = separateFolders(content) - content = folders.concat(bookmarks) + const updateBookmarks = () => { + getBrowser().bookmarks.getSubTree(props.id).then(r => { + let content = [...r[0].children!].sort(getSortFunction(settings.sort)) + if (settings.foldersFirst) { + let [bookmarks, folders] = separateFolders(content) + content = folders.concat(bookmarks) + } + setChildren(content); + }) } + useEffect(() => { + updateBookmarks(); + // getBrowser().bookmarks.onRemoved.addListener((id: string, moveInfo) => { + // if (moveInfo.parentId !== props.id) return; + // updateBookmarks(); + // }) + }, []); + + useEffect(() => { + updateBookmarks(); + }, [settings]); + return ( <div className={"folderBody"}> - {content.map(child => + {children.map(child => child.children - ? <FolderButton data={child} /> - : <Bookmark data={child} /> + ? <FolderButton id={child.id} /> + : <Bookmark id={child.id} /> )} </div> ) |