"use client" import { useMemo } from "react" import { DriveGridCard } from "@/components/drive/drive-grid-card" import { DriveFolderGridCard } from "@/components/drive/drive-folder-grid-card" import type { DriveFileInfo } from "@/lib/api/types" import type { useDriveMutations } from "@/lib/api/hooks/use-drive-queries" import type { PublicShareThumbContext } from "@/lib/api/hooks/use-public-share-preview-thumb" import { useDriveSettingsStore } from "@/lib/stores/drive-settings-store" import { useDriveUIStore } from "@/lib/stores/drive-ui-store" import { DRIVE_CARD_PAD_X } from "@/lib/drive/drive-chrome-classes" import { cn } from "@/lib/utils" const DRIVE_GRID_COLS = "grid w-full grid-cols-2 gap-3 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-6" const DRIVE_GRID_SECTION_GAP = "mb-6" export function DriveGridView({ items, isTrash, inSharedView, allowShare = true, writable = true, hideFavorite = false, disableDnd = false, mutations, onDownloadItem, gridClassName, publicShare, onOpen, onItemClick, }: { items: DriveFileInfo[] isTrash?: boolean inSharedView?: boolean allowShare?: boolean writable?: boolean hideFavorite?: boolean disableDnd?: boolean mutations?: ReturnType onDownloadItem?: (file: DriveFileInfo) => void gridClassName?: string publicShare?: PublicShareThumbContext onOpen: (file: DriveFileInfo) => void onItemClick: (file: DriveFileInfo, e: React.MouseEvent) => void }) { const folderPlacement = useDriveSettingsStore((s) => s.folderPlacement) const folders = useMemo(() => items.filter((f) => f.type === "directory"), [items]) const files = useMemo(() => items.filter((f) => f.type !== "directory"), [items]) const gridItems = useMemo(() => items, [items]) const mixedLayout = folderPlacement === "mixed" const selectedPaths = useDriveUIStore((s) => s.selectedPaths) const sharedCardProps = { writable, hideFavorite, disableDnd, mutations, onDownloadItem, publicShare, } return (
{mixedLayout ? (
{items.map((item) => ( onOpen(item)} onItemClick={onItemClick} /> ))}
) : ( <> {folders.length > 0 ? (
{folders.map((folder) => ( onOpen(folder)} onItemClick={onItemClick} /> ))}
) : null} {files.length > 0 ? (
{files.map((file) => ( onOpen(file)} onItemClick={onItemClick} /> ))}
) : null} )}
) }