import { FilesBucket as FilesBucketIcon } from 'icons' import { AlertCircle, File, Film, FolderOpen, Image, LoaderCircle, Music } from 'lucide-react' import type { CSSProperties, MouseEvent } from 'react' import { Checkbox, cn, Tooltip, TooltipContent, TooltipTrigger } from 'ui' import { STORAGE_ROW_STATUS, STORAGE_ROW_TYPES, STORAGE_VIEWS } from '../Storage.constants' import { type StorageItem } from '../Storage.types' import { formatBytes } from '@/lib/helpers' const RowIcon = ({ view, status, fileType, isOpened = false, mimeType, }: { view: STORAGE_VIEWS status: STORAGE_ROW_STATUS fileType: string isOpened?: boolean mimeType: string | undefined }) => { if (view === STORAGE_VIEWS.LIST && status === STORAGE_ROW_STATUS.LOADING) { return ( ) } if (fileType === STORAGE_ROW_TYPES.FOLDER) { return isOpened ? ( ) : ( ) } if (mimeType?.includes('image')) { return } if (mimeType?.includes('audio')) { return } if (mimeType?.includes('video')) { return } return } interface BucketFilePickerRowProps { item: StorageItem view: STORAGE_VIEWS isSelected: boolean isPreviewed: boolean isOpened: boolean isDisabled?: boolean hideCheckbox: boolean onCheck: (isShiftKeyHeld: boolean) => void onClick?: (event: MouseEvent) => void style?: CSSProperties } export const BucketFilePickerRow = ({ item, view = STORAGE_VIEWS.COLUMNS, onCheck, onClick, isSelected, isPreviewed, isOpened, isDisabled = false, hideCheckbox, style, }: BucketFilePickerRowProps) => { const size = item.metadata ? formatBytes(item.metadata.size) : '-' const mimeType = item.metadata ? item.metadata.mimetype : '-' const createdAt = item.created_at ? new Date(item.created_at).toLocaleString() : '-' const updatedAt = item.updated_at ? new Date(item.updated_at).toLocaleString() : '-' const nameWidth = view === STORAGE_VIEWS.LIST && item.isCorrupted ? `calc(100% - 60px)` : view === STORAGE_VIEWS.LIST && !item.isCorrupted ? `calc(100% - 50px)` : '100%' return (
event.stopPropagation()}>
{!hideCheckbox && ( { event.stopPropagation() onCheck((event.nativeEvent as KeyboardEvent).shiftKey) }} /> )}

{item.name}

{item.isCorrupted && ( File is corrupted, please delete and reupload again. )}
{view === STORAGE_VIEWS.LIST && ( <>

{size}

{mimeType}

{createdAt}

{updatedAt}

)}
// Stops click event from this div, to resolve an issue with menu item's click event triggering unexpected row select event.stopPropagation() } > {item.status === STORAGE_ROW_STATUS.LOADING && ( )}
) }