import { FileItem } from '@standardnotes/snjs' import { observer } from 'mobx-react-lite' import { FunctionComponent, useCallback } from 'react' import { getFileIconComponent } from '../AttachedFilesPopover/getFileIconComponent' import ListItemConflictIndicator from './ListItemConflictIndicator' import ListItemFlagIcons from './ListItemFlagIcons' import ListItemTags from './ListItemTags' import ListItemMetadata from './ListItemMetadata' import { DisplayableListItemProps } from './Types/DisplayableListItemProps' const FileListItem: FunctionComponent = ({ application, viewControllerManager, hideDate, hideIcon, hideTags, item, selected, sortBy, tags, }) => { const openFileContextMenu = useCallback( (posX: number, posY: number) => { viewControllerManager.filesController.setFileContextMenuLocation({ x: posX, y: posY, }) viewControllerManager.filesController.setShowFileContextMenu(true) }, [viewControllerManager.filesController], ) const openContextMenu = useCallback( async (posX: number, posY: number) => { const { didSelect } = await viewControllerManager.selectionController.selectItem(item.uuid) if (didSelect) { openFileContextMenu(posX, posY) } }, [viewControllerManager.selectionController, item.uuid, openFileContextMenu], ) const onClick = useCallback(() => { void viewControllerManager.selectionController.selectItem(item.uuid, true).then(({ didSelect }) => { if (didSelect && viewControllerManager.selectionController.selectedItemsCount < 2) { viewControllerManager.filePreviewModalController.activate( item as FileItem, viewControllerManager.filesController.allFiles, ) } }) }, [ viewControllerManager.filePreviewModalController, viewControllerManager.filesController.allFiles, viewControllerManager.selectionController, item, ]) const IconComponent = () => getFileIconComponent( application.iconsController.getIconForFileType((item as FileItem).mimeType), 'w-5 h-5 flex-shrink-0', ) return (
{ event.preventDefault() void openContextMenu(event.clientX, event.clientY) }} > {!hideIcon ? (
) : (
)}
{item.title}
) } export default observer(FileListItem)