Greasy Fork is available in English.

AmiAmi Stock Levels

Display stock level on AmiAmi product pages

Versión del día 11/3/2021. Echa un vistazo a la versión más reciente.

// ==UserScript==
// @name         AmiAmi Stock Levels
// @namespace    https://tharglet.me.uk/
// @version      1.1
// @description  Display stock level on AmiAmi product pages
// @author       tharglet
// @match        https://www.amiami.com/eng/*
// @require      http://code.jquery.com/jquery-2.1.3.min.js
// @grant        GM.xmlHttpRequest
// @grant        GM_xmlhttpRequest
// ==/UserScript==

(function() {
    'use strict';
    $().ready(() => {
        let GM_XML;
        if(typeof GM_xmlhttpRequest === 'undefined') {
            GM_XML = GM.xmlHttpRequest;
        } else {
            GM_XML = GM_xmlhttpRequest;
        }
        let oldHref = '';
        new MutationObserver(function(mutations) {
            if(oldHref != window.location.href) {
                $('.aasl-stock-available').remove();
                oldHref = window.location.href;
                if(oldHref.includes('scode') || oldHref.includes('gcode')) {
                    const queryString = window.location.search;
                    const urlParams = new URLSearchParams(queryString);
                    const itemCode = urlParams.get('scode') || urlParams.get('gcode');
                    const xhr = new XMLHttpRequest();
                    xhr.open('GET', `https://api.amiami.com/api/v1.0/item?lang=eng&scode=${itemCode}`, true);
                    xhr.setRequestHeader('x-user-key', 'amiami_dev');
                    xhr.onreadystatechange = () => {
                        if(xhr.readyState === XMLHttpRequest.DONE) {
                            var status = xhr.status;
                            if (status === 0 || (status >= 200 && status < 400)) {
                                const itemMetadata = JSON.parse(xhr.responseText);
                                const stockAvailable = itemMetadata.item.stock;
                                $('.item-detail__section-title').after(`<p class='item-detail__jpn aasl-stock-available'>Stock available: ${stockAvailable}</p>`);
                            } else {
                                console.log('error');
                            }
                        }
                    };
                    xhr.send();
                }
            }
        }).observe(
            document.querySelector('title'),
            { subtree: true, characterData: true, childList: true }
        );
    });
})();