import { FlexWrapper, IconButton, Menu, MenuItem, Tooltip, } from '@affine/component'; import { toast } from '@affine/component'; import { useTranslation } from '@affine/i18n'; import { PageMeta } from '@affine/store'; import { DeleteForeverIcon, FavouritedIcon, FavouritesIcon, MoreVerticalIcon, OpenInNewIcon, RestoreIcon, TrashIcon, } from '@blocksuite/icons'; import { usePageHelper } from '@/hooks/use-page-helper'; import { useConfirm } from '@/providers/ConfirmProvider'; export const OperationCell = ({ pageMeta }: { pageMeta: PageMeta }) => { const { id, favorite } = pageMeta; const { openPage } = usePageHelper(); const { toggleFavoritePage, toggleDeletePage } = usePageHelper(); const confirm = useConfirm(store => store.confirm); const { t } = useTranslation(); const OperationMenu = ( <> { toggleFavoritePage(id); toast( favorite ? t('Removed from Favorites') : t('Added to Favorites') ); }} icon={favorite ? : } > {favorite ? t('Remove from favorites') : t('Add to favorites')} { openPage(id, {}, true); }} icon={} > {t('Open in new tab')} { confirm({ title: t('Delete page?'), content: t('will be moved to Trash', { title: pageMeta.title || 'Untitled', }), confirmText: t('Delete'), confirmType: 'danger', }).then(confirm => { confirm && toggleDeletePage(id); confirm && toast(t('Moved to Trash')); }); }} icon={} > {t('Delete')} ); return ( ); }; export const TrashOperationCell = ({ pageMeta }: { pageMeta: PageMeta }) => { const { id } = pageMeta; const { openPage, getPageMeta } = usePageHelper(); const { toggleDeletePage, permanentlyDeletePage } = usePageHelper(); const confirm = useConfirm(store => store.confirm); const { t } = useTranslation(); return ( { toggleDeletePage(id); toast( t('restored', { title: getPageMeta(id)?.title || 'Untitled' }) ); openPage(id); }} > { confirm({ title: t('Delete permanently?'), content: t("Once deleted, you can't undo this action."), confirmText: t('Delete'), confirmType: 'danger', }).then(confirm => { confirm && permanentlyDeletePage(id); toast(t('Permanently deleted')); }); }} > ); };