import { FC, useState } from 'react'; import { Button } from '@mui/material'; import { Delete, Undo } from '@mui/icons-material'; import { DELETE_FEATURE, UPDATE_FEATURE, } from 'component/providers/AccessProvider/permissions'; import { PermissionHOC } from 'component/common/PermissionHOC/PermissionHOC'; import useProjectApi from 'hooks/api/actions/useProjectApi/useProjectApi'; import { formatUnknownError } from 'utils/formatUnknownError'; import { useFeaturesArchive } from 'hooks/api/getters/useFeaturesArchive/useFeaturesArchive'; import useToast from 'hooks/useToast'; import { ArchivedFeatureDeleteConfirm } from './ArchivedFeatureActionCell/ArchivedFeatureDeleteConfirm/ArchivedFeatureDeleteConfirm'; import { usePlausibleTracker } from 'hooks/usePlausibleTracker'; interface IArchiveBatchActionsProps { selectedIds: string[]; projectId: string; } export const ArchiveBatchActions: FC = ({ selectedIds, projectId, }) => { const { reviveFeatures } = useProjectApi(); const { setToastData, setToastApiError } = useToast(); const { refetchArchived } = useFeaturesArchive(projectId); const [deleteModalOpen, setDeleteModalOpen] = useState(false); const { trackEvent } = usePlausibleTracker(); const onRevive = async () => { try { await reviveFeatures(projectId, selectedIds); await refetchArchived(); setToastData({ type: 'success', title: "And we're back!", text: 'The feature toggles have been revived.', }); trackEvent('batch_operations', { props: { eventType: 'features revived', }, }); } catch (error: unknown) { setToastApiError(formatUnknownError(error)); } }; const onDelete = async () => { setDeleteModalOpen(true); }; return ( <> {({ hasAccess }) => ( )} {({ hasAccess }) => ( )} { refetchArchived(); trackEvent('batch_operations', { props: { eventType: 'features deleted', }, }); }} /> ); };