import { request } from '../utilities/http';
export default function initializeFlagUserModal(articleAuthorId) {
const flagUserModalHTML = `
Thanks for keeping DEV safe. Here is what you can do to flag this user:
`;
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();
});
}