Skip to content

Instantly share code, notes, and snippets.

@donal56
Last active June 12, 2024 04:51
Show Gist options
  • Save donal56/65694e7fc3d38b5424bdf2ad28111ae0 to your computer and use it in GitHub Desktop.
Save donal56/65694e7fc3d38b5424bdf2ad28111ae0 to your computer and use it in GitHub Desktop.
Script to use ajax when turning off alert list notifications and deleting favorites in Mandarake
// ==UserScript==
// @name Custom Mandarake
// @namespace http://tampermonkey.net/
// @version 2024-04-10
// @description Deactivate alerts without the whole page reloading
// @author Doni
// @match https://order.mandarake.co.jp/order/mypage/announceList*
// @match https://order.mandarake.co.jp/order/mypage/favoritesList*
// @icon https://www.google.com/s2/favicons?sz=64&domain=mandarake.co.jp
// @grant none
// ==/UserScript==
(function() {
'use strict';
addAjaxAlertToggle();
addAjaxDeleteFavorite();
})();
function addAjaxAlertToggle() {
var scriptElem = document.createElement('script');
const script =
"function changeMailStateItem(shohinIndex, status) { " +
" " +
" const form = document.getElementById('change_mail_item_form'); " +
" form.shohinIndex.value = shohinIndex; " +
" form.status.value = status; " +
" " +
" if (!(status == 0 || status == 1)) { " +
" return; " +
" } " +
" " +
" const data = new FormData(form); " +
" fetch(form.action, { method: 'POST', body: data }); " +
" " +
" const block = document.querySelector(\"div[data-itemidx='\" + shohinIndex + \"']\"); " +
" const badge = block.querySelector(status == 1 ? '.alert_off' : '.alert_on'); " +
" badge.textContent = status == 1 ? 'Alerts Are On' : 'Alerts Are Off'; " +
" badge.classList.remove(status == 1 ? 'alert_off' : 'alert_on'); " +
" badge.classList.add(status == 1 ? 'alert_on' : 'alert_off'); " +
" " +
" const actionButton = block.querySelector('.mail p:nth-child(2) a:first-child'); " +
" actionButton.textContent = status == 0 ? 'Activate Alerts' : 'Deactivate Alerts'; " +
" const actionHref = 'javascript:changeMailStateItem(\\\'' + shohinIndex + '\\\', ' + (status == 0 ? 1 : 0) + ')'; " +
" actionButton.href = actionHref; " +
"} ";
scriptElem.innerHTML = script;
document.body.appendChild(scriptElem);
}
function addAjaxDeleteFavorite() {
var scriptElem = document.createElement('script');
const script =
"function deleteItem(deleteIndex, target) { " +
" " +
" const form = document.getElementById('delete_form'); " +
" form.deleteIndex.value = deleteIndex; " +
" form.target.value = target; " +
" " +
" const data = new FormData(form); " +
" fetch(form.action, { method: 'POST', body: data }); " +
" " +
" const formulaString = 'javascript:deleteItem(\\\'' + deleteIndex + '\\\', ' + target + ')'; " +
" const caller = document.querySelector('a[href=\"' + formulaString + '\"]'); " +
" caller.parentElement.parentElement.remove(); " +
"} ";
scriptElem.innerHTML = script;
document.body.appendChild(scriptElem);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment