fix GM.xmlHttpRequest & use GM/unsafeWindow global
This commit is contained in:
@@ -34,7 +34,11 @@
|
|||||||
"extends": [
|
"extends": [
|
||||||
"react-app",
|
"react-app",
|
||||||
"react-app/jest"
|
"react-app/jest"
|
||||||
]
|
],
|
||||||
|
"globals": {
|
||||||
|
"GM": true,
|
||||||
|
"unsafeWindow": true
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"browserslist": {
|
"browserslist": {
|
||||||
"production": [
|
"production": [
|
||||||
|
|||||||
@@ -21,31 +21,27 @@ import { msAuth } from "./auth";
|
|||||||
*/
|
*/
|
||||||
const fetchGM = async (input, { method = "GET", headers, body } = {}) =>
|
const fetchGM = async (input, { method = "GET", headers, body } = {}) =>
|
||||||
new Promise((resolve, reject) => {
|
new Promise((resolve, reject) => {
|
||||||
try {
|
GM.xmlHttpRequest({
|
||||||
(window.GM_xmlhttpRequest || window.GM.xmlhttpRequest)({
|
method,
|
||||||
method,
|
url: input,
|
||||||
url: input,
|
headers,
|
||||||
headers,
|
data: body,
|
||||||
data: body,
|
onload: (response) => {
|
||||||
onload: (response) => {
|
if (response.status === 200) {
|
||||||
if (response.status === 200) {
|
const headers = new Headers();
|
||||||
const headers = new Headers();
|
response.responseHeaders.split("\n").forEach((line) => {
|
||||||
response.responseHeaders.split("\n").forEach((line) => {
|
const [name, value] = line.split(":").map((item) => item.trim());
|
||||||
let [name, value] = line.split(":").map((item) => item.trim());
|
if (name && value) {
|
||||||
if (name && value) {
|
headers.append(name, value);
|
||||||
headers.append(name, value);
|
}
|
||||||
}
|
});
|
||||||
});
|
resolve(new Response(response.response, { headers }));
|
||||||
resolve(new Response(response.response, { headers }));
|
} else {
|
||||||
} else {
|
reject(new Error(`[${response.status}] ${response.responseText}`));
|
||||||
reject(new Error(`[${response.status}] ${response.responseText}`));
|
}
|
||||||
}
|
},
|
||||||
},
|
onerror: reject,
|
||||||
onerror: reject,
|
});
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
reject(error);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ async function set(key, val) {
|
|||||||
if (isExt) {
|
if (isExt) {
|
||||||
await browser.storage.local.set({ [key]: val });
|
await browser.storage.local.set({ [key]: val });
|
||||||
} else if (isGm) {
|
} else if (isGm) {
|
||||||
const oldValue = await (window.GM_getValue || window.GM.getValue)(key);
|
const oldValue = await GM.getValue(key);
|
||||||
await (window.GM_setValue || window.GM.setValue)(key, val);
|
await GM.setValue(key, val);
|
||||||
window.dispatchEvent(
|
window.dispatchEvent(
|
||||||
new StorageEvent("storage", {
|
new StorageEvent("storage", {
|
||||||
key,
|
key,
|
||||||
@@ -31,7 +31,7 @@ async function get(key) {
|
|||||||
const val = await browser.storage.local.get([key]);
|
const val = await browser.storage.local.get([key]);
|
||||||
return val[key];
|
return val[key];
|
||||||
} else if (isGm) {
|
} else if (isGm) {
|
||||||
const val = await (window.GM_getValue || window.GM.getValue)(key);
|
const val = await GM.getValue(key);
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
return window.localStorage.getItem(key);
|
return window.localStorage.getItem(key);
|
||||||
@@ -41,8 +41,8 @@ async function del(key) {
|
|||||||
if (isExt) {
|
if (isExt) {
|
||||||
await browser.storage.local.remove([key]);
|
await browser.storage.local.remove([key]);
|
||||||
} else if (isGm) {
|
} else if (isGm) {
|
||||||
const oldValue = await (window.GM_getValue || window.GM.getValue)(key);
|
const oldValue = await GM.getValue(key);
|
||||||
await (window.GM_deleteValue || window.GM.deleteValue)(key);
|
await GM.deleteValue(key);
|
||||||
window.dispatchEvent(
|
window.dispatchEvent(
|
||||||
new StorageEvent("storage", {
|
new StorageEvent("storage", {
|
||||||
key,
|
key,
|
||||||
|
|||||||
@@ -16,12 +16,8 @@ import { Translator } from "./libs/translator";
|
|||||||
document.location.href.includes(process.env.REACT_APP_OPTIONSPAGE) ||
|
document.location.href.includes(process.env.REACT_APP_OPTIONSPAGE) ||
|
||||||
document.location.href.includes(process.env.REACT_APP_OPTIONSPAGE2)
|
document.location.href.includes(process.env.REACT_APP_OPTIONSPAGE2)
|
||||||
) {
|
) {
|
||||||
window.unsafeWindow.GM = window.GM;
|
unsafeWindow.GM = GM;
|
||||||
window.unsafeWindow.GM_xmlhttpRequest = window.GM_xmlhttpRequest;
|
unsafeWindow.APP_NAME = process.env.REACT_APP_NAME;
|
||||||
window.unsafeWindow.GM_setValue = window.GM_setValue;
|
|
||||||
window.unsafeWindow.GM_getValue = window.GM_getValue;
|
|
||||||
window.unsafeWindow.GM_deleteValue = window.GM_deleteValue;
|
|
||||||
window.unsafeWindow.APP_NAME = process.env.REACT_APP_NAME;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user