11"use client" ;
22
33import { ChevronRight , Upload } from "lucide-react" ;
4- import { useMemo , useState } from "react " ;
4+ import Link from "next/link " ;
55
66import { Button } from "~/components/ui/button" ;
77import type { files , folders } from "~/server/db/schema" ;
8+
89import { FileRow , FolderRow } from "./file-row" ;
910
1011export default function DriveContents ( props : {
1112 files : ( typeof files . $inferSelect ) [ ] ;
1213 folders : ( typeof folders . $inferSelect ) [ ] ;
14+ parents : ( typeof folders . $inferSelect ) [ ] ;
1315} ) {
14- const [ currentFolder , setCurrentFolder ] = useState ( 1 ) ;
15-
16- const handleFolderClick = ( folderId : number ) => {
17- setCurrentFolder ( folderId ) ;
18- } ;
19-
20- const breadcrumbs = useMemo ( ( ) => {
21- const breadcrumbs = [ ] ;
22- let currentId = currentFolder ;
23-
24- while ( currentId !== 1 ) {
25- const folder = props . folders . find ( ( file ) => file . id === currentId ) ;
26- if ( folder ) {
27- breadcrumbs . unshift ( folder ) ;
28- currentId = folder . parent ?? 1 ;
29- } else {
30- break ;
31- }
32- }
33-
34- return breadcrumbs ;
35- } , [ currentFolder , props . folders ] ) ;
36-
3716 const handleUpload = ( ) => {
3817 alert ( "Upload functionality would be implemented here" ) ;
3918 } ;
@@ -43,23 +22,18 @@ export default function DriveContents(props: {
4322 < div className = "mx-auto max-w-6xl" >
4423 < div className = "mb-6 flex items-center justify-between" >
4524 < div className = "flex items-center" >
46- < Button
47- onClick = { ( ) => setCurrentFolder ( 1 ) }
48- variant = "ghost"
49- className = "mr-2 text-gray-300 hover:text-white"
50- >
25+ < Link href = "/f/1" className = "mr-2 text-gray-300 hover:text-white" >
5126 My Drive
52- </ Button >
53- { breadcrumbs . map ( ( folder ) => (
27+ </ Link >
28+ { props . parents . map ( ( folder ) => (
5429 < div key = { folder . id } className = "flex items-center" >
5530 < ChevronRight className = "mx-2 text-gray-500" size = { 16 } />
56- < Button
57- onClick = { ( ) => handleFolderClick ( folder . id ) }
58- variant = "ghost"
31+ < Link
32+ href = { `/f/${ folder . id } ` }
5933 className = "text-gray-300 hover:text-white"
6034 >
6135 { folder . name }
62- </ Button >
36+ </ Link >
6337 </ div >
6438 ) ) }
6539 </ div >
@@ -81,11 +55,7 @@ export default function DriveContents(props: {
8155 </ div >
8256 < ul >
8357 { props . folders . map ( ( folder ) => (
84- < FolderRow
85- key = { folder . id }
86- folder = { folder }
87- onFolderClick = { ( ) => handleFolderClick ( folder . id ) }
88- />
58+ < FolderRow key = { folder . id } folder = { folder } />
8959 ) ) }
9060 { props . files . map ( ( file ) => (
9161 < FileRow key = { file . id } file = { file } />
0 commit comments