import { FilesController } from '@/Controllers/FilesController' import { LinkingController } from '@/Controllers/LinkingController' import { classNames } from '@standardnotes/utils' import { formatDateForContextMenu } from '@/Utils/DateUtils' import { getIconForItem } from '@/Utils/Items/Icons/getIconForItem' import { LinkableItem } from '@/Utils/Items/Search/LinkableItem' import { formatSizeToReadableString } from '@standardnotes/filepicker' import { FileItem } from '@standardnotes/snjs' import { KeyboardKey } from '@standardnotes/ui-services' import { useRef, useState } from 'react' import { useApplication } from '../ApplicationView/ApplicationProvider' import { PopoverFileItemActionType } from '../AttachedFilesPopover/PopoverFileItemAction' import Icon from '../Icon/Icon' import MenuItem from '../Menu/MenuItem' import { MenuItemType } from '../Menu/MenuItemType' import Popover from '../Popover/Popover' import HorizontalSeparator from '../Shared/HorizontalSeparator' import LinkedFileMenuOptions from './LinkedFileMenuOptions' import LinkedItemMeta from './LinkedItemMeta' export const LinkedItemsSectionItem = ({ activateItem, item, searchQuery, unlinkItem, handleFileAction, }: { activateItem: LinkingController['activateItem'] item: LinkableItem searchQuery?: string unlinkItem: () => void handleFileAction: FilesController['handleFileAction'] }) => { const menuButtonRef = useRef(null) const application = useApplication() const [isMenuOpen, setIsMenuOpen] = useState(false) const toggleMenu = () => setIsMenuOpen((open) => !open) const [isRenamingFile, setIsRenamingFile] = useState(false) const [icon, className] = getIconForItem(item, application) const title = item.title ?? '' const renameFile = async (name: string) => { if (!(item instanceof FileItem)) { return } await handleFileAction({ type: PopoverFileItemActionType.RenameFile, payload: { file: item, name: name, }, }) setIsRenamingFile(false) } return (
{isRenamingFile && item instanceof FileItem ? (
{ if (event.key === KeyboardKey.Escape) { setIsRenamingFile(false) } else if (event.key === KeyboardKey.Enter) { const newTitle = event.currentTarget.value void renameFile(newTitle) } }} ref={(node) => { if (node) { node.focus() } }} />
) : ( )} { unlinkItem() toggleMenu() }} > Unlink {item instanceof FileItem && ( )}
Created at: {formatDateForContextMenu(item.created_at)}
Modified at: {formatDateForContextMenu(item.userModifiedDate)}
ID: {item.uuid}
{item instanceof FileItem && (
Size: {formatSizeToReadableString(item.decryptedSize)}
)}
) }