aboutsummaryrefslogtreecommitdiff
path: root/extension/src/components/FolderBody.tsx
diff options
context:
space:
mode:
authorTyler Ferrari <69283684+Sowgro@users.noreply.github.com>2024-12-17 11:25:44 -0500
committerGitHub <noreply@github.com>2024-12-17 11:25:44 -0500
commit69b7a1fae3aa7ed474877889cd68b8a6415480d7 (patch)
tree6b3d111f4bc0915e36937476177a2bf8f67c2fb3 /extension/src/components/FolderBody.tsx
parenta2689fd6ed8f39d4aee98ad193973c743ec1ae4d (diff)
parent1ca4340e46f7fec3d2689cb8a3c60f9018ead048 (diff)
downloadbookmarks-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.tsx46
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>
)