import type { OdFolderObject } from '../types' import { FC } from 'react' import emojiRegex from 'emoji-regex' import { useClipboard } from 'use-clipboard-copy' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import Link from 'next/link' import { getBaseUrl } from '../utils/getBaseUrl' import { getFileIcon } from '../utils/getFileIcon' import { humanFileSize, formatModifiedDateTime } from '../utils/fileDetails' import { Downloading, Checkbox } from './FileListing' type OdFolderChildren = OdFolderObject['value'][number] const FileListItem: FC<{ fileContent: OdFolderChildren }> = ({ fileContent: c }) => { const emojiIcon = emojiRegex().exec(c.name) const renderEmoji = emojiIcon && !emojiIcon.index return (
{/*
{c.file ? c.file.mimeType : 'folder'}
*/}
{renderEmoji ? ( {emojiIcon ? emojiIcon[0] : '📁'} ) : ( )}
{renderEmoji ? c.name.replace(emojiIcon ? emojiIcon[0] : '', '').trim() : c.name}
{formatModifiedDateTime(c.lastModifiedDateTime)}
{humanFileSize(c.size)}
) } const FolderListLayout = ({ path, folderChildren, selected, toggleItemSelected, totalSelected, toggleTotalSelected, totalGenerating, handleSelectedDownload, folderGenerating, handleFolderDownload, toast, }) => { const clipboard = useClipboard() return (
Name
Last Modified
Size
Actions
{totalGenerating ? ( ) : ( )}
{folderChildren.map((c: OdFolderChildren) => (
{c.folder ? (
{ clipboard.copy(`${getBaseUrl()}${path === '/' ? '' : path}/${encodeURIComponent(c.name)}`) toast('Copied folder permalink.', { icon: '👌' }) }} > {folderGenerating[c.id] ? ( ) : ( { const p = `${path === '/' ? '' : path}/${encodeURIComponent(c.name)}` handleFolderDownload(p, c.id, c.name)() }} > )}
) : (
{ clipboard.copy( `${getBaseUrl()}/api?path=${path === '/' ? '' : path}/${encodeURIComponent(c.name)}&raw=true` ) toast.success('Copied raw file permalink.') }} >
)}
{!c.folder && !(c.name === '.password') && ( toggleItemSelected(c.id)} title="Select file" /> )}
))}
) } export default FolderListLayout