dealhub/resources/js/report-deal.js
2026-01-21 19:11:10 +05:30

63 lines
2.1 KiB
JavaScript

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);
})
}
}
});
}