remove axios as it uses window which isn't supported in MV3

This commit is contained in:
Son NK
2024-03-25 22:22:45 +01:00
parent 5a6bfd22ae
commit 3bae7686ac
6 changed files with 64 additions and 195 deletions
-140
View File
@@ -14,7 +14,6 @@
"@fortawesome/vue-fontawesome": "^0.1.10",
"@sentry/browser": "^5.25.0",
"@sentry/integrations": "^5.30.0",
"axios": "^0.27.2",
"bootstrap": "^4.6.1",
"bootstrap-vue": "^2.21.2",
"tippy.js": "^6.3.7",
@@ -2535,11 +2534,6 @@
"dev": true,
"optional": true
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"node_modules/atob": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
@@ -2552,15 +2546,6 @@
"node": ">= 4.5.0"
}
},
"node_modules/axios": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
"integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
"dependencies": {
"follow-redirects": "^1.14.9",
"form-data": "^4.0.0"
}
},
"node_modules/babel-loader": {
"version": "8.2.5",
"resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz",
@@ -3228,17 +3213,6 @@
"integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==",
"dev": true
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
@@ -3795,14 +3769,6 @@
"node": ">=0.10.0"
}
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/des.js": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
@@ -4508,25 +4474,6 @@
"safe-buffer": "~5.1.0"
}
},
"node_modules/follow-redirects": {
"version": "1.15.1",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz",
"integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@@ -4536,19 +4483,6 @@
"node": ">=0.10.0"
}
},
"node_modules/form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/fragment-cache": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
@@ -5752,25 +5686,6 @@
"integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
"dev": true
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
@@ -11365,26 +11280,12 @@
"dev": true,
"optional": true
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"atob": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true
},
"axios": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
"integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
"requires": {
"follow-redirects": "^1.14.9",
"form-data": "^4.0.0"
}
},
"babel-loader": {
"version": "8.2.5",
"resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz",
@@ -11893,14 +11794,6 @@
"integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==",
"dev": true
},
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"requires": {
"delayed-stream": "~1.0.0"
}
},
"commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
@@ -12361,11 +12254,6 @@
"is-descriptor": "^0.1.0"
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"des.js": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
@@ -12958,27 +12846,12 @@
}
}
},
"follow-redirects": {
"version": "1.15.1",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz",
"integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA=="
},
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
"integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
"dev": true
},
"form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
}
},
"fragment-cache": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
@@ -13934,19 +13807,6 @@
}
}
},
"mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
},
"mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"requires": {
"mime-db": "1.52.0"
}
},
"mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-1
View File
@@ -27,7 +27,6 @@
"@fortawesome/vue-fontawesome": "^0.1.10",
"@sentry/browser": "^5.25.0",
"@sentry/integrations": "^5.30.0",
"axios": "^0.27.2",
"bootstrap": "^4.6.1",
"bootstrap-vue": "^2.21.2",
"tippy.js": "^6.3.7",
+10 -7
View File
@@ -9,7 +9,6 @@ import {
handleOnClickContextMenu,
generateAliasHandlerJS,
} from "./context-menu";
import axios from "axios";
import Utils from "../popup/Utils";
global.isBackgroundJS = true;
@@ -30,13 +29,18 @@ async function handleGetAppSettings() {
async function handleExtensionSetup() {
const apiUrl = await SLStorage.get(SLStorage.SETTINGS.API_URL);
try {
const url = apiUrl + API_ROUTE.GET_API_KEY_FROM_COOKIE.path;
const res = await axios.post(url, {
const res = await fetch(url, {
method: "POST",
body: JSON.stringify({
device: Utils.getDeviceName(),
}),
});
const apiKey = res.data.api_key;
if (res.ok) {
const apiRes = await res.json();
const apiKey = apiRes.api_key;
if (apiKey) {
await SLStorage.set(SLStorage.SETTINGS.API_KEY, apiKey);
@@ -52,9 +56,8 @@ async function handleExtensionSetup() {
} else {
console.error("Received null API Key");
}
} catch (e) {
// Probably the user is not logged in
console.error(e);
} else {
console.error("api error");
}
}
+20 -14
View File
@@ -2,7 +2,6 @@ import EventManager from "./EventManager";
import Navigation from "./Navigation";
import SLStorage from "./SLStorage";
import Utils from "./Utils";
import axios from "axios";
const API_ROUTE = {
GET_USER_INFO: { method: "GET", path: "/api/user_info" },
@@ -72,27 +71,34 @@ const callAPI = async function (
headers["Authentication"] = SETTINGS.apiKey;
}
try {
const res = await axios({
method,
url,
headers,
data,
});
let fetchParam = {
method: method,
headers: headers,
};
if (method === "POST") {
fetchParam.body = JSON.stringify(data);
}
return res;
} catch (err) {
let res = await fetch(url, fetchParam);
if (res.ok) {
const apiRes = await res.json();
// wrap apiRes in data to look like axios which was used before
return {
data: apiRes,
};
} else {
if (errHandlerMethod !== API_ON_ERR.IGNORE) {
console.error(err);
console.error(res);
}
if (err.response.status === 401 && !global.isBackgroundJS) {
if (res.status === 401 && !global.isBackgroundJS) {
await handle401Error();
return null;
}
if (errHandlerMethod === API_ON_ERR.TOAST) {
if (err.response.data && err.response.data.error) {
let apiRes = await res.json();
if (apiRes.error) {
Utils.showError(err.response.data.error);
} else {
Utils.showError("Unknown error");
@@ -101,7 +107,7 @@ const callAPI = async function (
}
if (errHandlerMethod === API_ON_ERR.THROW) {
throw err;
throw new Error("Request failed");
}
}
};
+13 -15
View File
@@ -39,7 +39,6 @@
</template>
<script>
import axios from "axios";
import SLStorage from "../SLStorage";
import EventManager from "../EventManager";
import Navigation from "../Navigation";
@@ -64,21 +63,20 @@ export default {
}
// check api key
axios
.get(this.apiUrl + API_ROUTE.GET_USER_INFO.path, {
headers: { Authentication: this.apiKey },
})
.then(async (res) => {
const userName = res.data.name || res.data.email;
await SLStorage.set(SLStorage.SETTINGS.API_KEY, this.apiKey);
EventManager.broadcast(EventManager.EVENT.SETTINGS_CHANGED);
const res = await fetch(this.apiUrl + API_ROUTE.GET_USER_INFO.path, {
headers: { Authentication: this.apiKey },
});
if (res.ok) {
const apiRes = await res.json();
const userName = apiRes.name || apiRes.email;
await SLStorage.set(SLStorage.SETTINGS.API_KEY, this.apiKey);
EventManager.broadcast(EventManager.EVENT.SETTINGS_CHANGED);
Utils.showSuccess(`Hi ${userName}!`);
Navigation.clearHistoryAndNavigateTo(Navigation.PATH.MAIN);
})
.catch((err) => {
Utils.showError("Incorrect API Key.");
});
Utils.showSuccess(`Hi ${userName}!`);
Navigation.clearHistoryAndNavigateTo(Navigation.PATH.MAIN);
} else {
Utils.showError("Incorrect API Key.");
}
},
},
computed: {},
+21 -18
View File
@@ -14,7 +14,6 @@ import SLStorage from "../SLStorage";
import EventManager from "../EventManager";
import Navigation from "../Navigation";
import Utils from "../Utils";
import axios from "axios";
import { API_ROUTE } from "../APIService";
export default {
@@ -38,25 +37,29 @@ export default {
} else {
// try to get api key when user is already logged in
const apiUrl = await SLStorage.get(SLStorage.SETTINGS.API_URL);
axios
.post(apiUrl + API_ROUTE.GET_API_KEY_FROM_COOKIE.path, {
device: Utils.getDeviceName(),
})
.then(async (res) => {
this.apiKey = res.data.api_key || "";
if (this.apiKey) {
await SLStorage.set(SLStorage.SETTINGS.API_KEY, this.apiKey);
EventManager.broadcast(EventManager.EVENT.SETTINGS_CHANGED);
Navigation.navigateTo(Navigation.PATH.MAIN, true);
} else {
Navigation.navigateTo(Navigation.PATH.LOGIN, true);
}
})
.catch((err) => {
// user is probably not logged in
const res = await fetch(apiUrl + API_ROUTE.GET_API_KEY_FROM_COOKIE.path, {
method: "POST",
body: JSON.stringify({
device: Utils.getDeviceName(),
}),
});
if (res.ok) {
let apiRes = await res.json();
this.apiKey = apiRes.api_key || "";
if (this.apiKey) {
await SLStorage.set(SLStorage.SETTINGS.API_KEY, this.apiKey);
EventManager.broadcast(EventManager.EVENT.SETTINGS_CHANGED);
Navigation.navigateTo(Navigation.PATH.MAIN, true);
} else {
Navigation.navigateTo(Navigation.PATH.LOGIN, true);
});
}
} else {
// user is probably not logged in
Navigation.navigateTo(Navigation.PATH.LOGIN, true);
}
}
},
beforeDestroy() {