import { isDesktop } from '@affine/env/constant'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { DeletePermanentlyIcon, FavoritedIcon, FavoriteIcon, MoreVerticalIcon, OpenInNewIcon, ResetIcon, } from '@blocksuite/icons'; import { IconButton } from '@toeverything/components/button'; import { useState } from 'react'; import { Confirm, FlexWrapper, Menu, MenuItem, Tooltip } from '../../..'; import { DisablePublicSharing, MoveToTrash } from './operation-menu-items'; export interface OperationCellProps { title: string; favorite: boolean; isPublic: boolean; onOpenPageInNewTab: () => void; onToggleFavoritePage: () => void; onRemoveToTrash: () => void; onDisablePublicSharing: () => void; } export const OperationCell = ({ title, favorite, isPublic, onOpenPageInNewTab, onToggleFavoritePage, onRemoveToTrash, onDisablePublicSharing, }: OperationCellProps) => { const t = useAFFiNEI18N(); const [open, setOpen] = useState(false); const [openDisableShared, setOpenDisableShared] = useState(false); const OperationMenu = ( <> {isPublic && ( { setOpenDisableShared(true); }} /> )} ) : ( ) } > {favorite ? t['Remove from favorites']() : t['Add to Favorites']()} {!isDesktop && ( }> {t['Open in new tab']()} )} { setOpen(true); }} /> ); return ( <> { onRemoveToTrash(); setOpen(false); }} onClose={() => { setOpen(false); }} onCancel={() => { setOpen(false); }} /> { setOpenDisableShared(false); }} /> ); }; export interface TrashOperationCellProps { onPermanentlyDeletePage: () => void; onRestorePage: () => void; onOpenPage: () => void; } export const TrashOperationCell = ({ onPermanentlyDeletePage, onRestorePage, }: TrashOperationCellProps) => { const t = useAFFiNEI18N(); const [open, setOpen] = useState(false); return ( { onRestorePage(); }} > { setOpen(true); }} > { onPermanentlyDeletePage(); setOpen(false); }} onClose={() => { setOpen(false); }} onCancel={() => { setOpen(false); }} /> ); };