mirror of
https://github.com/stashapp/CommunityScripts.git
synced 2026-04-12 18:57:14 -05:00
Replace StashUserscriptLibrary (#319)
* replace SUL in VideoScrollWheel * rewrite stats to use cs-ui-lib - reused and simplified GQL queries * rewrite sceneCoverCropper to use cs-ui-lib * update discordPrescence to use cs-ui-lib - add websocket liveliness check - add video playback hooks * make stash-realbooru use cs-ui-lib * deprecated by https://github.com/7dJx1qP/stash-plugins/tree/main/plugins/stashBatchResultToggle * add cs-ui-lib to stashAI, applied some fixes to realbooru * update Visage to use cs-ui-lib * update themeSwitch to use cs-ui-lib * remove userscript lib --------- Co-authored-by: feederbox826 <feederbox826@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
name: CommunityScriptsUILibrary
|
||||
description: CommunityScripts UI helper library
|
||||
version: 1.0.0
|
||||
ui:
|
||||
javascript:
|
||||
- cs-ui-lib.js
|
||||
49
plugins/CommunityScriptsUILibrary/cs-ui-lib.js
Normal file
49
plugins/CommunityScriptsUILibrary/cs-ui-lib.js
Normal file
@@ -0,0 +1,49 @@
|
||||
// CommunityScripts UI Library
|
||||
// cs-ui-lib.js
|
||||
(function () {
|
||||
// get base URL for graphQL queries
|
||||
const baseURL = document.querySelector("base")?.getAttribute("href") ?? "/";
|
||||
|
||||
// call GQL query, returns data without `data` wrapper
|
||||
const callGQL = (reqData) =>
|
||||
fetch(`${baseURL}graphql`, {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify(reqData),
|
||||
})
|
||||
.then((res) => res.json())
|
||||
.then((res) => res.data);
|
||||
|
||||
// get configuration via GQL
|
||||
const getConfiguration = async (pluginId, fallback) => {
|
||||
const query = `query Configuration { configuration { plugins }}`;
|
||||
const response = await callGQL({ query });
|
||||
return response.configuration.plugins?.[pluginId] ?? fallback;
|
||||
};
|
||||
|
||||
// wait for key elements
|
||||
function waitForElement(selector, callback) {
|
||||
var el = document.querySelector(selector);
|
||||
if (el) return callback(el);
|
||||
setTimeout(waitForElement, 100, selector, callback);
|
||||
}
|
||||
|
||||
// wait for a path match, then for key elements
|
||||
const PathElementListener = (path, element, callback) => {
|
||||
// startup location
|
||||
if (window.location.pathname.startsWith(path))
|
||||
waitForElement(element, callback);
|
||||
PluginApi.Event.addEventListener("stash:location", (e) => {
|
||||
if (e.detail.data.location.pathname.startsWith(path))
|
||||
waitForElement(element, callback);
|
||||
});
|
||||
};
|
||||
|
||||
// export to window
|
||||
window.csLib = {
|
||||
callGQL,
|
||||
getConfiguration,
|
||||
waitForElement,
|
||||
PathElementListener,
|
||||
};
|
||||
})();
|
||||
Reference in New Issue
Block a user