'use client'; import { Button, LoaderSpinner, Modal } from '@akinon/next/components'; import { useAppDispatch, useAppSelector } from '@akinon/next/redux/hooks'; import { setCards, setDeletionModalId, setDeletionModalVisible } from '../redux/reducer'; import { useDeleteSavedCardMutation } from '../redux/api'; import { useState } from 'react'; import { DeletePopupTexts } from '../types'; const defaultTranslations = { title: 'Are you sure you want to delete this card?', delete_button: 'Delete', cancel_button: 'Cancel' }; export interface DeleteConfirmationModalProps { translations?: DeletePopupTexts; } export const DeleteConfirmationModal = ({ translations }: DeleteConfirmationModalProps) => { const [error, setError] = useState(null); const { cards, deletion } = useAppSelector((state) => state.savedCard); const dispatch = useAppDispatch(); const [deleteCard, { isLoading }] = useDeleteSavedCardMutation(); const handleClose = () => { dispatch(setDeletionModalId(null)); dispatch(setDeletionModalVisible(false)); setError(null); }; const handleDelete = async () => { try { await deleteCard(deletion.id).unwrap(); dispatch(setCards(cards.filter((card) => card.id !== deletion.id))); handleClose(); } catch (error) { setError(error.data.detail); } }; return ( dispatch(setDeletionModalVisible(false))} >

{translations?.title ?? defaultTranslations.title}

{error &&

{error}

}
); };