import capitalize from "../../utils/capitalize"; import moment from "moment"; import React, { useMemo, useRef } from "react"; import ContextMenu from "../ContextMenu"; import mobilecheck from "../../utils/mobileCheck"; import { useContextMenu } from "../../hooks/contextMenu"; import { useDispatch, useSelector } from "react-redux"; import classNames from "classnames"; import { useThumbnail } from "../../hooks/files"; import { getFileColor, getFileExtension } from "../../utils/files"; import { startSetSelectedItem } from "../../actions/selectedItem"; import { setPopupFile } from "../../actions/popupFile"; const FileItem = (props) => { const { file } = props; const currentSelectedItem = useSelector( (state) => state.selectedItem.selected ); const listView = useSelector((state) => state.filter.listView); const { image, hasThumbnail, imageOnError } = useThumbnail( file.metadata.hasThumbnail, file.metadata.thumbnailID ); const dispatch = useDispatch(); const lastSelected = useRef(0); const { onContextMenu, closeContextMenu, onTouchStart, onTouchMove, onTouchEnd, clickStopPropagation, ...contextMenuState } = useContextMenu(); const fileExtension = useMemo( () => getFileExtension(file.filename, listView ? 3 : 4), [file.filename] ); const imageColor = useMemo( () => getFileColor(file.filename), [file.filename] ); const elementSelected = useMemo( () => file._id === currentSelectedItem, [file._id, currentSelectedItem] ); const fileClick = () => { const currentDate = Date.now(); if (!elementSelected) { dispatch(startSetSelectedItem(file._id, true, false)); } const isMobile = mobilecheck(); if (isMobile || currentDate - lastSelected.current < 1500) { dispatch(setPopupFile({ showPopup: true, ...file })); } lastSelected.current = Date.now(); }; if (listView) { return ( {/* */}
{fileExtension}

{props.file.filename}

{props.file.metadata.drive ? "Google Drive" : props.file.metadata.personalFile ? "Amazon S3" : "myDrive"} {moment(props.uploadDate).format("L")}
{/* */}
); } else { return (
{contextMenuState.selected && (
)}
{hasThumbnail ? ( ) : ( )} {!hasThumbnail && (

{fileExtension}

)}

{capitalize(file.filename)}

Created {moment(file.uploadDate).format("MM/DD/YY hh:mma")}
); } }; export default FileItem;