40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
/**
|
|
* @package Joomla.Plugin
|
|
* @subpackage Quickicon.eos
|
|
* @copyright (C) 2023 Open Source Matters, Inc. <https://www.joomla.org>
|
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
|
*/
|
|
if (!Joomla) {
|
|
throw new Error('Joomla API is not properly initialised');
|
|
}
|
|
const url = new URL(`${Joomla.getOptions('system.paths').baseFull}index.php?option=com_ajax&group=quickicon&plugin=eos&format=json`);
|
|
async function onMutatedMessagesContainer(mutationList, observer) {
|
|
// eslint-disable-next-line no-restricted-syntax
|
|
for (const mutation of mutationList) {
|
|
const nodes = Array.from(mutation.addedNodes);
|
|
if (!nodes.length) {
|
|
return;
|
|
}
|
|
const alerts = nodes.filter(node => node.querySelector('.eosnotify-snooze-btn'));
|
|
if (!alerts.length) {
|
|
return;
|
|
}
|
|
observer.disconnect();
|
|
alerts[0].querySelector('.eosnotify-snooze-btn').addEventListener('click', () => fetch(url, {
|
|
headers: {
|
|
'X-CSRF-Token': Joomla.getOptions('csrf.token') || ''
|
|
}
|
|
}).then(response => {
|
|
if (response.ok) {
|
|
alerts[0].closest('joomla-alert').close();
|
|
}
|
|
}));
|
|
}
|
|
}
|
|
const observer = new MutationObserver(onMutatedMessagesContainer);
|
|
observer.observe(document.querySelector('#system-message-container'), {
|
|
attributes: false,
|
|
childList: true,
|
|
subtree: true
|
|
});
|