// Messages - Delete message functionality

import type { ApiResponse } from '../types/api/ApiResponse';

interface MessagePageElement extends HTMLElement {
    dataset: {
        messageId?: string;
        redirectPath?: string;
    };
}

declare global {
    interface Window {
        deleteMessage: (id?: string) => void;
    }
}

// Delete message (used in index with parameter)
window.deleteMessage = function(id?: string): void {
    if (!confirm('Êtes-vous sûr de vouloir supprimer ce message ?')) return;

    // If no id provided, try to get from page context (show page)
    if (!id) {
        const messagesPage = document.querySelector<MessagePageElement>('[data-message-id]');
        id = messagesPage?.dataset.messageId;
    }

    if (!id) {
        alert('ID du message introuvable');
        return;
    }

    fetch(`/api/admin/messages/${id}`, {
        method: 'POST',
        headers: { 'X-HTTP-METHOD-OVERRIDE': 'DELETE' }
    })
    .then(response => response.json())
    .then((data: ApiResponse) => {
        if (data.success) {
            // On show page, redirect to index
            const messagesPage = document.querySelector<MessagePageElement>('[data-message-id]');
            if (messagesPage) {
                const redirectPath = messagesPage.dataset.redirectPath || '/admin/messages';
                window.location.href = redirectPath;
            } else {
                // On index page, reload
                location.reload();
            }
        } else {
            alert('Erreur lors de la suppression');
        }
    });
};
