import { request } from '../utilities/http'; export default function initializeFlagUserModal(articleAuthorId) { const flagUserModalHTML = `

Flag User

Thanks for keeping DEV safe. Here is what you can do to flag this user:
Report other inappropriate conduct
`; const toggleFlagUserModal = () => { const modalContainer = document.querySelector('.flag-user-modal-container'); modalContainer.classList.toggle('hidden'); if (!modalContainer.classList.contains('hidden')) { window.scrollTo(0, 0); document.querySelector('body').style.height = '100vh'; document.querySelector('body').style.overflowY = 'hidden'; } else { document.querySelector('body').style.height = 'inherit'; document.querySelector('body').style.overflowY = 'inherit'; } }; const modContainer = document.getElementById('mod-container'); document.querySelector( '.flag-user-modal-container', ).innerHTML = flagUserModalHTML; modContainer.addEventListener('load', () => { modContainer.contentWindow.document .getElementById('open-flag-user-modal') .addEventListener('click', toggleFlagUserModal); }); // Event listeners to Close the Modal const closeModalElements = Array.from( document.querySelectorAll( '.crayons-modal__overlay, .modal-header-close-icon, #cancel-flag-user-action', ), ); closeModalElements.forEach((element) => { element.addEventListener('click', toggleFlagUserModal); }); document .getElementById('confirm-flag-user-action') .addEventListener('click', async (e) => { e.preventDefault(); const vomitAllOption = document.getElementById('vomit-all'); if (vomitAllOption.checked) { const body = JSON.stringify({ reactable_type: vomitAllOption.dataset.reactableType, category: vomitAllOption.dataset.category, reactable_id: vomitAllOption.dataset.reactableId, }); try { const response = await request('/reactions', { method: 'POST', body, }); const outcome = await response.json(); if (outcome.result === 'create') { // eslint-disable-next-line no-restricted-globals top.addSnackbarItem({ message: 'All posts by this author will be less visible.', addCloseButton: true, }); } else if (outcome.result === null) { // eslint-disable-next-line no-restricted-globals top.addSnackbarItem({ message: "It seems you've already reduced the vibilsity of this author's posts.", addCloseButton: true, }); } else { // eslint-disable-next-line no-restricted-globals top.addSnackbarItem({ message: `Response from server: ${JSON.stringify(outcome)}`, addCloseButton: true, }); } } catch (error) { // eslint-disable-next-line no-restricted-globals top.addSnackbarItem({ message: error, addCloseButton: true }); } } else { // eslint-disable-next-line no-restricted-globals top.addSnackbarItem({ message: 'No selection made!', addCloseButton: true, }); } toggleFlagUserModal(); }); }