// islands/DeleteTenantInviteButton.tsx import { useState } from "preact/hooks"; interface DeleteTenantInviteButtonProps { inviteId: string; propertyAddress?: string; invitedEmails?: string[]; } export default function DeleteTenantInviteButton({ inviteId, propertyAddress, invitedEmails }: DeleteTenantInviteButtonProps) { const [isDeleting, setIsDeleting] = useState(false); const handleDelete = async () => { const propertyInfo = propertyAddress ? `"${propertyAddress}"` : "this property"; const emailCount = invitedEmails?.length || 0; const emailInfo = emailCount > 0 ? ` with ${emailCount} invited email${emailCount > 1 ? 's' : ''}` : ""; const confirmed = confirm( `Are you sure you want to delete the tenant invite for ${propertyInfo}${emailInfo}? This action cannot be undone.` ); if (!confirmed) return; setIsDeleting(true); try { const formData = new FormData(); formData.append('invite_id', inviteId); formData.append('sender', globalThis.location.pathname); const response = await fetch('/api/delete/tenant_invite', { method: 'POST', body: formData }); if (response.redirected) { globalThis.location.href = response.url; } else if (response.ok) { globalThis.location.reload(); } else { alert('Failed to delete tenant invite. Please try again.'); } } catch (_error) { alert('Error deleting tenant invite'); } finally { setIsDeleting(false); } }; return ( ); }