mirror of
https://github.com/stashapp/CommunityScripts.git
synced 2026-04-13 05:18:26 -05:00
Merge pull request #231 from p0rnb0x/main
[stashUserscriptLibrary] Use `baseURL` for stash, if available
This commit is contained in:
@@ -4,6 +4,8 @@ const {
|
||||
fetch: originalFetch
|
||||
} = window;
|
||||
|
||||
const baseURL = document.querySelector("base")?.getAttribute("href") ?? "/";
|
||||
|
||||
window.fetch = async (...args) => {
|
||||
let [resource, config] = args;
|
||||
// request interceptor here
|
||||
@@ -172,7 +174,7 @@ class Stash extends EventTarget {
|
||||
}
|
||||
|
||||
try {
|
||||
const res = await window.fetch('/graphql', options);
|
||||
const res = await window.fetch(baseURL + 'graphql', options);
|
||||
this.log.debug(res);
|
||||
return res.json();
|
||||
} catch (err) {
|
||||
@@ -285,7 +287,7 @@ class Stash extends EventTarget {
|
||||
return this.callGQL(reqData);
|
||||
}
|
||||
matchUrl(href, fragment) {
|
||||
const regexp = concatRegexp(new RegExp(window.location.origin), fragment);
|
||||
const regexp = concatRegexp(new RegExp(window.location.origin + baseURL), fragment);
|
||||
return href.match(regexp) != null;
|
||||
}
|
||||
createSettings() {
|
||||
@@ -401,7 +403,7 @@ class Stash extends EventTarget {
|
||||
return document.getElementById(inputId);
|
||||
}
|
||||
get serverUrl() {
|
||||
return window.location.origin;
|
||||
return window.location.origin + baseURL;
|
||||
}
|
||||
async waitForElement(selector, timeout = null, location = document.body, disconnectOnPageChange = false) {
|
||||
return new Promise((resolve) => {
|
||||
@@ -590,7 +592,7 @@ class Stash extends EventTarget {
|
||||
this._pageListeners = {
|
||||
// scenes tab
|
||||
"stash:page:scenes": {
|
||||
regex: /\/scenes\?/,
|
||||
regex: /scenes\?/,
|
||||
manuallyHandleDispatchEvent: true,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -601,10 +603,10 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:scene:new": {
|
||||
regex: /\/scenes\/new/
|
||||
regex: /scenes\/new/
|
||||
},
|
||||
"stash:page:scene": {
|
||||
regex: /\/scenes\/\d+\?/,
|
||||
regex: /scenes\/\d+\?/,
|
||||
callback: ({recursive = false}) => this._listenForNonPageChanges({
|
||||
selector: ".scene-tabs .nav-tabs",
|
||||
listenType: "tabs",
|
||||
@@ -614,7 +616,7 @@ class Stash extends EventTarget {
|
||||
|
||||
// images tab
|
||||
"stash:page:images": {
|
||||
regex: /\/images\?/,
|
||||
regex: /images\?/,
|
||||
handleDisplayView: true,
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -624,7 +626,7 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:image": {
|
||||
regex: /\/images\/\d+/,
|
||||
regex: /images\/\d+/,
|
||||
callback: ({recursive = false}) => this._listenForNonPageChanges({
|
||||
selector: ".image-tabs .nav-tabs",
|
||||
listenType: "tabs",
|
||||
@@ -634,24 +636,24 @@ class Stash extends EventTarget {
|
||||
|
||||
// movies tab
|
||||
"stash:page:movies": {
|
||||
regex: /\/movies\?/,
|
||||
regex: /movies\?/,
|
||||
},
|
||||
"stash:page:movie": {
|
||||
regex: /\/movies\/\d+/,
|
||||
regex: /movies\/\d+/,
|
||||
},
|
||||
"stash:page:movie:scenes": {
|
||||
regex: /\/movies\/\d+\?/,
|
||||
regex: /movies\/\d+\?/,
|
||||
callback: () => this.processTagger()
|
||||
},
|
||||
|
||||
// markers tab
|
||||
"stash:page:markers": {
|
||||
regex: /\/scenes\/markers/
|
||||
regex: /scenes\/markers/
|
||||
},
|
||||
|
||||
// galleries tab
|
||||
"stash:page:galleries": {
|
||||
regex: /\/galleries\?/,
|
||||
regex: /galleries\?/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -661,10 +663,10 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:gallery:new": {
|
||||
regex: /\/galleries\/new/,
|
||||
regex: /galleries\/new/,
|
||||
},
|
||||
"stash:page:gallery:images": {
|
||||
regex: /\/galleries\/\d+\?/,
|
||||
regex: /galleries\/\d+\?/,
|
||||
manuallyHandleDispatchEvent: true,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
callback: ({lastHref, lastPathStr, recursive = false, event}) => {
|
||||
@@ -684,7 +686,7 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:gallery:add": {
|
||||
regex: /\/galleries\/\d+\/add/,
|
||||
regex: /galleries\/\d+\/add/,
|
||||
manuallyHandleDispatchEvent: true,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
callback: ({lastHref, lastPathStr, recursive = false, event}) => {
|
||||
@@ -706,7 +708,7 @@ class Stash extends EventTarget {
|
||||
|
||||
// performers tab
|
||||
"stash:page:performers": {
|
||||
regex: /\/performers\?/,
|
||||
regex: /performers\?/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -716,10 +718,10 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:performer:new": {
|
||||
regex: /\/performers\/new/
|
||||
regex: /performers\/new/
|
||||
},
|
||||
"stash:page:performer": {
|
||||
regex: /\/performers\/\d+/,
|
||||
regex: /performers\/\d+/,
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
if (!this.matchUrl(lastHref, regex)) {
|
||||
@@ -736,7 +738,7 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:performer:scenes": {
|
||||
regex: /\/performers\/\d+\?/,
|
||||
regex: /performers\/\d+\?/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -746,7 +748,7 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:performer:galleries": {
|
||||
regex: /\/performers\/\d+\/galleries/,
|
||||
regex: /performers\/\d+\/galleries/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -756,7 +758,7 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:performer:images": {
|
||||
regex: /\/performers\/\d+\/images/,
|
||||
regex: /performers\/\d+\/images/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -766,10 +768,10 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:performer:movies": {
|
||||
regex: /\/performers\/\d+\/movies/
|
||||
regex: /performers\/\d+\/movies/
|
||||
},
|
||||
"stash:page:performer:appearswith": {
|
||||
regex: /\/performers\/\d+\/appearswith/,
|
||||
regex: /performers\/\d+\/appearswith/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -782,7 +784,7 @@ class Stash extends EventTarget {
|
||||
|
||||
// studios tab
|
||||
"stash:page:studios": {
|
||||
regex: /\/studios\?/,
|
||||
regex: /studios\?/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -792,10 +794,10 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:studio:new": {
|
||||
regex: /\/studios\/new/
|
||||
regex: /studios\/new/
|
||||
},
|
||||
"stash:page:studio": {
|
||||
regex: /\/studios\/\d+/,
|
||||
regex: /studios\/\d+/,
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
if (!this.matchUrl(lastHref, regex)) {
|
||||
@@ -812,7 +814,7 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:studio:scenes": {
|
||||
regex: /\/studios\/\d+\?/,
|
||||
regex: /studios\/\d+\?/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -822,7 +824,7 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:studio:galleries": {
|
||||
regex: /\/studios\/\d+\/galleries/,
|
||||
regex: /studios\/\d+\/galleries/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -832,7 +834,7 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:studio:images": {
|
||||
regex: /\/studios\/\d+\/images/,
|
||||
regex: /studios\/\d+\/images/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -842,7 +844,7 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:studio:performers": {
|
||||
regex: /\/studios\/\d+\/performers/,
|
||||
regex: /studios\/\d+\/performers/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -852,10 +854,10 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:studio:movies": {
|
||||
regex: /\/studios\/\d+\/movies/
|
||||
regex: /studios\/\d+\/movies/
|
||||
},
|
||||
"stash:page:studio:childstudios": {
|
||||
regex: /\/studios\/\d+\/childstudios/,
|
||||
regex: /studios\/\d+\/childstudios/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -867,7 +869,7 @@ class Stash extends EventTarget {
|
||||
|
||||
// tags tab
|
||||
"stash:page:tags": {
|
||||
regex: /\/tags\?/,
|
||||
regex: /tags\?/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -877,10 +879,10 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:tag:new": {
|
||||
regex: /\/tags\/new/
|
||||
regex: /tags\/new/
|
||||
},
|
||||
"stash:page:tag": {
|
||||
regex: /\/tags\/\d+/,
|
||||
regex: /tags\/\d+/,
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
if (!this.matchUrl(lastHref, regex)) {
|
||||
@@ -897,7 +899,7 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:tag:scenes": {
|
||||
regex: /\/tags\/\d+\?/,
|
||||
regex: /tags\/\d+\?/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -907,7 +909,7 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:tag:galleries": {
|
||||
regex: /\/tags\/\d+\/galleries/,
|
||||
regex: /tags\/\d+\/galleries/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -917,7 +919,7 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:tag:images": {
|
||||
regex: /\/tags\/\d+\/images/,
|
||||
regex: /tags\/\d+\/images/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -927,10 +929,10 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:tag:markers": {
|
||||
regex: /\/tags\/\d+\/markers/
|
||||
regex: /tags\/\d+\/markers/
|
||||
},
|
||||
"stash:page:tag:performers": {
|
||||
regex: /\/tags\/\d+\/performers/,
|
||||
regex: /tags\/\d+\/performers/,
|
||||
handleDisplayView: "ignoreDisplayViewCondition",
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
@@ -942,7 +944,7 @@ class Stash extends EventTarget {
|
||||
|
||||
// settings page
|
||||
"stash:page:settings": {
|
||||
regex: /\/settings/,
|
||||
regex: /settings/,
|
||||
manuallyHandleDispatchEvent: true,
|
||||
callback: ({lastHref, event, regex}) => {
|
||||
if (!this.matchUrl(lastHref, regex)) {
|
||||
@@ -951,52 +953,52 @@ class Stash extends EventTarget {
|
||||
}
|
||||
},
|
||||
"stash:page:settings:tasks": {
|
||||
regex: /\/settings\?tab=tasks/,
|
||||
regex: /settings\?tab=tasks/,
|
||||
callback: () => this.hidePluginTasks()
|
||||
},
|
||||
"stash:page:settings:library": {
|
||||
regex: /\/settings\?tab=library/
|
||||
regex: /settings\?tab=library/
|
||||
},
|
||||
"stash:page:settings:interface": {
|
||||
regex: /\/settings\?tab=interface/
|
||||
regex: /settings\?tab=interface/
|
||||
},
|
||||
"stash:page:settings:security": {
|
||||
regex: /\/settings\?tab=security/
|
||||
regex: /settings\?tab=security/
|
||||
},
|
||||
"stash:page:settings:metadata-providers": {
|
||||
regex: /\/settings\?tab=metadata-providers/
|
||||
regex: /settings\?tab=metadata-providers/
|
||||
},
|
||||
"stash:page:settings:services": {
|
||||
regex: /\/settings\?tab=services/
|
||||
regex: /settings\?tab=services/
|
||||
},
|
||||
"stash:page:settings:system": {
|
||||
regex: /\/settings\?tab=system/,
|
||||
regex: /settings\?tab=system/,
|
||||
callback: () => this.createSettings()
|
||||
},
|
||||
"stash:page:settings:plugins": {
|
||||
regex: /\/settings\?tab=plugins/
|
||||
regex: /settings\?tab=plugins/
|
||||
},
|
||||
"stash:page:settings:logs": {
|
||||
regex: /\/settings\?tab=logs/
|
||||
regex: /settings\?tab=logs/
|
||||
},
|
||||
"stash:page:settings:tools": {
|
||||
regex: /\/settings\?tab=tools/
|
||||
regex: /settings\?tab=tools/
|
||||
},
|
||||
"stash:page:settings:changelog": {
|
||||
regex: /\/settings\?tab=changelog/
|
||||
regex: /settings\?tab=changelog/
|
||||
},
|
||||
"stash:page:settings:about": {
|
||||
regex: /\/settings\?tab=about/
|
||||
regex: /settings\?tab=about/
|
||||
},
|
||||
|
||||
// stats page
|
||||
"stash:page:stats": {
|
||||
regex: /\/stats/
|
||||
regex: /stats/
|
||||
},
|
||||
|
||||
// home page
|
||||
"stash:page:home": {
|
||||
regex: /\/$/,
|
||||
regex: /$/,
|
||||
callback: () => this._listenForNonPageChanges({selector: ".recommendations-container-edit", event: "stash:page:home:edit", reRunHandlePageChange: true})
|
||||
},
|
||||
}
|
||||
@@ -1318,7 +1320,7 @@ class Stash extends EventTarget {
|
||||
parseSearchItem(searchItem) {
|
||||
const urlNode = searchItem.querySelector('a.scene-link');
|
||||
const url = new URL(urlNode.href);
|
||||
const id = url.pathname.replace('/scenes/', '');
|
||||
const id = url.pathname.replace(baseURL + 'scenes/', '');
|
||||
const data = this.scenes[id];
|
||||
const nameNode = searchItem.querySelector('a.scene-link > div.TruncatedText');
|
||||
const name = nameNode.innerText;
|
||||
|
||||
Reference in New Issue
Block a user