Config_Getter

设置获取配置的APIs

目前为 2023-10-02 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/476522/1258885/Config_Getter.js

// ==UserScript==
// @name        Config_Getter
// @namespace   Violentmonkey Scripts
// @version     0.2
// @unwrap
// @author      axototl
// @description 设置获取配置的APIs
// ==/UserScript==
'use strict';

(() => {
    const _APIs = ["GM_getValue", "GM_setValue", "GM_addValueChangeListener", "GM_registerMenuCommand", "GM_unregisterMenuCommand"];
    for (const val in _APIs)
        if (!(val in globalThis)) throw new Error("需要API权限!!!");
    function getVal(name, def) {
        let t = GM_getValue(name);
        if (null == t) {
            t = def;
            GM_setValue(name, t);
        }
        return t;
    }
    const boolean_prefix = ["❌已禁用", "✅已启用"];
    globalThis.register = ({name, type, prompts, input: func = prompt, listener}) => {
        let val = GM_getValue(name);
        if (type === 'bool') {
            let cont;
            const reg = () => cont = GM_registerMenuCommand(boolean_prefix[val | 0] + prompts, () => GM_setValue(name, !val));
            GM_addValueChangeListener(name, (_1, _2, newval) => {
                val = newval;
                GM_unregisterMenuCommand(cont);
                reg();
                listener(name, newval);
            });
        } else if (type === "other") {
            const cont = GM_registerMenuCommand(prompts, () => GM_setValue(name, func()));
            GM_addValueChangeListener(name, (_1, _2, newval) => listener());
        }
    };
});