diff --git a/frontend/public/favicon.svg b/frontend/public/favicon.svg new file mode 100644 index 0000000..ad4d2ff --- /dev/null +++ b/frontend/public/favicon.svg @@ -0,0 +1 @@ + diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx index df26a65..e9fa08b 100644 --- a/frontend/src/app/layout.tsx +++ b/frontend/src/app/layout.tsx @@ -2,8 +2,11 @@ import type { Metadata } from 'next'; import './globals.css'; export const metadata: Metadata = { - title: 'Drive — Your Personal Cloud', + title: "Eli's Drive", description: 'A high-performance, self-hosted file storage and management platform.', + icons: { + icon: '/favicon.svg', + }, }; export default function RootLayout({ diff --git a/frontend/src/components/FileExplorer.tsx b/frontend/src/components/FileExplorer.tsx index 731ba46..f745263 100644 --- a/frontend/src/components/FileExplorer.tsx +++ b/frontend/src/components/FileExplorer.tsx @@ -245,6 +245,7 @@ export default function FileExplorer({ onLogout }: FileExplorerProps) { const [pinnedExpanded, setPinnedExpanded] = useState(false); const [pinnedOrder, setPinnedOrder] = useState([]); const [dragOverPinnedItem, setDragOverPinnedItem] = useState(null); + const [pinnedRefreshCounter, setPinnedRefreshCounter] = useState(0); const [selectionBox, setSelectionBox] = useState<{ startX: number; startY: number; currentX: number; currentY: number } | null>(null); const [initialSelectedFiles, setInitialSelectedFiles] = useState>(new Set()); const searchTimeoutRef = useRef(undefined); @@ -437,7 +438,7 @@ export default function FileExplorer({ onLogout }: FileExplorerProps) { setPinnedFiles(items); }).catch(console.error); } - }, [pinnedExpanded, pinnedOrder]); + }, [pinnedExpanded, pinnedOrder, pinnedRefreshCounter]); async function handlePinnedDragEnd(sourcePath: string, destPath: string) { const newOrder = [...pinnedOrder]; @@ -608,6 +609,7 @@ export default function FileExplorer({ onLogout }: FileExplorerProps) { async function handlePin(file: FileItem) { await api.togglePin(file.path); loadFiles(undefined, true); + setPinnedRefreshCounter(c => c + 1); } async function handleRename(path: string, originalName: string, isDir: boolean) {