+
文件夹
-
+
{renderFolder(null, 0)}
{creatingFolder && (
@@ -472,6 +474,36 @@ export function Sidebar() {
)}
+ {deleteFolderConfirm && (
+
setDeleteFolderConfirm(null)}
+ >
+
e.stopPropagation()}
+ >
+
删除文件夹?
+
文件夹内的笔记将移至「所有笔记」,文件夹本身将被永久删除。
+
+
+
+
+
+
+ )}
)
}
@@ -489,13 +521,15 @@ function NavItem({ icon, label, count, active, onClick }: { icon: React.ReactNod
)
}
-function DroppableFolderItem({ folder, depth, expanded, active, editing, editValue, editRef, onToggle, onClick, onContextMenu, onEditChange, onEditBlur, onEditKeyDown }: {
+function DroppableFolderItem({ folder, depth, expanded, active, editing, editValue, editRef, onToggle, onClick, onContextMenu, onEditChange, onEditBlur, onEditKeyDown, onDelete }: {
folder: FolderType; depth: number; expanded: boolean; active: boolean; editing: boolean
editValue: string; editRef: React.RefObject
onToggle: () => void; onClick: () => void; onContextMenu: (e: React.MouseEvent) => void
onEditChange: (v: string) => void; onEditBlur: () => void; onEditKeyDown: (e: React.KeyboardEvent) => void
+ onDelete: () => void
}) {
const { isOver, setNodeRef } = useDroppable({ id: folder.id })
+ const [hovered, setHovered] = useState(false)
return (
setHovered(true)}
+ onMouseLeave={() => setHovered(false)}
>
)
}
diff --git a/src/db/index.ts b/src/db/index.ts
index db06ca0..416279e 100644
--- a/src/db/index.ts
+++ b/src/db/index.ts
@@ -64,8 +64,12 @@ export function seedIfEmpty(): Promise {
}
async function _doSeed() {
- const count = await db.notes.count()
- if (count > 0) return
+ // 用文件夹数量做判断,防止 notes 为空但文件夹已存在时重复创建
+ const [noteCount, folderCount] = await Promise.all([
+ db.notes.count(),
+ db.folders.count(),
+ ])
+ if (noteCount > 0 || folderCount > 0) return
const folderId1 = crypto.randomUUID()
const folderId2 = crypto.randomUUID()