Paid for things

New pips!

目前為 2023-04-28 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Paid for things
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  New pips!
// @author       tharglet
// @match        https://myfigurecollection.net/users.v4.php?*mode=view&*tab=collection&*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=myfigurecollection.net
// @grant        GM_addStyle
// @grant GM_setValue
// @grant GM_getValue
// ==/UserScript==

//Polyfill for GM_addStyle for Greasemonkey...
if(typeof GM_addStyle == 'undefined') {
    GM_addStyle = (aCss) => {
        'use strict';
        let head = document.getElementsByTagName('head')[0];
        if (head) {
            let style = document.createElement('style');
            style.setAttribute('type', 'text/css');
            style.textContent = aCss;
            head.appendChild(style);
            return style;
        }
        return null;
    };
}

GM_addStyle(`
.item-is-paid {
    display: block;
    position: absolute;
    right: 1px;
    bottom: 1px;
    height: 16px;
    padding: 1px 2px 2px 3px;
    line-height: 16px;
    background-color: green;
    color: white;
}

.item-is-shipped {
    display: block;
    position: absolute;
    right: 1px;
    bottom: 1px;
    height: 16px;
    padding: 1px 2px 2px 3px;
    line-height: 16px;
    background-color: gold;
    color: white;
}

.icon-dollar:before {
    font-family: serif !important;
    content: "$";
    font-weight: bolder !important;
}

.icon-plane:before {
    font-family: serif !important;
    content: "🛩️";
    font-weight: bolder !important;
}
`);

(async function() {
    'use strict';
    const paidItems = [];
    const shippedItems = [];
    const parser = new DOMParser();
    await fetch('/manager.v4.php?mode=collection&page=1&tab=ordered&current=keywords&output=sheet&isPaid=1').then((response) => {
        return response.text();
    }).then((html) => {
        const doc = parser.parseFromString(html, 'text/html');
        const items = doc.querySelectorAll('.cell-0u a');
        if(items) {
            items.forEach((item) => {
                paidItems.push(item.getAttribute('href'));
            });
        }
    }).catch(function (err) {
        console.warn('Something went wrong.', err);
    });
    await fetch('/manager.v4.php?mode=collection&page=1&tab=ordered&current=keywords&output=sheet&isShipped=1').then((response) => {
        return response.text();
    }).then((html) => {
        const doc = parser.parseFromString(html, 'text/html');
        const items = doc.querySelectorAll('.cell-0u a');
        if(items) {
            items.forEach((item) => {
                shippedItems.push(item.getAttribute('href'));
            });
        }
    }).catch(function (err) {
        console.warn('Something went wrong.', err);
    });
    const itemIcons = document.querySelectorAll('.item-icon a');
    console.log(paidItems);
    itemIcons.forEach((item) => {
        if(shippedItems.includes(item.getAttribute('href'))) {
            const shippedPipContainer = document.createElement('span');
            shippedPipContainer.classList.add('item-is-shipped');
            const shippedPip = document.createElement('span');
            shippedPip.classList.add('tiny-icon-only', 'icon-plane');
            shippedPipContainer.appendChild(shippedPip);
            item.appendChild(shippedPipContainer);
        } else if(paidItems.includes(item.getAttribute('href'))) {
            const paidPipContainer = document.createElement('span');
            paidPipContainer.classList.add('item-is-paid');
            const paidPip = document.createElement('span');
            paidPip.classList.add('tiny-icon-only', 'icon-dollar');
            paidPipContainer.appendChild(paidPip);
            item.appendChild(paidPipContainer);
        }
    });
})();