import React, { useState } from 'react'; import type { ManualCompetitor } from '../../service/visibility/visibility.interface'; import { removeTrackedCompetitor } from '../../service/visibility/visibility.service'; import Modal from './Modal'; interface ConfirmRemoveCompetitorModalProps { open: boolean; competitor: ManualCompetitor | null; onClose: () => void; onRemoved: (competitors: ManualCompetitor[]) => void; clientId: string; token: string; brandId: string; } /** * Confirm dialog for "Stop tracking" a manually added competitor. */ const ConfirmRemoveCompetitorModal = ({ open, competitor, onClose, onRemoved, clientId, token, brandId, }: ConfirmRemoveCompetitorModalProps): JSX.Element => { const [submitting, setSubmitting] = useState(false); const [error, setError] = useState(null); const handleConfirm = async () => { if (!competitor) return; setSubmitting(true); setError(null); try { const response = await removeTrackedCompetitor( clientId, token, brandId, competitor.domain ); onRemoved(response.competitors); onClose(); } catch (err) { setError( err instanceof Error ? err.message : 'Failed to remove competitor.' ); } finally { setSubmitting(false); } }; return ( } >
{error && (
{error}
)} {competitor && (

We'll stop including{' '} {competitor.name || competitor.domain} {' '} in the weekly leaderboard. You can add it back at any time.

)}
); }; export default ConfirmRemoveCompetitorModal;