import {useContext} from 'react'; import {ShowConfirmModalContext} from '@givewp/components/ListTable/ListTablePage'; import {__, sprintf} from '@wordpress/i18n'; import RowAction from '@givewp/components/ListTable/RowAction'; import { useSWRConfig } from 'swr'; /** * @since 4.12.0 Revert delete action to use Donation Actions API and add trash and restore actions. * @since 4.6.0 Soft delete donations with Donation v3 API. */ export const DonationRowActions = ({item, removeRow, setUpdateErrors, parameters, listTableApi}) => { const showConfirmModal = useContext(ShowConfirmModalContext); const {mutate} = useSWRConfig(); const fetchAndUpdateErrors = async (parameters, endpoint, id, method) => { const response = await listTableApi.fetchWithArgs(endpoint, {ids: [id]}, method); setUpdateErrors(response); await mutate(parameters); return response; }; const deleteItem = async () => await fetchAndUpdateErrors(parameters, '/delete', item.id, 'DELETE'); const trashItem = async () => await fetchAndUpdateErrors(parameters, '/trash', item.id, 'DELETE'); const restoreItem = async () => await fetchAndUpdateErrors(parameters, '/untrash', item.id, 'POST'); const confirmDelete = () =>
{sprintf(__('Really delete donation #%d?', 'give'), item.id)}
; const confirmTrash = () =>{sprintf(__('Trash the following donation #%d?', 'give'), item.id)}
; const confirmRestore = () =>{sprintf(__('Restore the following donation #%d?', 'give'), item.id)}
; const confirmDeleteModal = () => { showConfirmModal(__('Delete', 'give'), confirmDelete, deleteItem, 'danger'); }; const confirmTrashModal = () => { showConfirmModal(__('Trash', 'give'), confirmTrash, trashItem, 'warning'); }; const confirmRestoreModal = () => { showConfirmModal(__('Restore', 'give'), confirmRestore, restoreItem, 'normal'); }; return ( <> {parameters?.status?.includes('trash') ? ( <>