import {closeModal, showModal} from './modal.js'; import {showToast} from './toast.js'; const reportModal = document.getElementById('report-modal'); const reportForm = document.getElementById('report-form'); export function showReportModal(dealId, dealTitle) { // Clear the fields reportForm.reset(); const oldErrors = reportForm.querySelectorAll('.text-red-500'); oldErrors.forEach(error => error.remove()); reportModal.dataset.dealId = dealId; const reportModalTitle = document.getElementById('report-modal-title'); const reportModalId = document.getElementById('report-modal-id'); reportModalTitle.innerText = dealTitle; reportModalId.innerText = dealId; showModal('report-modal'); } if (reportForm) { reportForm.addEventListener('submit', async function (form) { form.preventDefault(); const formData = new FormData(this); const dealId = reportModal.dataset.dealId try { let response = await axios.post( `report/${dealId}`, formData ); showToast('Report submitted. Thank you for keeping DealHub safe!'); closeModal('report-modal') } catch (error) { if (error.response.status === 405) { closeModal('report-modal'); showToast('You already have reported this deal !'); return; } // Iterate over the all error messages spans and show validation errors if (error.response.status === 422) { let errors = error.response.data.errors; Object.keys(errors).forEach(error => { let errorField = reportForm.querySelector(`[name="${error}"]`) const errorSpan = document.createElement('span'); errorSpan.textContent = errors[error][0]; errorSpan.classList.add('text-red-500'); errorSpan.classList.add('text-sm'); errorField.insertAdjacentElement('afterend', errorSpan); }) } } }); }