设置获取配置的APIs
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/476522/1258942/Config_Getter.js
// ==UserScript==
// @name Config_Getter
// @namespace Violentmonkey Scripts
// @grant unsafeWindow
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_addValueChangeListener
// @grant GM_registerMenuCommand
// @grant GM_unregisterMenuCommand
// @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 = ["❌已禁用", "✅已启用"];
let register = ({name, type, prompts, input: func = prompt, listener = Function.prototype}) => {
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());
}
};
globalThis.register = register;
})();