61 lines
2.0 KiB
JavaScript
61 lines
2.0 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');
|
|
|
|
|
|
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');
|
|
}
|
|
|
|
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);
|
|
})
|
|
}
|
|
}
|
|
});
|
|
|
|
document.showReportModal = showReportModal;
|