summaryrefslogtreecommitdiff
path: root/frontend/components
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/components')
-rw-r--r--frontend/components/drive/DriveDirectoryClient.tsx34
-rw-r--r--frontend/components/drive/DriveDirectoryView.tsx3
2 files changed, 34 insertions, 3 deletions
diff --git a/frontend/components/drive/DriveDirectoryClient.tsx b/frontend/components/drive/DriveDirectoryClient.tsx
index d238065..330c7a0 100644
--- a/frontend/components/drive/DriveDirectoryClient.tsx
+++ b/frontend/components/drive/DriveDirectoryClient.tsx
@@ -36,6 +36,7 @@ import { formatFileSize } from "@/lib/utils"
36import { DriveMoveDialog } from "./DriveMoveDialog" 36import { DriveMoveDialog } from "./DriveMoveDialog"
37import { StorageUsage } from "./StorageUsage" 37import { StorageUsage } from "./StorageUsage"
38import type { StorageData } from "@/lib/storage" 38import type { StorageData } from "@/lib/storage"
39import type { UserAuth } from "@/lib/auth_types"
39 40
40function formatDate(timestamp: number): string { 41function formatDate(timestamp: number): string {
41 return new Date(timestamp * 1000).toISOString().split('T')[0] 42 return new Date(timestamp * 1000).toISOString().split('T')[0]
@@ -64,9 +65,10 @@ interface DriveDirectoryClientProps {
64 files: DriveLsEntry[] 65 files: DriveLsEntry[]
65 breadcrumbs: Breadcrumb[] 66 breadcrumbs: Breadcrumb[]
66 storageData: StorageData 67 storageData: StorageData
68 userAuth: UserAuth
67} 69}
68 70
69export function DriveDirectoryClient({ path, files, breadcrumbs, storageData }: DriveDirectoryClientProps) { 71export function DriveDirectoryClient({ path, files, breadcrumbs, storageData, userAuth }: DriveDirectoryClientProps) {
70 const [selectedFiles, setSelectedFiles] = useState<Set<string>>(new Set()) 72 const [selectedFiles, setSelectedFiles] = useState<Set<string>>(new Set())
71 const [renameDialogOpen, setRenameDialogOpen] = useState(false) 73 const [renameDialogOpen, setRenameDialogOpen] = useState(false)
72 const [infoDialogOpen, setInfoDialogOpen] = useState(false) 74 const [infoDialogOpen, setInfoDialogOpen] = useState(false)
@@ -414,6 +416,32 @@ export function DriveDirectoryClient({ path, files, breadcrumbs, storageData }:
414 } 416 }
415 } 417 }
416 418
419 const handleUploadButtonClick = () => {
420 if (!userAuth.isLoggedIn) {
421 toast({
422 title: "Authentication required",
423 description: "User is not authenticated. Please log in to upload files.",
424 variant: "destructive"
425 })
426 return
427 }
428
429 fileInputRef.current?.click()
430 }
431
432 const handleCreateFolderButtonClick = () => {
433 if (!userAuth.isLoggedIn) {
434 toast({
435 title: "Authentication required",
436 description: "User is not authenticated. Please log in to create folders.",
437 variant: "destructive"
438 })
439 return
440 }
441
442 setCreateFolderDialogOpen(true)
443 }
444
417 return ( 445 return (
418 <div className="space-y-6"> 446 <div className="space-y-6">
419 {/* Storage Info */} 447 {/* Storage Info */}
@@ -443,14 +471,14 @@ export function DriveDirectoryClient({ path, files, breadcrumbs, storageData }:
443 <div className="flex items-center gap-2 sm:gap-2"> 471 <div className="flex items-center gap-2 sm:gap-2">
444 <Button 472 <Button
445 variant="secondary" 473 variant="secondary"
446 onClick={() => setCreateFolderDialogOpen(true)} 474 onClick={handleCreateFolderButtonClick}
447 className="flex-1 sm:flex-none" 475 className="flex-1 sm:flex-none"
448 > 476 >
449 <FolderPlus className="mr-2 h-4 w-4" /> 477 <FolderPlus className="mr-2 h-4 w-4" />
450 Create Folder 478 Create Folder
451 </Button> 479 </Button>
452 <Button 480 <Button
453 onClick={() => fileInputRef.current?.click()} 481 onClick={handleUploadButtonClick}
454 disabled={uploading} 482 disabled={uploading}
455 className="flex-1 sm:flex-none" 483 className="flex-1 sm:flex-none"
456 > 484 >
diff --git a/frontend/components/drive/DriveDirectoryView.tsx b/frontend/components/drive/DriveDirectoryView.tsx
index de9d70a..b20a111 100644
--- a/frontend/components/drive/DriveDirectoryView.tsx
+++ b/frontend/components/drive/DriveDirectoryView.tsx
@@ -2,6 +2,7 @@ import { DriveLsEntry } from "@/lib/drive_types"
2import { DriveDirectoryClient } from "./DriveDirectoryClient" 2import { DriveDirectoryClient } from "./DriveDirectoryClient"
3import { DriveHeader } from "./DriveHeader" 3import { DriveHeader } from "./DriveHeader"
4import type { StorageData } from "@/lib/storage" 4import type { StorageData } from "@/lib/storage"
5import { Auth_get_user } from "@/lib/auth"
5 6
6interface DriveDirectoryViewProps { 7interface DriveDirectoryViewProps {
7 path: string 8 path: string
@@ -47,6 +48,7 @@ function sortFiles(files: DriveLsEntry[]): DriveLsEntry[] {
47export async function DriveDirectoryView({ path, files, storageData }: DriveDirectoryViewProps) { 48export async function DriveDirectoryView({ path, files, storageData }: DriveDirectoryViewProps) {
48 const sortedFiles = sortFiles(files) 49 const sortedFiles = sortFiles(files)
49 const breadcrumbs = generateBreadcrumbs(path) 50 const breadcrumbs = generateBreadcrumbs(path)
51 const userAuth = await Auth_get_user()
50 52
51 return ( 53 return (
52 <div className="container mx-auto p-6 space-y-6"> 54 <div className="container mx-auto p-6 space-y-6">
@@ -56,6 +58,7 @@ export async function DriveDirectoryView({ path, files, storageData }: DriveDire
56 files={sortedFiles} 58 files={sortedFiles}
57 breadcrumbs={breadcrumbs} 59 breadcrumbs={breadcrumbs}
58 storageData={storageData} 60 storageData={storageData}
61 userAuth={userAuth}
59 /> 62 />
60 </div> 63 </div>
61 ) 64 )