aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-07-27 17:44:04 +0200
committerManeraKai <manerakai@protonmail.com>2022-07-27 17:44:04 +0200
commita9a7dba5a329eb17e23ba08802406a4e2e2cb836 (patch)
tree2cb69c855b36e82128a00e5895d5f5409d5e0a5e
parentMerge branch 'BobIsMyManager-librex' (diff)
parent, (diff)
downloadlibredirect-a9a7dba5a329eb17e23ba08802406a4e2e2cb836.zip
Merge pull request 'Squashed a few bugs' (#10) from BobIsMyManager/libredirect:master into master
Reviewed-on: https://codeberg.org/LibRedirect/libredirect/pulls/10
Diffstat (limited to '')
-rw-r--r--.github/workflows/codeql-analysis.yml58
-rw-r--r--.github/workflows/main.yml10
-rw-r--r--.github/workflows/test.yml2
-rw-r--r--.prettierignore11
-rw-r--r--.prettierrc.json22
-rw-r--r--Privacy-Policy.md16
-rw-r--r--README.md26
-rw-r--r--chromium.md2
-rw-r--r--package.json58
-rwxr-xr-xscript.sh1
-rw-r--r--src/_locales/en/messages.json3
-rw-r--r--src/assets/javascripts/general.js110
-rw-r--r--src/assets/javascripts/imdb.js307
-rw-r--r--src/assets/javascripts/imgur.js333
-rw-r--r--src/assets/javascripts/instagram.js318
-rw-r--r--src/assets/javascripts/lbry.js285
-rw-r--r--src/assets/javascripts/localise.js46
-rw-r--r--src/assets/javascripts/maps.js459
-rw-r--r--src/assets/javascripts/medium.js342
-rw-r--r--src/assets/javascripts/peertube.js313
-rw-r--r--src/assets/javascripts/quora.js294
-rw-r--r--src/assets/javascripts/reddit.js762
-rw-r--r--src/assets/javascripts/reuters.js234
-rw-r--r--src/assets/javascripts/search.js1139
-rw-r--r--src/assets/javascripts/sendTargets.js288
-rw-r--r--src/assets/javascripts/tiktok.js389
-rw-r--r--src/assets/javascripts/translate/get_lingva_preferences.js18
-rw-r--r--src/assets/javascripts/translate/set_lingva_preferences.js24
-rw-r--r--src/assets/javascripts/translate/translate.js674
-rw-r--r--src/assets/javascripts/twitter.js495
-rw-r--r--src/assets/javascripts/utils.js820
-rw-r--r--src/assets/javascripts/wikipedia.js422
-rw-r--r--src/assets/javascripts/youtube/get_pipedMaterial_preferences.js10
-rw-r--r--src/assets/javascripts/youtube/get_piped_preferences.js44
-rw-r--r--src/assets/javascripts/youtube/set_pipedMaterial_preferences.js13
-rw-r--r--src/assets/javascripts/youtube/set_piped_preferences.js84
-rw-r--r--src/assets/javascripts/youtube/youtube.js1256
-rw-r--r--src/assets/javascripts/youtubeMusic.js354
-rw-r--r--src/instances/beatbump.json6
-rw-r--r--src/instances/cloudtube.json6
-rw-r--r--src/instances/facil.json6
-rw-r--r--src/instances/get_instances.py169
-rw-r--r--src/instances/neuters.json6
-rw-r--r--src/instances/piped.json21
-rw-r--r--src/manifest.json151
-rw-r--r--src/pages/background/background.html12
-rw-r--r--src/pages/background/background.js433
-rw-r--r--src/pages/background/incognito.html64
-rw-r--r--src/pages/background/incognito.js36
-rw-r--r--src/pages/background/reset_warning.html109
-rw-r--r--src/pages/background/reset_warning.js14
-rw-r--r--src/pages/errors/instance_offline.html69
-rw-r--r--src/pages/errors/instance_offline.js33
-rw-r--r--src/pages/options/index.html212
-rw-r--r--src/pages/options/index.js31
-rw-r--r--src/pages/options/init.js61
-rw-r--r--src/pages/options/widgets/general.js455
-rw-r--r--src/pages/options/widgets/imdb.js54
-rw-r--r--src/pages/options/widgets/imgur.js54
-rw-r--r--src/pages/options/widgets/instagram.js54
-rw-r--r--src/pages/options/widgets/lbry.js82
-rw-r--r--src/pages/options/widgets/lbry.pug8
-rw-r--r--src/pages/options/widgets/maps.js85
-rw-r--r--src/pages/options/widgets/medium.js54
-rw-r--r--src/pages/options/widgets/peertube.js54
-rw-r--r--src/pages/options/widgets/quora.js54
-rw-r--r--src/pages/options/widgets/reddit.js85
-rw-r--r--src/pages/options/widgets/reuters.js54
-rw-r--r--src/pages/options/widgets/search.js105
-rw-r--r--src/pages/options/widgets/sendTargets.js54
-rw-r--r--src/pages/options/widgets/tiktok.js54
-rw-r--r--src/pages/options/widgets/translate.js85
-rw-r--r--src/pages/options/widgets/twitter.js65
-rw-r--r--src/pages/options/widgets/wikipedia.js54
-rw-r--r--src/pages/options/widgets/youtube.js149
-rw-r--r--src/pages/options/widgets/youtube.pug19
-rw-r--r--src/pages/options/widgets/youtubeMusic.js84
-rw-r--r--src/pages/options/widgets/youtubeMusic.pug25
-rw-r--r--src/pages/popup/popup.html4
-rw-r--r--src/pages/popup/popup.js661
-rw-r--r--src/pages/popup/popup.pug5
-rw-r--r--src/pages/popup/style.css23
-rw-r--r--src/pages/stylesheets/styles.css497
-rw-r--r--web-ext-config.js6
84 files changed, 7743 insertions, 6721 deletions
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index afed137e..685c7090 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -13,12 +13,12 @@ name: "CodeQL"
on:
push:
- branches: [ master ]
+ branches: [master]
pull_request:
# The branches below must be a subset of the branches above
- branches: [ master ]
+ branches: [master]
schedule:
- - cron: '43 18 * * 3'
+ - cron: "43 18 * * 3"
jobs:
analyze:
@@ -32,39 +32,39 @@ jobs:
strategy:
fail-fast: false
matrix:
- language: [ 'javascript' ]
+ language: ["javascript"]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support
steps:
- - name: Checkout repository
- uses: actions/checkout@v2
+ - name: Checkout repository
+ uses: actions/checkout@v2
- # Initializes the CodeQL tools for scanning.
- - name: Initialize CodeQL
- uses: github/codeql-action/init@v1
- with:
- languages: ${{ matrix.language }}
- # If you wish to specify custom queries, you can do so here or in a config file.
- # By default, queries listed here will override any specified in a config file.
- # Prefix the list here with "+" to use these queries and those in the config file.
- # queries: ./path/to/local/query, your-org/your-repo/queries@main
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v1
+ with:
+ languages: ${{ matrix.language }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
- # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
- # If this step fails, then you should remove it and run the build manually (see below)
- - name: Autobuild
- uses: github/codeql-action/autobuild@v1
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v1
- # â„šī¸ Command-line programs to run using the OS shell.
- # 📚 https://git.io/JvXDl
+ # â„šī¸ Command-line programs to run using the OS shell.
+ # 📚 https://git.io/JvXDl
- # âœī¸ If the Autobuild fails above, remove it and uncomment the following three lines
- # and modify them (or add more) to build your code if your project
- # uses a compiled language
+ # âœī¸ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
- #- run: |
- # make bootstrap
- # make release
+ #- run: |
+ # make bootstrap
+ # make release
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v1
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v1
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index c63281a2..88edbe34 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -2,21 +2,21 @@ name: instances-updater
on:
schedule:
- - cron: '10 22 */3 * *'
-
+ - cron: "10 22 */3 * *"
+
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
- steps:
+ steps:
- name: get repo content
uses: actions/checkout@v2
- name: setup python
uses: actions/setup-python@v2
with:
- python-version: '3.8' # install the python version needed
+ python-version: "3.8" # install the python version needed
- name: install python packages
run: |
@@ -24,7 +24,7 @@ jobs:
pip install requests bs4 colorama
- name: run script
run: python src/instances/get_instances.py
-
+
- name: commit files
run: |
git config --local user.email "action@github.com"
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 404ac8dd..f31a693f 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -9,6 +9,6 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
- node-version: '16'
+ node-version: "16"
- run: npm install
- run: npm test
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 00000000..e10fcaab
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,11 @@
+web-ext-artifacts/
+.DS_Store
+nod
+node_modules
+package-lock.json
+src/instances/data.json
+src/instances/blacklist.json
+src/pages/options/*.html
+src/pages/popup/*.html
+src/_locales/
+.vscode
diff --git a/.prettierrc.json b/.prettierrc.json
new file mode 100644
index 00000000..864a0cc8
--- /dev/null
+++ b/.prettierrc.json
@@ -0,0 +1,22 @@
+{
+ "semi": false,
+ "tabWidth": 2,
+ "useTabs": true,
+ "arrowParens": "avoid",
+ "printWidth": 200,
+ "overrides": [
+ {
+ "files": ["*.js", "*.json"],
+ "options": {
+ "singleQuote": false
+ }
+ },
+ {
+ "files": ["*.html", "*.py"],
+ "options": {
+ "tabWidth": 4,
+ "singleQuote": true
+ }
+ }
+ ]
+}
diff --git a/Privacy-Policy.md b/Privacy-Policy.md
index fe35754d..5445fcc8 100644
--- a/Privacy-Policy.md
+++ b/Privacy-Policy.md
@@ -1,11 +1,13 @@
## Data collected
-* LibRedirect does not collect any Personal Information of any kind.
-* LibRedirect doesn't embed any kind of analytics in its code.
-* All aspects of the extension work locally in your browser, with the exception of
-OpenStreetMap (OSM) reverse geocoding, done via the [OSM Nomantim API](https://nominatim.org/release-docs/develop/api/Overview/),
-used as part of OSM redirects, which can be disabled by toggling the OSM redirects.
-* It also connects to [this url](https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json) to update the Instances List. Though this only gets triggered when the user presses the `Update Instances` button.
-* For bibliogram instances. To set a cookie you should send an http request to the server as the server stores settings values itself and gives you a token to access them.
+
+- LibRedirect does not collect any Personal Information of any kind.
+- LibRedirect doesn't embed any kind of analytics in its code.
+- All aspects of the extension work locally in your browser, with the exception of
+ OpenStreetMap (OSM) reverse geocoding, done via the [OSM Nomantim API](https://nominatim.org/release-docs/develop/api/Overview/),
+ used as part of OSM redirects, which can be disabled by toggling the OSM redirects.
+- It also connects to [this url](https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json) to update the Instances List. Though this only gets triggered when the user presses the `Update Instances` button.
+- For bibliogram instances. To set a cookie you should send an http request to the server as the server stores settings values itself and gives you a token to access them.
## Future Changes
+
If we decide to change our privacy policy, we will post those changes on this page.
diff --git a/README.md b/README.md
index bf3be985..611ee14e 100644
--- a/README.md
+++ b/README.md
@@ -8,10 +8,10 @@ A web extension that redirects YouTube, Twitter, Instagram... requests to altern
[![Firefox Add-on](./img/badge-amo.png)](https://addons.mozilla.org/firefox/addon/libredirect/)&nbsp;
<a href="https://microsoftedge.microsoft.com/addons/detail/libredirect/aodffkeankebfonljgbcfbbaljopcpdb">
- <img src="./img/badge-ms.png" height=60>
+<img src="./img/badge-ms.png" height=60>
</a>&nbsp;
<a href="./chromium.md">
- <img src ="./img/badge-chromium.png" height=60 >
+<img src ="./img/badge-chromium.png" height=60 >
</a>
<img src ="./img/1.png" width=350>&nbsp;
@@ -19,8 +19,8 @@ A web extension that redirects YouTube, Twitter, Instagram... requests to altern
<img src ="./img/3.png" width=350>&nbsp;
<img src ="./img/4.png" width=350>&nbsp;
-Youtube => [Invidious](https://github.com/iv-org/invidious), [Piped](https://github.com/TeamPiped/Piped), [Piped-Material](https://github.com/mmjee/Piped-Material), [FreeTube](https://github.com/FreeTubeApp/FreeTube), [Yattee](https://github.com/yattee/yattee)\
-Youtube Music => [Beatbump](https://github.com/snuffyDev/Beatbump)\
+Youtube => [Invidious](https://github.com/iv-org/invidious), [Piped](https://github.com/TeamPiped/Piped), [Piped-Material](https://github.com/mmjee/Piped-Material), [CloudTube](https://sr.ht/~cadence/tube/), [FreeTube](https://github.com/FreeTubeApp/FreeTube), [Yattee](https://github.com/yattee/yattee)\
+Youtube Music => [Beatbump](https://github.com/snuffyDev/Beatbump), [Hyperpipe](https://codeberg.org/Hyperpipe/Hyperpipe)\
Twitter => [Nitter](https://github.com/zedeus/nitter)\
Instagram => [Bibliogram](https://sr.ht/~cadence/bibliogram/)\
TikTok => [ProxiTok](https://github.com/pablouser1/ProxiTok)\
@@ -31,7 +31,7 @@ Medium => [Scribe](https://sr.ht/~edwardloveall/scribe/)\
Quora => [Quetre](https://github.com/zyachel/quetre)\
IMDb => [Libremdb](https://github.com/zyachel/libremdb)\
PeerTube => [SimpleerTube](https://git.sr.ht/~metalune/simpleweb_peertube)\
-LBRY/Odysee => [Librarian](https://codeberg.org/librarian/librarian)\
+LBRY/Odysee => [Librarian](https://codeberg.org/librarian/librarian), [LBRY Desktop](https://lbry.com/get)\
Search => [SearXNG](https://github.com/searxng/searxng), [SearX](https://searx.github.io/searx/), [Whoogle](https://benbusby.com/projects/whoogle-search/), [Librex](https://github.com/hnhx/librex/)\
Translate => [SimplyTranslate](https://git.sr.ht/~metalune/simplytranslate_web), [LingvaTranslate](https://github.com/TheDavidDelta/lingva-translate)\
Maps => [OpenStreetMap](https://www.openstreetmap.org/), [FacilMap](https://github.com/FacilMap/facilmap)\
@@ -42,6 +42,7 @@ Send Files => [Send](https://gitlab.com/timvisee/send)
[FAQ](https://libredirect.github.io/faq.html)
## Donate
+
[![Liberapay](./img/liberapay.svg)](https://liberapay.com/LibRedirect)&nbsp;
[![Patreon](./img/patreon.svg)](https://patreon.com/LibRedirect)&nbsp;
[![Buy me a coffee](./img/bmc.svg)](https://www.buymeacoffee.com/libredirect)
@@ -52,47 +53,59 @@ ETH: 0x896E5796Da76E49A400A9186E1c459CD2C64b4E8\
XMR: 4AM5CVfaGsnEXQQjZSzJvaWufe7pT86ubcZPr83fCjb2Hn3iwcForTWFy2Z3ugXcufUwHaGcucfPMFgPXBFSYGFvNrmV5XR
## Mirror Repos
+
[![GitHub](https://raw.githubusercontent.com/ManeraKai/manerakai/main/icons/github.svg)](https://github.com/libredirect/libredirect/)&nbsp;&nbsp;
[![Codeberg](https://raw.githubusercontent.com/ManeraKai/manerakai/main/icons/codeberg.svg)](https://codeberg.org/LibRedirect/libredirect)&nbsp;&nbsp;
## Translate
+
[![Weblate](./img/weblate.svg)](https://hosted.weblate.org/projects/libredirect/extension)
## Development
+
### Install Dependencies
+
[Node.js](https://nodejs.org/) latest LTS is recommended
+
```
npm update
npm install
```
If you are modifying any files ending with .pug, the pug cli needs to be installed with the following command (with root privileges):
+
```
npm install -g pug-cli
```
-and then run `./script.sh` to generate pages in the background.
+
+and then run `npm run pug` to generate pages in the background.
### Build
+
```
npm run build
```
### Test
+
```
npm run test
```
### Test in Firefox
+
```
npm run start
```
### Install temporarily
+
open `about:addons`\
click on the settings button below the addon search bar and select `debug add-on`\
press `load temporarily addon`
### Install in Firefox ESR, Developer Edition, Nightly
+
open `about:config`\
set `xpinstall.signatures.required` to `false`\
open `about:addons`\
@@ -100,6 +113,7 @@ click on the gear shaped `settings` button and select `Install Add-on From File.
select `libredirect-VERSION.zip` from `web-ext-artifacts` folder
### Install in Chromium browsers
+
open `chrome://extensions`\
enable `dev mode`\
select `load unpacked extension`\
diff --git a/chromium.md b/chromium.md
index 1825d782..9b7842f6 100644
--- a/chromium.md
+++ b/chromium.md
@@ -1,4 +1,5 @@
## Linux
+
- Download the latest `.crx` file: [libredirect-2.2.1.crx](https://github.com/libredirect/libredirect/releases/download/v2.2.1/libredirect-2.2.1.crx)
- Open `chrome://extensions`
- Enable `dev mode`
@@ -8,6 +9,7 @@
Updates are automatic
## Windows, MacOS
+
- Download the latest release [libredirect-2.2.1.zip](https://github.com/libredirect/libredirect/releases/download/v2.2.1/libredirect-2.2.1.zip)
- Unzip it with `Auto detect subfolder`
- Open `chrome://extensions`
diff --git a/package.json b/package.json
index 2f8f9abf..e6214c85 100644
--- a/package.json
+++ b/package.json
@@ -1,29 +1,33 @@
{
- "name": "libredirect",
- "description": "Redirects YouTube, Twitter, Instagram and more to privacy friendly frontends.",
- "engines": {
- "node": ">=16.13.1",
- "npm": ">=8.1.2"
- },
- "scripts": {
- "start": "web-ext run --browser-console --source-dir ./src/",
- "build": "web-ext build --overwrite-dest --source-dir ./src/",
- "test": "web-ext lint --source-dir ./src/ || true"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/LibRedirect/LibRedirect.git"
- },
- "author": "LibRedirect",
- "license": "GPL-3.0-only",
- "bugs": {
- "url": "https://github.com/LibRedirect/LibRedirect/issues"
- },
- "homepage": "https://github.com/LibRedirect/LibRedirect",
- "devDependencies": {
- "web-ext": "^6.7.0"
- },
- "dependencies": {
- "buffer": "^6.0.3"
- }
+ "name": "libredirect",
+ "description": "Redirects YouTube, Twitter, Instagram and more to privacy friendly frontends.",
+ "engines": {
+ "node": ">=16.13.1",
+ "npm": ">=8.1.2"
+ },
+ "scripts": {
+ "start": "web-ext run --browser-console --source-dir ./src/",
+ "build": "web-ext build --overwrite-dest --source-dir ./src/",
+ "test": "web-ext lint --source-dir ./src/ || true",
+ "pug": "pug ./src/pages/options/*.pug ./src/pages/popup/ -P -w",
+ "prettier": "npx prettier --write .",
+ "instances": "python3 src/instances/get_instances.py; git update-index --assume-unchanged src/instances/blacklist.json src/instances/data.json"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/LibRedirect/LibRedirect.git"
+ },
+ "author": "LibRedirect",
+ "license": "GPL-3.0-only",
+ "bugs": {
+ "url": "https://github.com/LibRedirect/LibRedirect/issues"
+ },
+ "homepage": "https://github.com/LibRedirect/LibRedirect",
+ "devDependencies": {
+ "prettier": "2.7.1",
+ "web-ext": "^6.7.0"
+ },
+ "dependencies": {
+ "buffer": "^6.0.3"
+ }
}
diff --git a/script.sh b/script.sh
deleted file mode 100755
index 00914fd1..00000000
--- a/script.sh
+++ /dev/null
@@ -1 +0,0 @@
-pug ./src/pages/options/*.pug ./src/pages/popup/ -P -w \ No newline at end of file
diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json
index dfbede1a..23d42e48 100644
--- a/src/_locales/en/messages.json
+++ b/src/_locales/en/messages.json
@@ -207,5 +207,8 @@
},
"protocolFallback": {
"message": "Fallback to normal if no instances are available for the current protocol"
+ },
+ "lbryDesktop": {
+ "message": "LBRY Desktop"
}
}
diff --git a/src/assets/javascripts/general.js b/src/assets/javascripts/general.js
index 1c27a55d..0b34c148 100644
--- a/src/assets/javascripts/general.js
+++ b/src/assets/javascripts/general.js
@@ -1,78 +1,66 @@
-"use strict";
-window.browser = window.browser || window.chrome;
+"use strict"
+window.browser = window.browser || window.chrome
function isException(url) {
- for (const item of exceptions.url)
- if (item == `${url.protocol}//${url.host}`) return true;
- for (const item of exceptions.regex)
- if (new RegExp(item).test(url.href)) return true;
- return false;
+ for (const item of exceptions.url) if (item == `${url.protocol}//${url.host}`) return true
+ for (const item of exceptions.regex) if (new RegExp(item).test(url.href)) return true
+ return false
}
-let exceptions;
+let exceptions
function init() {
- browser.storage.local.get(
- 'exceptions',
- r => {
- exceptions = r.exceptions;
- }
- )
+ browser.storage.local.get("exceptions", r => {
+ exceptions = r.exceptions
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
async function initDefaults() {
- return new Promise(resolve =>
- browser.storage.local.set({
- exceptions: {
- "url": [],
- "regex": [],
- },
- theme: "DEFAULT",
- popupFrontends: [
- "youtube",
- "twitter",
- "instagram",
- "tiktok",
- "imgur",
- "reddit",
- "quora",
- "translate",
- "maps",
- ],
- autoRedirect: false,
- firstPartyIsolate: false,
- protocol: "normal",
- protocolFallback: true
- }, () => resolve())
- )
+ return new Promise(resolve =>
+ browser.storage.local.set(
+ {
+ exceptions: {
+ url: [],
+ regex: [],
+ },
+ theme: "DEFAULT",
+ popupFrontends: ["youtube", "twitter", "instagram", "tiktok", "imgur", "reddit", "quora", "translate", "maps"],
+ autoRedirect: false,
+ firstPartyIsolate: false,
+ protocol: "normal",
+ protocolFallback: true,
+ },
+ () => resolve()
+ )
+ )
}
const allPopupFrontends = [
- "youtube",
- "youtubeMusic",
- "twitter",
- "instagram",
- "tiktok",
- "imgur",
- "reddit",
- "search",
- "translate",
- "maps",
- "wikipedia",
- "medium",
- "quora",
- "imdb",
- "reuters",
- "peertube",
- "lbry",
- "sendTargets"
-];
+ "youtube",
+ "youtubeMusic",
+ "twitter",
+ "instagram",
+ "tiktok",
+ "imgur",
+ "reddit",
+ "search",
+ "translate",
+ "maps",
+ "wikipedia",
+ "medium",
+ "quora",
+ "imdb",
+ "reuters",
+ "peertube",
+ "lbry",
+ "sendTargets",
+]
export default {
- isException,
- initDefaults,
- allPopupFrontends,
+ isException,
+ initDefaults,
+ allPopupFrontends,
}
diff --git a/src/assets/javascripts/imdb.js b/src/assets/javascripts/imdb.js
index 2a8ac2f6..9981f1b9 100644
--- a/src/assets/javascripts/imdb.js
+++ b/src/assets/javascripts/imdb.js
@@ -1,10 +1,8 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}(?:www\.|)imdb\.com.*/
-];
+const targets = [/^https?:\/{2}(?:www\.|)imdb\.com.*/]
const frontends = new Array("libremdb")
const protocols = new Array("normal", "tor", "i2p", "loki")
@@ -12,182 +10,197 @@ const protocols = new Array("normal", "tor", "i2p", "loki")
let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.libremdb = val;
- libremdbNormalRedirectsChecks = [...redirects.libremdb.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = libremdbNormalRedirectsChecks.indexOf(instance);
- if (a > -1) libremdbNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- imdbRedirects: redirects,
- libremdbNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.libremdb = val
+ libremdbNormalRedirectsChecks = [...redirects.libremdb.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = libremdbNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) libremdbNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ imdbRedirects: redirects,
+ libremdbNormalRedirectsChecks,
+ })
+ })
}
-let
- disableImdb,
- protocol,
- protocolFallback,
- imdbRedirects,
- libremdbNormalRedirectsChecks,
- libremdbNormalCustomRedirects,
- libremdbTorRedirectsChecks,
- libremdbTorCustomRedirects,
- libremdbI2pCustomRedirects,
- libremdbLokiCustomRedirects;
+let disableImdb,
+ protocol,
+ protocolFallback,
+ imdbRedirects,
+ libremdbNormalRedirectsChecks,
+ libremdbNormalCustomRedirects,
+ libremdbTorRedirectsChecks,
+ libremdbTorCustomRedirects,
+ libremdbI2pCustomRedirects,
+ libremdbLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableImdb",
- "protocol",
- "protocolFallback",
- "imdbRedirects",
- "libremdbNormalRedirectsChecks",
- "libremdbNormalCustomRedirects",
- "libremdbTorRedirectsChecks",
- "libremdbTorCustomRedirects",
- "libremdbI2pCustomRedirects",
- "libremdbLokiCustomRedirects"
- ],
- r => {
- disableImdb = r.disableImdb;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- imdbRedirects = r.imdbRedirects;
- libremdbNormalRedirectsChecks = r.libremdbNormalRedirectsChecks;
- libremdbNormalCustomRedirects = r.libremdbNormalCustomRedirects;
- libremdbTorRedirectsChecks = r.libremdbTorRedirectsChecks;
- libremdbTorCustomRedirects = r.libremdbTorCustomRedirects;
- libremdbI2pCustomRedirects = r.libremdbI2pCustomRedirects;
- libremdbLokiCustomRedirects = r.libremdbLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableImdb",
+ "protocol",
+ "protocolFallback",
+ "imdbRedirects",
+ "libremdbNormalRedirectsChecks",
+ "libremdbNormalCustomRedirects",
+ "libremdbTorRedirectsChecks",
+ "libremdbTorCustomRedirects",
+ "libremdbI2pCustomRedirects",
+ "libremdbLokiCustomRedirects",
+ ],
+ r => {
+ disableImdb = r.disableImdb
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ imdbRedirects = r.imdbRedirects
+ libremdbNormalRedirectsChecks = r.libremdbNormalRedirectsChecks
+ libremdbNormalCustomRedirects = r.libremdbNormalCustomRedirects
+ libremdbTorRedirectsChecks = r.libremdbTorRedirectsChecks
+ libremdbTorCustomRedirects = r.libremdbTorCustomRedirects
+ libremdbI2pCustomRedirects = r.libremdbI2pCustomRedirects
+ libremdbLokiCustomRedirects = r.libremdbLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function redirect(url, type, initiator, disableOverride) {
- if (disableImdb && !disableOverride) return;
- if (url.pathname == "/") return;
- if (type != "main_frame") return;
- const all = [
- ...imdbRedirects.libremdb.normal,
- ...libremdbNormalCustomRedirects
- ];
- if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.some(rx => rx.test(url.href))) return;
+ if (disableImdb && !disableOverride) return
+ if (url.pathname == "/") return
+ if (type != "main_frame") return
+ const all = [...imdbRedirects.libremdb.normal, ...libremdbNormalCustomRedirects]
+ if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return
+ if (!targets.some(rx => rx.test(url.href))) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...libremdbLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...libremdbI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...libremdbLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...libremdbI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}${url.pathname}`
}
function reverse(url) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...imdbRedirects.libremdb.normal,
- ...imdbRedirects.libremdb.tor,
- ...libremdbNormalCustomRedirects,
- ...libremdbTorCustomRedirects,
- ...libremdbI2pCustomRedirects,
- ...libremdbLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(url)
+ const all = [
+ ...imdbRedirects.libremdb.normal,
+ ...imdbRedirects.libremdb.tor,
+ ...libremdbNormalCustomRedirects,
+ ...libremdbTorCustomRedirects,
+ ...libremdbI2pCustomRedirects,
+ ...libremdbLokiCustomRedirects,
+ ]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- resolve(`https://imdb.com${url.pathname}${url.search}`);
- })
+ resolve(`https://imdb.com${url.pathname}${url.search}`)
+ })
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableImdb && !disableOverride) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...imdbRedirects.libremdb.tor,
- ...imdbRedirects.libremdb.normal,
+ return new Promise(async resolve => {
+ await init()
+ if (disableImdb && !disableOverride) {
+ resolve()
+ return
+ }
+ let protocolHost = utils.protocolHost(url)
+ const all = [
+ ...imdbRedirects.libremdb.tor,
+ ...imdbRedirects.libremdb.normal,
- ...libremdbNormalCustomRedirects,
- ...libremdbTorCustomRedirects,
- ...libremdbI2pCustomRedirects,
- ...libremdbLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ ...libremdbNormalCustomRedirects,
+ ...libremdbTorCustomRedirects,
+ ...libremdbI2pCustomRedirects,
+ ...libremdbLokiCustomRedirects,
+ ]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...libremdbLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...libremdbI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...libremdbLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...libremdbI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.set({
- disableImdb: true,
- imdbRedirects: redirects,
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.set(
+ {
+ disableImdb: true,
+ imdbRedirects: redirects,
- libremdbNormalRedirectsChecks: [...redirects.libremdb.normal],
- libremdbNormalCustomRedirects: [],
+ libremdbNormalRedirectsChecks: [...redirects.libremdb.normal],
+ libremdbNormalCustomRedirects: [],
- libremdbTorRedirectsChecks: [...redirects.libremdb.tor],
- libremdbTorCustomRedirects: [],
+ libremdbTorRedirectsChecks: [...redirects.libremdb.tor],
+ libremdbTorCustomRedirects: [],
- libremdbI2pRedirectsChecks: [],
- libremdbI2pCustomRedirects: [],
+ libremdbI2pRedirectsChecks: [],
+ libremdbI2pCustomRedirects: [],
- libremdbLokiRedirectsChecks: [],
- libremdbLokiCustomRedirects: []
- }, () => resolve());
- });
- })
+ libremdbLokiRedirectsChecks: [],
+ libremdbLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
}
export default {
- setRedirects,
+ setRedirects,
- redirect,
- reverse,
- switchInstance,
+ redirect,
+ reverse,
+ switchInstance,
- initDefaults
-};
+ initDefaults,
+}
diff --git a/src/assets/javascripts/imgur.js b/src/assets/javascripts/imgur.js
index f373276f..9ccd24af 100644
--- a/src/assets/javascripts/imgur.js
+++ b/src/assets/javascripts/imgur.js
@@ -1,6 +1,6 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
const targets = /^https?:\/{2}([im]\.)?imgur\.(com|io)(\/|$)/
@@ -10,91 +10,95 @@ const protocols = new Array("normal", "tor", "i2p", "loki")
let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- redirects.rimgo = dataJson.rimgo;
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ redirects.rimgo = dataJson.rimgo
- rimgoNormalRedirectsChecks = [...redirects.rimgo.normal];
- rimgoTorRedirectsChecks = [...redirects.rimgo.tor];
- rimgoI2pRedirectsChecks = [...redirects.rimgo.i2p];
+ rimgoNormalRedirectsChecks = [...redirects.rimgo.normal]
+ rimgoTorRedirectsChecks = [...redirects.rimgo.tor]
+ rimgoI2pRedirectsChecks = [...redirects.rimgo.i2p]
- for (const instance of r.cloudflareBlackList) {
- const a = rimgoNormalRedirectsChecks.indexOf(instance);
- if (a > -1) rimgoNormalRedirectsChecks.splice(a, 1);
+ for (const instance of r.cloudflareBlackList) {
+ const a = rimgoNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) rimgoNormalRedirectsChecks.splice(a, 1)
- const b = rimgoTorRedirectsChecks.indexOf(instance);
- if (b > -1) rimgoTorRedirectsChecks.splice(b, 1);
+ const b = rimgoTorRedirectsChecks.indexOf(instance)
+ if (b > -1) rimgoTorRedirectsChecks.splice(b, 1)
- const c = rimgoI2pRedirectsChecks.indexOf(instance);
- if (c > -1) rimgoI2pRedirectsChecks.splice(c, 1);
- }
+ const c = rimgoI2pRedirectsChecks.indexOf(instance)
+ if (c > -1) rimgoI2pRedirectsChecks.splice(c, 1)
+ }
- browser.storage.local.set({
- imgurRedirects: redirects,
- rimgoNormalRedirectsChecks,
- rimgoTorRedirectsChecks,
- rimgoI2pRedirectsChecks,
- }, () => resolve());
- })
- })
+ browser.storage.local.set(
+ {
+ imgurRedirects: redirects,
+ rimgoNormalRedirectsChecks,
+ rimgoTorRedirectsChecks,
+ rimgoI2pRedirectsChecks,
+ },
+ () => resolve()
+ )
+ })
+ })
}
-let
- disableImgur,
- imgurRedirects,
- protocol,
- protocolFallback,
- rimgoNormalRedirectsChecks,
- rimgoNormalCustomRedirects,
- rimgoTorRedirectsChecks,
- rimgoTorCustomRedirects,
- rimgoI2pRedirectsChecks,
- rimgoI2pCustomRedirects,
- rimgoLokiCustomRedirects;
+let disableImgur,
+ imgurRedirects,
+ protocol,
+ protocolFallback,
+ rimgoNormalRedirectsChecks,
+ rimgoNormalCustomRedirects,
+ rimgoTorRedirectsChecks,
+ rimgoTorCustomRedirects,
+ rimgoI2pRedirectsChecks,
+ rimgoI2pCustomRedirects,
+ rimgoLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableImgur",
- "imgurRedirects",
- "protocol",
- "protocolFallback",
- "rimgoNormalRedirectsChecks",
- "rimgoNormalCustomRedirects",
- "rimgoTorRedirectsChecks",
- "rimgoTorCustomRedirects",
- "rimgoI2pRedirectsChecks",
- "rimgoI2pCustomRedirects",
- "rimgoLokiCustomRedirects"
- ],
- r => {
- disableImgur = r.disableImgur;
- imgurRedirects = r.imgurRedirects;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- rimgoNormalRedirectsChecks = r.rimgoNormalRedirectsChecks;
- rimgoNormalCustomRedirects = r.rimgoNormalCustomRedirects;
- rimgoTorRedirectsChecks = r.rimgoTorRedirectsChecks;
- rimgoTorCustomRedirects = r.rimgoTorCustomRedirects;
- rimgoI2pRedirectsChecks = r.rimgoI2pRedirectsChecks;
- rimgoI2pCustomRedirects = r.rimgoI2pCustomRedirects;
- rimgoLokiCustomRedirects = r.rimgoLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableImgur",
+ "imgurRedirects",
+ "protocol",
+ "protocolFallback",
+ "rimgoNormalRedirectsChecks",
+ "rimgoNormalCustomRedirects",
+ "rimgoTorRedirectsChecks",
+ "rimgoTorCustomRedirects",
+ "rimgoI2pRedirectsChecks",
+ "rimgoI2pCustomRedirects",
+ "rimgoLokiCustomRedirects",
+ ],
+ r => {
+ disableImgur = r.disableImgur
+ imgurRedirects = r.imgurRedirects
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ rimgoNormalRedirectsChecks = r.rimgoNormalRedirectsChecks
+ rimgoNormalCustomRedirects = r.rimgoNormalCustomRedirects
+ rimgoTorRedirectsChecks = r.rimgoTorRedirectsChecks
+ rimgoTorCustomRedirects = r.rimgoTorCustomRedirects
+ rimgoI2pRedirectsChecks = r.rimgoI2pRedirectsChecks
+ rimgoI2pCustomRedirects = r.rimgoI2pCustomRedirects
+ rimgoLokiCustomRedirects = r.rimgoLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
// https://imgur.com/gallery/s4WXQmn
@@ -104,108 +108,127 @@ browser.storage.onChanged.addListener(init)
// https://i.imgur.com/CFSQArP.jpeg
function all() {
- return [
- ...imgurRedirects.rimgo.normal,
- ...imgurRedirects.rimgo.tor,
- ...imgurRedirects.rimgo.i2p,
- ...rimgoNormalCustomRedirects,
- ...rimgoTorCustomRedirects,
- ...rimgoI2pCustomRedirects,
- ...rimgoLokiCustomRedirects
- ];
+ return [
+ ...imgurRedirects.rimgo.normal,
+ ...imgurRedirects.rimgo.tor,
+ ...imgurRedirects.rimgo.i2p,
+ ...rimgoNormalCustomRedirects,
+ ...rimgoTorCustomRedirects,
+ ...rimgoI2pCustomRedirects,
+ ...rimgoLokiCustomRedirects,
+ ]
}
function redirect(url, type, initiator, disableOverride) {
- if (disableImgur && !disableOverride) return;
- if (url.pathname == "/" && !disableOverride) return;
- if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media",].includes(type)) return;
- if (initiator && (all().includes(initiator.origin) || targets.test(initiator.host))) return;
- if (!targets.test(url.href)) return;
- if (url.pathname.includes("delete/")) return;
+ if (disableImgur && !disableOverride) return
+ if (url.pathname == "/" && !disableOverride) return
+ if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return
+ if (initiator && (all().includes(initiator.origin) || targets.test(initiator.host))) return
+ if (!targets.test(url.href)) return
+ if (url.pathname.includes("delete/")) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...rimgoLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...rimgoLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}${url.pathname}${url.search}`
}
function reverse(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- resolve(`https://imgur.com${url.pathname}${url.search}`);
- })
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ resolve(`https://imgur.com${url.pathname}${url.search}`)
+ })
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableImgur && !disableOverride) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...rimgoLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects];
- }
+ return new Promise(async resolve => {
+ await init()
+ if (disableImgur && !disableOverride) {
+ resolve()
+ return
+ }
+ let protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...rimgoLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList', async r => {
- rimgoNormalRedirectsChecks = [...redirects.rimgo.normal];
- for (const instance of r.cloudflareBlackList) {
- const i = rimgoNormalRedirectsChecks.indexOf(instance);
- if (i > -1) rimgoNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableImgur: false,
- imgurRedirects: redirects,
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ rimgoNormalRedirectsChecks = [...redirects.rimgo.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const i = rimgoNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) rimgoNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableImgur: false,
+ imgurRedirects: redirects,
- rimgoNormalRedirectsChecks: rimgoNormalRedirectsChecks,
- rimgoNormalCustomRedirects: [],
+ rimgoNormalRedirectsChecks: rimgoNormalRedirectsChecks,
+ rimgoNormalCustomRedirects: [],
- rimgoTorRedirectsChecks: [...redirects.rimgo.tor],
- rimgoTorCustomRedirects: [],
+ rimgoTorRedirectsChecks: [...redirects.rimgo.tor],
+ rimgoTorCustomRedirects: [],
- rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p],
- rimgoI2pCustomRedirects: [],
+ rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p],
+ rimgoI2pCustomRedirects: [],
- rimgoLokiRedirectsChecks: [...redirects.rimgo.loki],
- rimgoLokiCustomRedirects: []
- }, () => resolve());
- });
- });
- });
+ rimgoLokiRedirectsChecks: [...redirects.rimgo.loki],
+ rimgoLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
- redirect,
- reverse,
- initDefaults,
- switchInstance,
-};
+ setRedirects,
+ redirect,
+ reverse,
+ initDefaults,
+ switchInstance,
+}
diff --git a/src/assets/javascripts/instagram.js b/src/assets/javascripts/instagram.js
index 182ff4d9..45a27cb2 100644
--- a/src/assets/javascripts/instagram.js
+++ b/src/assets/javascripts/instagram.js
@@ -1,200 +1,208 @@
-window.browser = window.browser || window.chrome;
-import utils from './utils.js'
+window.browser = window.browser || window.chrome
+import utils from "./utils.js"
-const targets = [
- "instagram.com",
- "www.instagram.com",
-];
+const targets = ["instagram.com", "www.instagram.com"]
const frontends = new Array("bibliogram")
const protocols = new Array("normal", "tor", "i2p", "loki")
-let redirects = {};
+let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', async r => {
- redirects.bibliogram = val;
- bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = bibliogramNormalRedirectsChecks.indexOf(instance);
- if (a > -1) bibliogramNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- instagramRedirects: redirects,
- bibliogramNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ redirects.bibliogram = val
+ bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = bibliogramNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) bibliogramNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ instagramRedirects: redirects,
+ bibliogramNormalRedirectsChecks,
+ })
+ })
}
-let
- disableInstagram,
- protocol,
- protocolFallback,
- instagramRedirects,
- bibliogramNormalRedirectsChecks,
- bibliogramTorRedirectsChecks,
- bibliogramNormalCustomRedirects,
- bibliogramTorCustomRedirects,
- bibliogramI2pCustomRedirects,
- bibliogramLokiCustomRedirects;
+let disableInstagram,
+ protocol,
+ protocolFallback,
+ instagramRedirects,
+ bibliogramNormalRedirectsChecks,
+ bibliogramTorRedirectsChecks,
+ bibliogramNormalCustomRedirects,
+ bibliogramTorCustomRedirects,
+ bibliogramI2pCustomRedirects,
+ bibliogramLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableInstagram",
- "protocol",
- "protocolFallback",
- "instagramRedirects",
- "bibliogramNormalRedirectsChecks",
- "bibliogramTorRedirectsChecks",
- "bibliogramNormalCustomRedirects",
- "bibliogramTorCustomRedirects",
- "bibliogramI2pCustomRedirects",
- "bibliogramLokiCustomRedirects"
- ],
- r => {
- disableInstagram = r.disableInstagram;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- instagramRedirects = r.instagramRedirects;
- bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks;
- bibliogramTorRedirectsChecks = r.bibliogramTorRedirectsChecks;
- bibliogramNormalCustomRedirects = r.bibliogramNormalCustomRedirects;
- bibliogramTorCustomRedirects = r.bibliogramTorCustomRedirects;
- bibliogramI2pCustomRedirects = r.bibliogramI2pCustomRedirects;
- bibliogramLokiCustomRedirects = r.bibliogramLokiCustomRedirects
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableInstagram",
+ "protocol",
+ "protocolFallback",
+ "instagramRedirects",
+ "bibliogramNormalRedirectsChecks",
+ "bibliogramTorRedirectsChecks",
+ "bibliogramNormalCustomRedirects",
+ "bibliogramTorCustomRedirects",
+ "bibliogramI2pCustomRedirects",
+ "bibliogramLokiCustomRedirects",
+ ],
+ r => {
+ disableInstagram = r.disableInstagram
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ instagramRedirects = r.instagramRedirects
+ bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks
+ bibliogramTorRedirectsChecks = r.bibliogramTorRedirectsChecks
+ bibliogramNormalCustomRedirects = r.bibliogramNormalCustomRedirects
+ bibliogramTorCustomRedirects = r.bibliogramTorCustomRedirects
+ bibliogramI2pCustomRedirects = r.bibliogramI2pCustomRedirects
+ bibliogramLokiCustomRedirects = r.bibliogramLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function all() {
- return [
- ...instagramRedirects.bibliogram.normal,
- ...instagramRedirects.bibliogram.tor,
- ...bibliogramNormalCustomRedirects,
- ...bibliogramTorCustomRedirects,
- ...bibliogramI2pCustomRedirects,
- ...bibliogramLokiCustomRedirects
- ]
+ return [
+ ...bibliogramNormalRedirectsChecks,
+ ...bibliogramTorRedirectsChecks,
+ ...bibliogramNormalCustomRedirects,
+ ...bibliogramTorCustomRedirects,
+ ...bibliogramI2pCustomRedirects,
+ ...bibliogramLokiCustomRedirects,
+ ]
}
function redirect(url, type, initiator, disableOverride) {
- if (disableInstagram && !disableOverride) return;
- if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
- if (!targets.includes(url.host)) return;
- if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return;
+ if (disableInstagram && !disableOverride) return
+ if (!targets.includes(url.host)) return
+ if (initiator && all().includes(initiator.origin)) return "BYPASSTAB"
+ if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return
- const bypassPaths = [/about/, /explore/, /support/, /press/, /api/, /privacy/, /safety/, /admin/, /\/(accounts\/|embeds?.js)/];
- if (bypassPaths.some(rx => rx.test(url.pathname))) return;
+ const bypassPaths = [/about/, /explore/, /support/, /press/, /api/, /privacy/, /safety/, /admin/, /\/(accounts\/|embeds?.js)/]
+ if (bypassPaths.some(rx => rx.test(url.pathname))) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...bibliogramLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...bibliogramI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
- let randomInstance = utils.getRandomInstance(instancesList)
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...bibliogramLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...bibliogramI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
+ let randomInstance = utils.getRandomInstance(instancesList)
- const reservedPaths = ["u", "p", "privacy",];
- if (url.pathname === "/" || reservedPaths.includes(url.pathname.split("/")[1]))
- return `${randomInstance}${url.pathname}${url.search}`;
- if (url.pathname.startsWith("/reel") || url.pathname.startsWith("/tv"))
- return `${randomInstance}/p${url.pathname.replace(/\/reel|\/tv/i, '')}${url.search}`;
- else
- return `${randomInstance}/u${url.pathname}${url.search}`; // Likely a user profile, redirect to '/u/...'
+ const reservedPaths = ["u", "p", "privacy"]
+ if (url.pathname === "/" || reservedPaths.includes(url.pathname.split("/")[1])) return `${randomInstance}${url.pathname}${url.search}`
+ if (url.pathname.startsWith("/reel") || url.pathname.startsWith("/tv")) return `${randomInstance}/p${url.pathname.replace(/\/reel|\/tv/i, "")}${url.search}`
+ else return `${randomInstance}/u${url.pathname}${url.search}` // Likely a user profile, redirect to '/u/...'
}
function reverse(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
- if (url.pathname.startsWith('/p')) resolve(`https://instagram.com${url.pathname.replace('/p', '')}${url.search}`);
- if (url.pathname.startsWith('/u')) resolve(`https://instagram.com${url.pathname.replace('/u', '')}${url.search}`);
- resolve(`https://instagram.com${url.pathname}${url.search}`);
- })
+ if (url.pathname.startsWith("/p")) resolve(`https://instagram.com${url.pathname.replace("/p", "")}${url.search}`)
+ if (url.pathname.startsWith("/u")) resolve(`https://instagram.com${url.pathname.replace("/u", "")}${url.search}`)
+ resolve(`https://instagram.com${url.pathname}${url.search}`)
+ })
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableInstagram && !disableOverride) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ if (disableInstagram && !disableOverride) {
+ resolve()
+ return
+ }
+ let protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...bibliogramLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...bibliogramI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...bibliogramLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...bibliogramI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList', r => {
- bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal];
- for (const instance of r.cloudflareBlackList) {
- const i = bibliogramNormalRedirectsChecks.indexOf(instance);
- if (i > -1) bibliogramNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableInstagram: false,
- instagramRedirects: redirects,
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", r => {
+ bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const i = bibliogramNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) bibliogramNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set({
+ disableInstagram: false,
+ instagramRedirects: redirects,
- bibliogramNormalRedirectsChecks: bibliogramNormalRedirectsChecks,
- bibliogramNormalCustomRedirects: [],
+ bibliogramNormalRedirectsChecks: bibliogramNormalRedirectsChecks,
+ bibliogramNormalCustomRedirects: [],
- bibliogramTorRedirectsChecks: [...redirects.bibliogram.tor],
- bibliogramTorCustomRedirects: [],
+ bibliogramTorRedirectsChecks: [...redirects.bibliogram.tor],
+ bibliogramTorCustomRedirects: [],
- bibliogramI2pRedirectsChecks: [...redirects.bibliogram.i2p],
- bibliogramI2pCustomRedirects: [],
+ bibliogramI2pRedirectsChecks: [...redirects.bibliogram.i2p],
+ bibliogramI2pCustomRedirects: [],
- bibliogramLokiRedirectsChecks: [...redirects.bibliogram.loki],
- bibliogramLokiCustomRedirects: []
- })
- resolve();
- }
- )
- })
- })
+ bibliogramLokiRedirectsChecks: [...redirects.bibliogram.loki],
+ bibliogramLokiCustomRedirects: [],
+ })
+ resolve()
+ })
+ })
+ })
}
export default {
- setRedirects,
- reverse,
- redirect,
- initDefaults,
- switchInstance,
-};
+ setRedirects,
+ reverse,
+ redirect,
+ initDefaults,
+ switchInstance,
+}
diff --git a/src/assets/javascripts/lbry.js b/src/assets/javascripts/lbry.js
index cfdf1bb0..f0698d36 100644
--- a/src/assets/javascripts/lbry.js
+++ b/src/assets/javascripts/lbry.js
@@ -1,8 +1,8 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-let targets = ["odysee.com"];
+let targets = ["odysee.com"]
const frontends = new Array("librarian")
const protocols = new Array("normal", "tor", "i2p", "loki")
@@ -10,160 +10,187 @@ const protocols = new Array("normal", "tor", "i2p", "loki")
let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.librarian = val;
- librarianNormalRedirectsChecks = [...redirects.librarian.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = librarianNormalRedirectsChecks.indexOf(instance);
- if (a > -1) librarianNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- lbryTargetsRedirects: redirects,
- librarianNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.librarian = val
+ librarianNormalRedirectsChecks = [...redirects.librarian.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = librarianNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) librarianNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ lbryTargetsRedirects: redirects,
+ librarianNormalRedirectsChecks,
+ })
+ })
}
-let
- disableLbryTargets,
- protocol,
- protocolFallback,
- lbryTargetsRedirects,
- librarianNormalRedirectsChecks,
- librarianNormalCustomRedirects,
- librarianTorRedirectsChecks,
- librarianTorCustomRedirects,
- librarianI2pRedirectsChecks,
- librarianI2pCustomRedirects,
- librarianLokiCustomRedirects;
+let disableLbryTargets,
+ lbryFrontend,
+ protocol,
+ protocolFallback,
+ lbryTargetsRedirects,
+ librarianNormalRedirectsChecks,
+ librarianNormalCustomRedirects,
+ librarianTorRedirectsChecks,
+ librarianTorCustomRedirects,
+ librarianI2pRedirectsChecks,
+ librarianI2pCustomRedirects,
+ librarianLokiCustomRedirects
function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableLbryTargets",
- "protocol",
- "protocolFallback",
- "lbryTargetsRedirects",
- "librarianNormalRedirectsChecks",
- "librarianNormalCustomRedirects",
- "librarianTorRedirectsChecks",
- "librarianTorCustomRedirects",
- "librarianI2pRedirectsChecks",
- "librarianI2pCustomRedirects",
- "librarianLokiCustomRedirects"
- ],
- r => {
- disableLbryTargets = r.disableLbryTargets;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- lbryTargetsRedirects = r.lbryTargetsRedirects;
- librarianNormalRedirectsChecks = r.librarianNormalRedirectsChecks;
- librarianNormalCustomRedirects = r.librarianNormalCustomRedirects;
- librarianTorRedirectsChecks = r.librarianTorRedirectsChecks;
- librarianTorCustomRedirects = r.librarianTorCustomRedirects;
- librarianI2pRedirectsChecks = r.librarianI2pRedirectsChecks;
- librarianI2pCustomRedirects = r.librarianI2pCustomRedirects;
- librarianLokiCustomRedirects = r.librarianLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "disableLbryTargets",
+ "lbryFrontend",
+ "protocol",
+ "protocolFallback",
+ "lbryTargetsRedirects",
+ "librarianNormalRedirectsChecks",
+ "librarianNormalCustomRedirects",
+ "librarianTorRedirectsChecks",
+ "librarianTorCustomRedirects",
+ "librarianI2pRedirectsChecks",
+ "librarianI2pCustomRedirects",
+ "librarianLokiCustomRedirects",
+ ],
+ r => {
+ disableLbryTargets = r.disableLbryTargets
+ lbryFrontend = r.lbryFrontend
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ lbryTargetsRedirects = r.lbryTargetsRedirects
+ librarianNormalRedirectsChecks = r.librarianNormalRedirectsChecks
+ librarianNormalCustomRedirects = r.librarianNormalCustomRedirects
+ librarianTorRedirectsChecks = r.librarianTorRedirectsChecks
+ librarianTorCustomRedirects = r.librarianTorCustomRedirects
+ librarianI2pRedirectsChecks = r.librarianI2pRedirectsChecks
+ librarianI2pCustomRedirects = r.librarianI2pCustomRedirects
+ librarianLokiCustomRedirects = r.librarianLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function all() {
- return [
- ...redirects.librarian.normal,
- ...redirects.librarian.tor,
- ...librarianNormalCustomRedirects,
- ...librarianTorCustomRedirects,
- ...librarianI2pCustomRedirects,
- ...librarianLokiCustomRedirects
- ];
+ return [...redirects.librarian.normal, ...redirects.librarian.tor, ...librarianNormalCustomRedirects, ...librarianTorCustomRedirects, ...librarianI2pCustomRedirects, ...librarianLokiCustomRedirects]
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableLbryTargets && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ if (disableLbryTargets && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...librarianLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...librarianI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...librarianLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...librarianI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function redirect(url, type, initiator, disableOverride) {
- if (disableLbryTargets && !disableOverride) return;
- if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.includes(url.host)) return;
- if (type != "main_frame") return;
+ if (disableLbryTargets && !disableOverride) return
+ if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return
+ if (!targets.includes(url.host)) return
+ if (type != ("main_frame" || "sub_frame")) return
+ //https://odysee.com/$/embed/the-anti-smartphone-revolution/22b482e450c4ca13c464eee8f51b3a52bbb942ae?r=7pAWcQybShS63wz486r8wVv9FpsDJ47A
+ // to
+ //https://{instance}/embed/@Coldfusion:f/the-anti-smartphone-revolution:2
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...librarianLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...librarianI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
-
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`;
+ let instancesList = []
+ switch (lbryFrontend) {
+ case "librarian":
+ switch (protocol) {
+ case "loki":
+ instancesList = [...librarianLokiCustomRedirects]
+ break
+ case "i2p":
+ instancesList = [...librarianI2pRedirectsChecks, ...librarianI2pCustomRedirects]
+ break
+ case "tor":
+ instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]
+ }
+ break
+ case "lbryDesktop":
+ if (type == "main_frame") {
+ return url.href.replace(/^https?:\/{2}odysee\.com\//, "lbry://").replace(/:(?=[a-zA-Z0-9])/g, "#")
+ }
+ if (instancesList.length === 0) return
+ }
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}${url.pathname}${url.search}`
}
function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.set({
- disableLbryTargets: true,
- lbryTargetsRedirects: redirects,
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.set(
+ {
+ disableLbryTargets: true,
+ lbryFrontend: "librarian",
+ lbryTargetsRedirects: redirects,
- librarianNormalRedirectsChecks: [...redirects.librarian.normal],
- librarianNormalCustomRedirects: [],
+ librarianNormalRedirectsChecks: [...redirects.librarian.normal],
+ librarianNormalCustomRedirects: [],
- librarianTorRedirectsChecks: [...redirects.librarian.tor],
- librarianTorCustomRedirects: [],
+ librarianTorRedirectsChecks: [...redirects.librarian.tor],
+ librarianTorCustomRedirects: [],
- librarianI2pRedirectsChecks: [...redirects.librarian.i2p],
- librarianI2pCustomRedirects: [],
+ librarianI2pRedirectsChecks: [...redirects.librarian.i2p],
+ librarianI2pCustomRedirects: [],
- librarianLokiRedirectsChecks: [...redirects.librarian.loki],
- librarianLokiCustomRedirects: []
- }, () => resolve());
- });
- })
+ librarianLokiRedirectsChecks: [...redirects.librarian.loki],
+ librarianLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
}
export default {
- setRedirects,
- switchInstance,
- redirect,
- initDefaults,
-};
+ setRedirects,
+ switchInstance,
+ redirect,
+ initDefaults,
+}
diff --git a/src/assets/javascripts/localise.js b/src/assets/javascripts/localise.js
index a4bbca92..34ccd66b 100644
--- a/src/assets/javascripts/localise.js
+++ b/src/assets/javascripts/localise.js
@@ -1,31 +1,31 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
function localisePage() {
- function getMessage(tag) {
- return tag.replace(/__MSG_(\w+)__/g, (_match, v1) => {
- return v1 ? browser.i18n.getMessage(v1) : null;
- });
- }
+ function getMessage(tag) {
+ return tag.replace(/__MSG_(\w+)__/g, (_match, v1) => {
+ return v1 ? browser.i18n.getMessage(v1) : null
+ })
+ }
- const elements = document.querySelectorAll("[data-localise]");
- for (let i in elements)
- if (elements.hasOwnProperty(i)) {
- const obj = elements[i];
- const tag = obj.getAttribute("data-localise").toString();
- const msg = getMessage(tag);
- if (msg && msg !== tag) obj.textContent = msg;
- }
+ const elements = document.querySelectorAll("[data-localise]")
+ for (let i in elements)
+ if (elements.hasOwnProperty(i)) {
+ const obj = elements[i]
+ const tag = obj.getAttribute("data-localise").toString()
+ const msg = getMessage(tag)
+ if (msg && msg !== tag) obj.textContent = msg
+ }
- const placeholders = document.querySelectorAll("[data-localise-placeholder]");
- for (let i in placeholders)
- if (placeholders.hasOwnProperty(i)) {
- const obj = placeholders[i];
- const tag = obj.getAttribute("data-localise-placeholder").toString();
- const msg = getMessage(tag);
- if (msg && msg !== tag) obj.placeholder = msg;
- }
+ const placeholders = document.querySelectorAll("[data-localise-placeholder]")
+ for (let i in placeholders)
+ if (placeholders.hasOwnProperty(i)) {
+ const obj = placeholders[i]
+ const tag = obj.getAttribute("data-localise-placeholder").toString()
+ const msg = getMessage(tag)
+ if (msg && msg !== tag) obj.placeholder = msg
+ }
}
export default {
- localisePage
+ localisePage,
}
diff --git a/src/assets/javascripts/maps.js b/src/assets/javascripts/maps.js
index fd65b1c5..9fb10b9d 100644
--- a/src/assets/javascripts/maps.js
+++ b/src/assets/javascripts/maps.js
@@ -1,247 +1,294 @@
-"use strict";
+"use strict"
-window.browser = window.browser || window.chrome;
-import utils from './utils.js'
+window.browser = window.browser || window.chrome
+import utils from "./utils.js"
-const targets = /^https?:\/{2}(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/;
+const targets = /^https?:\/{2}(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/
-let redirects = {
- 'osm': {
- "normal": [
- "https://www.openstreetmap.org"
- ]
- },
- 'facil': {
- "normal": [
- "https://facilmap.org"
- ],
- "tor": [],
- "i2p": [],
- "loki": []
- }
-};
+const frontends = new Array("facil")
+const protocols = new Array("normal", "tor", "i2p", "loki")
+let redirects = {}
-let
- disableMaps,
- mapsFrontend,
- protocol,
- protocolFallback,
- facilNormalRedirectsChecks,
- facilNormalCustomRedirects,
- facilTorCustomRedirects,
- facilI2pCustomRedirects,
- facilLokiCustomRedirects;
-
-function init() {
- browser.storage.local.get(
- [
- "disableMaps",
- "mapsFrontend",
- "protocol",
- "protocolFallback",
- "facilNormalRedirectsChecks",
- "facilNormalCustomRedirects",
- "facilTorCustomRedirects",
- "facilI2pCustomRedirects",
- "facilLokiCustomRedirects"
- ],
- r => {
- disableMaps = r.disableMaps;
- mapsFrontend = r.mapsFrontend;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- facilNormalRedirectsChecks = r.facilNormalRedirectsChecks;
- facilNormalCustomRedirects = r.facilNormalCustomRedirects;
- facilTorCustomRedirects = r.facilTorCustomRedirects;
- facilI2pCustomRedirects = r.facilI2pCustomRedirects;
- facilLokiCustomRedirects = r.facilLokiCustomRedirects;
- }
- )
+for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
-init();
-browser.storage.onChanged.addListener(init)
-
-function redirect(url, initiator) {
- if (disableMaps) return;
- if (initiator && initiator.host === "earth.google.com") return;
- if (!url.href.match(targets)) return;
- const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/;
- const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/;
- const placeRegex = /\/place\/(.*)\//;
- const travelModes = {
- driving: "fossgis_osrm_car",
- walking: "fossgis_osrm_foot",
- bicycling: "fossgis_osrm_bike",
- transit: "fossgis_osrm_car", // not implemented on OSM, default to car.
- };
- const travelModesFacil = {
- driving: "car",
- walking: "pedestrian",
- bicycling: "bicycle",
- transit: "car", // not implemented on Facil, default to car.
- };
- const osmLayers = {
- none: "S",
- transit: "T",
- traffic: "S", // not implemented on OSM, default to standard.
- bicycling: "C",
- };
- function addressToLatLng(address) {
- const xmlhttp = new XMLHttpRequest();
- xmlhttp.open("GET", `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`, false);
- xmlhttp.send();
- if (xmlhttp.status === 200) {
- const json = JSON.parse(xmlhttp.responseText)[0];
- if (json) {
- console.log('json', json)
- return [
- `${json.lat},${json.lon}`,
- `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`,
- ];
- }
- }
- console.info("Error: Status is " + xmlhttp.status);
- }
+redirects.osm = {}
+redirects.osm.normal = ["https://www.openstreetmap.org"]
- let randomInstance;
- if (mapsFrontend == 'osm') randomInstance = utils.getRandomInstance(redirects.osm.normal);
+function setRedirects(val) {
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.facil = val
+ facilNormalRedirectsChecks = [...redirects.facil.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = facilNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) facilNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ mapsRedirects: redirects,
+ facilNormalRedirectsChecks,
+ })
+ })
+}
- if (mapsFrontend == 'facil') {
- if (protocol == 'loki') randomInstance = utils.getRandomInstance(...facilLokiCustomRedirects);
- else if (protocol == 'i2p') randomInstance = utils.getRandomInstance(...facilI2pCustomRedirects);
- else if (protocol == 'tor') randomInstance = utils.getRandomInstance(...facilTorCustomRedirects);
- if ((randomInstance == "" && protocolFallback) || protocol == 'normal') {
- randomInstance = utils.getRandomInstance([...facilNormalRedirectsChecks, ...facilNormalCustomRedirects]);
- }
- }
+let disableMaps,
+ mapsFrontend,
+ protocol,
+ protocolFallback,
+ facilNormalRedirectsChecks,
+ facilNormalCustomRedirects,
+ facilTorRedirectsChecks,
+ facilTorCustomRedirects,
+ facilI2pRedirectsChecks,
+ facilI2pCustomRedirects,
+ facilLokiRedirectsChecks,
+ facilLokiCustomRedirects
- let mapCentre = "#";
- let prefs = {};
+function init() {
+ browser.storage.local.get(
+ [
+ "disableMaps",
+ "mapsFrontend",
+ "protocol",
+ "protocolFallback",
+ "facilNormalRedirectsChecks",
+ "facilNormalCustomRedirects",
+ "facilTorRedirectsChecks",
+ "facilTorCustomRedirects",
+ "facilI2pRedirectsChecks",
+ "facilI2pCustomRedirects",
+ "facilLokiRedirectsChecks",
+ "facilLokiCustomRedirects",
+ ],
+ r => {
+ disableMaps = r.disableMaps
+ mapsFrontend = r.mapsFrontend
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ facilNormalRedirectsChecks = r.facilNormalRedirectsChecks
+ facilNormalCustomRedirects = r.facilNormalCustomRedirects
+ facilTorRedirectsChecks = r.facilTorRedirectsChecks
+ facilTorCustomRedirects = r.facilTorCustomRedirects
+ facilI2pRedirectsChecks = r.facilI2pRedirectsChecks
+ facilI2pCustomRedirects = r.facilI2pCustomRedirects
+ facilLokiRedirectsChecks = r.facilLokiRedirectsChecks
+ facilLokiCustomRedirects = r.facilLokiCustomRedirects
+ }
+ )
+}
- if (url.pathname.match(mapCentreRegex)) { // Set map centre if present
- var [, lat, lon, zoom] = url.pathname.match(mapCentreRegex);
- } else if (url.searchParams.has("center")) {
- var [lat, lon] = url.searchParams.get("center").split(",");
- var zoom = url.searchParams.get("zoom") ?? "17";
- }
+init()
+browser.storage.onChanged.addListener(init)
- if (lat && lon && zoom) {
- if (mapsFrontend == 'osm') mapCentre = `#map=${zoom}/${lat}/${lon}`;
- if (mapsFrontend == 'facil') mapCentre = `#${zoom}/${lat}/${lon}`;
- }
+function redirect(url, initiator) {
+ if (disableMaps) return
+ if (initiator && initiator.host === "earth.google.com") return
+ if (!url.href.match(targets)) return
+ const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/
+ const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/
+ const placeRegex = /\/place\/(.*)\//
+ const travelModes = {
+ driving: "fossgis_osrm_car",
+ walking: "fossgis_osrm_foot",
+ bicycling: "fossgis_osrm_bike",
+ transit: "fossgis_osrm_car", // not implemented on OSM, default to car.
+ }
+ const travelModesFacil = {
+ driving: "car",
+ walking: "pedestrian",
+ bicycling: "bicycle",
+ transit: "car", // not implemented on Facil, default to car.
+ }
+ const osmLayers = {
+ none: "S",
+ transit: "T",
+ traffic: "S", // not implemented on OSM, default to standard.
+ bicycling: "C",
+ }
+ function addressToLatLng(address) {
+ const xmlhttp = new XMLHttpRequest()
+ xmlhttp.open("GET", `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`, false)
+ xmlhttp.send()
+ if (xmlhttp.status === 200) {
+ const json = JSON.parse(xmlhttp.responseText)[0]
+ if (json) {
+ console.log("json", json)
+ return [`${json.lat},${json.lon}`, `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`]
+ }
+ }
+ console.info("Error: Status is " + xmlhttp.status)
+ }
- if (url.searchParams.get("layer")) prefs.layers = osmLayers[url.searchParams.get("layer")];
+ let instancesList
+ switch (mapsFrontend) {
+ case "osm":
+ instancesList = [...redirects.osm.normal]
+ break
+ case "facil":
+ switch (protocol) {
+ case "loki":
+ instancesList = [...facilLokiRedirectsChecks, ...facilLokiCustomRedirects]
+ break
+ case "i2p":
+ instancesList = [...facilI2pRedirectsChecks, ...facilI2pCustomRedirects]
+ break
+ case "tor":
+ instancesList = [...facilTorRedirectsChecks, ...facilTorCustomRedirects]
+ }
+ if ((instancesList == "" && protocolFallback) || protocol == "normal") {
+ instancesList = [...facilNormalRedirectsChecks, ...facilNormalCustomRedirects]
+ }
+ }
+ const randomInstance = utils.getRandomInstance(instancesList)
- if (url.pathname.includes("/embed")) { // Handle Google Maps Embed API
- // https://www.google.com/maps/embed/v1/place?key=AIzaSyD4iE2xVSpkLLOXoyqT-RuPwURN3ddScAI&q=Eiffel+Tower,Paris+France
- console.log("embed life");
+ let mapCentre = "#"
+ let prefs = {}
- let query = "";
- if (url.searchParams.has("q")) query = url.searchParams.get("q");
- else if (url.searchParams.has("query")) query = url.searchParams.has("query");
+ if (url.pathname.match(mapCentreRegex)) {
+ // Set map centre if present
+ var [, lat, lon, zoom] = url.pathname.match(mapCentreRegex)
+ } else if (url.searchParams.has("center")) {
+ var [lat, lon] = url.searchParams.get("center").split(",")
+ var zoom = url.searchParams.get("zoom") ?? "17"
+ }
- else if (url.searchParams.has("pb"))
- try { query = url.searchParams.get("pb").split(/!2s(.*?)!/)[1]; }
- catch (error) { console.error(error); } // Unable to find map marker in URL.
+ if (lat && lon && zoom) {
+ if (mapsFrontend == "osm") mapCentre = `#map=${zoom}/${lat}/${lon}`
+ if (mapsFrontend == "facil") mapCentre = `#${zoom}/${lat}/${lon}`
+ }
- let [coords, boundingbox] = addressToLatLng(query);
- prefs.bbox = boundingbox;
- prefs.marker = coords;
- prefs.layer = "mapnik";
- let prefsEncoded = new URLSearchParams(prefs).toString();
- if (mapsFrontend == 'osm') return `${randomInstance}/export/embed.html?${prefsEncoded}`;
- if (mapsFrontend == 'facil') return `${randomInstance}/#q=${query}`;
+ if (url.searchParams.get("layer")) prefs.layers = osmLayers[url.searchParams.get("layer")]
- } else if (url.pathname.includes("/dir")) { // Handle Google Maps Directions
- // https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling
+ if (url.pathname.includes("/embed")) {
+ // Handle Google Maps Embed API
+ // https://www.google.com/maps/embed/v1/place?key=AIzaSyD4iE2xVSpkLLOXoyqT-RuPwURN3ddScAI&q=Eiffel+Tower,Paris+France
+ console.log("embed life")
- let travMod = url.searchParams.get("travelmode");
- if (url.searchParams.has("travelmode")) prefs.engine = travelModes[travMod];
+ let query = ""
+ if (url.searchParams.has("q")) query = url.searchParams.get("q")
+ else if (url.searchParams.has("query")) query = url.searchParams.has("query")
+ else if (url.searchParams.has("pb"))
+ try {
+ query = url.searchParams.get("pb").split(/!2s(.*?)!/)[1]
+ } catch (error) {
+ console.error(error)
+ } // Unable to find map marker in URL.
- let orgVal = url.searchParams.get("origin");
- let destVal = url.searchParams.get("destination");
+ let [coords, boundingbox] = addressToLatLng(query)
+ prefs.bbox = boundingbox
+ prefs.marker = coords
+ prefs.layer = "mapnik"
+ let prefsEncoded = new URLSearchParams(prefs).toString()
+ if (mapsFrontend == "osm") return `${randomInstance}/export/embed.html?${prefsEncoded}`
+ if (mapsFrontend == "facil") return `${randomInstance}/#q=${query}`
+ } else if (url.pathname.includes("/dir")) {
+ // Handle Google Maps Directions
+ // https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling
- let org; addressToLatLng(orgVal, a => org = a);
- let dest; addressToLatLng(destVal, a => dest = a);
- prefs.route = `${org};${dest}`;
+ let travMod = url.searchParams.get("travelmode")
+ if (url.searchParams.has("travelmode")) prefs.engine = travelModes[travMod]
- let prefsEncoded = new URLSearchParams(prefs).toString();
- if (mapsFrontend == 'osm') return `${randomInstance}/directions?${prefsEncoded}${mapCentre}`;
- if (mapsFrontend == 'facil') return `${randomInstance}/#q=${orgVal}%20to%20${destVal}%20by%20${travelModesFacil[travMod]}`;
+ let orgVal = url.searchParams.get("origin")
+ let destVal = url.searchParams.get("destination")
- } else if (url.pathname.includes("data=") && url.pathname.match(dataLatLngRegex)) { // Get marker from data attribute
- // https://www.google.com/maps/place/41%C2%B001'58.2%22N+40%C2%B029'18.2%22E/@41.032833,40.4862063,17z/data=!3m1!4b1!4m6!3m5!1s0x0:0xf64286eaf72fc49d!7e2!8m2!3d41.0328329!4d40.4883948
- console.log("data life");
+ let org
+ addressToLatLng(orgVal, a => (org = a))
+ let dest
+ addressToLatLng(destVal, a => (dest = a))
+ prefs.route = `${org};${dest}`
- let [, mlat, mlon] = url.pathname.match(dataLatLngRegex);
+ let prefsEncoded = new URLSearchParams(prefs).toString()
+ if (mapsFrontend == "osm") return `${randomInstance}/directions?${prefsEncoded}${mapCentre}`
+ if (mapsFrontend == "facil") return `${randomInstance}/#q=${orgVal}%20to%20${destVal}%20by%20${travelModesFacil[travMod]}`
+ } else if (url.pathname.includes("data=") && url.pathname.match(dataLatLngRegex)) {
+ // Get marker from data attribute
+ // https://www.google.com/maps/place/41%C2%B001'58.2%22N+40%C2%B029'18.2%22E/@41.032833,40.4862063,17z/data=!3m1!4b1!4m6!3m5!1s0x0:0xf64286eaf72fc49d!7e2!8m2!3d41.0328329!4d40.4883948
+ console.log("data life")
- if (mapsFrontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`;
- if (mapsFrontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}`;
+ let [, mlat, mlon] = url.pathname.match(dataLatLngRegex)
- } else if (url.searchParams.has("ll")) { // Get marker from ll param
- // https://maps.google.com/?ll=38.882147,-76.99017
- console.log("ll life");
+ if (mapsFrontend == "osm") return `${randomInstance}/search?query=${mlat}%2C${mlon}`
+ if (mapsFrontend == "facil") return `${randomInstance}/#q=${mlat}%2C${mlon}`
+ } else if (url.searchParams.has("ll")) {
+ // Get marker from ll param
+ // https://maps.google.com/?ll=38.882147,-76.99017
+ console.log("ll life")
- const [mlat, mlon] = url.searchParams.get("ll").split(",");
+ const [mlat, mlon] = url.searchParams.get("ll").split(",")
- if (mapsFrontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`;
- if (mapsFrontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}`
- } else if (url.searchParams.has("viewpoint")) { // Get marker from viewpoint param.
- // https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.857832,2.295226&heading=-45&pitch=38&fov=80
- console.log("viewpoint life");
+ if (mapsFrontend == "osm") return `${randomInstance}/search?query=${mlat}%2C${mlon}`
+ if (mapsFrontend == "facil") return `${randomInstance}/#q=${mlat}%2C${mlon}`
+ } else if (url.searchParams.has("viewpoint")) {
+ // Get marker from viewpoint param.
+ // https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.857832,2.295226&heading=-45&pitch=38&fov=80
+ console.log("viewpoint life")
- const [mlat, mlon] = url.searchParams.get("viewpoint").split(",");
+ const [mlat, mlon] = url.searchParams.get("viewpoint").split(",")
- if (mapsFrontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`;
- if (mapsFrontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}`;
- } else { // Use query as search if present.
- console.log("normal life");
+ if (mapsFrontend == "osm") return `${randomInstance}/search?query=${mlat}%2C${mlon}`
+ if (mapsFrontend == "facil") return `${randomInstance}/#q=${mlat}%2C${mlon}`
+ } else {
+ // Use query as search if present.
+ console.log("normal life")
- let query;
- if (url.searchParams.has("q")) query = url.searchParams.get("q");
- else if (url.searchParams.has("query")) query = url.searchParams.get("query");
- else if (url.pathname.match(placeRegex)) query = url.pathname.match(placeRegex)[1];
+ let query
+ if (url.searchParams.has("q")) query = url.searchParams.get("q")
+ else if (url.searchParams.has("query")) query = url.searchParams.get("query")
+ else if (url.pathname.match(placeRegex)) query = url.pathname.match(placeRegex)[1]
- let prefsEncoded = new URLSearchParams(prefs).toString();
- if (query) {
- if (mapsFrontend == 'osm') return `${randomInstance}/search?query="${query}${mapCentre}&${prefsEncoded}`;
- if (mapsFrontend == 'facil') return `${randomInstance}/${mapCentre}/Mpnk/${query}`;
- }
- }
+ let prefsEncoded = new URLSearchParams(prefs).toString()
+ if (query) {
+ if (mapsFrontend == "osm") return `${randomInstance}/search?query="${query}${mapCentre}&${prefsEncoded}`
+ if (mapsFrontend == "facil") return `${randomInstance}/${mapCentre}/Mpnk/${query}`
+ }
+ }
- let prefsEncoded = new URLSearchParams(prefs).toString();
- console.log("mapCentre", mapCentre);
- console.log("prefs", prefs);
- console.log("prefsEncoded", prefsEncoded);
- if (mapsFrontend == 'osm') return `${randomInstance}/${mapCentre}&${prefsEncoded}`;
- if (mapsFrontend == 'facil') return `${randomInstance}/${mapCentre}/Mpnk`;
+ let prefsEncoded = new URLSearchParams(prefs).toString()
+ console.log("mapCentre", mapCentre)
+ console.log("prefs", prefs)
+ console.log("prefsEncoded", prefsEncoded)
+ if (mapsFrontend == "osm") return `${randomInstance}/${mapCentre}&${prefsEncoded}`
+ if (mapsFrontend == "facil") return `${randomInstance}/${mapCentre}/Mpnk`
}
-async function initDefaults() {
- return new Promise(resolve =>
- browser.storage.local.set({
- disableMaps: false,
- mapsFrontend: 'osm',
- mapsRedirects: redirects,
- facilNormalRedirectsChecks: [...redirects.facil.normal],
- facilNormalCustomRedirects: [],
-
- facilTorRedirectsChecks: [...redirects.facil.tor],
- facilTorCustomRedirects: [],
+function initDefaults() {
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.set(
+ {
+ disableMaps: false,
+ mapsFrontend: "osm",
+ mapsRedirects: redirects,
+ facilNormalRedirectsChecks: [...redirects.facil.normal],
+ facilNormalCustomRedirects: [],
- facilI2pRedirectsChecks: [...redirects.facil.i2p],
- facilI2pCustomRedirects: [],
+ facilTorRedirectsChecks: [...redirects.facil.tor],
+ facilTorCustomRedirects: [],
- facilLokiRedirectsChecks: [...redirects.facil.loki],
- facilLokiCustomRedirects: []
- }, () => resolve())
- )
+ facilI2pRedirectsChecks: [...redirects.facil.i2p],
+ facilI2pCustomRedirects: [],
+ facilLokiRedirectsChecks: [...redirects.facil.loki],
+ facilLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
}
export default {
- redirect,
- initDefaults,
-};
+ setRedirects,
+ redirect,
+ initDefaults,
+}
diff --git a/src/assets/javascripts/medium.js b/src/assets/javascripts/medium.js
index ddd955c1..4c03471c 100644
--- a/src/assets/javascripts/medium.js
+++ b/src/assets/javascripts/medium.js
@@ -1,207 +1,219 @@
-window.browser = window.browser || window.chrome;
-import utils from './utils.js'
+window.browser = window.browser || window.chrome
+import utils from "./utils.js"
const targets = [
- // /(?:.*\.)*(?<!(link\.|cdn\-images\-\d+\.))medium\.com(\/.*)?$/,
- /^medium\.com/,
- /.*\.medium\.com/,
- // // Other domains of medium blogs, source(s): https://findingtom.com/best-medium-blogs-to-follow/#1-forge
+ // /(?:.*\.)*(?<!(link\.|cdn\-images\-\d+\.))medium\.com(\/.*)?$/,
+ /^medium\.com/,
+ /.*\.medium\.com/,
+ // // Other domains of medium blogs, source(s): https://findingtom.com/best-medium-blogs-to-follow/#1-forge
- /^towardsdatascience\.com/,
- /^uxdesign\.cc/,
- /^uxplanet\.org/,
- /^betterprogramming\.pub/,
- /^aninjusticemag\.com/,
- /^betterhumans\.pub/,
- /^psiloveyou\.xyz/,
- /^entrepreneurshandbook\.co/,
- /^blog\.coinbase\.com/,
+ /^towardsdatascience\.com/,
+ /^uxdesign\.cc/,
+ /^uxplanet\.org/,
+ /^betterprogramming\.pub/,
+ /^aninjusticemag\.com/,
+ /^betterhumans\.pub/,
+ /^psiloveyou\.xyz/,
+ /^entrepreneurshandbook\.co/,
+ /^blog\.coinbase\.com/,
- /^ levelup\.gitconnected\.com /,
- /^javascript\.plainenglish\.io /,
- /^blog\.bitsrc\.io /,
- /^ itnext\.io /,
- /^codeburst\.io /,
- /^infosecwriteups\.com /,
- /^ blog\.devgenius.io /,
- /^ writingcooperative\.com /,
-];
+ /^ levelup\.gitconnected\.com /,
+ /^javascript\.plainenglish\.io /,
+ /^blog\.bitsrc\.io /,
+ /^ itnext\.io /,
+ /^codeburst\.io /,
+ /^infosecwriteups\.com /,
+ /^ blog\.devgenius.io /,
+ /^ writingcooperative\.com /,
+]
const frontends = new Array("scribe")
const protocols = new Array("normal", "tor", "i2p", "loki")
-let redirects = {};
+let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.scribe = val;
- scribeNormalRedirectsChecks = [...redirects.scribe.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = scribeNormalRedirectsChecks.indexOf(instance);
- if (a > -1) scribeNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- mediumRedirects: redirects,
- scribeNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.scribe = val
+ scribeNormalRedirectsChecks = [...redirects.scribe.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = scribeNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) scribeNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ mediumRedirects: redirects,
+ scribeNormalRedirectsChecks,
+ })
+ })
}
-let
- disableMedium,
- mediumRedirects,
- scribeNormalRedirectsChecks,
- scribeNormalCustomRedirects,
- scribeTorRedirectsChecks,
- scribeTorCustomRedirects,
- scribeI2pCustomRedirects,
- scribeLokiCustomRedirects,
- protocol,
- protocolFallback;
+let disableMedium,
+ mediumRedirects,
+ scribeNormalRedirectsChecks,
+ scribeNormalCustomRedirects,
+ scribeTorRedirectsChecks,
+ scribeTorCustomRedirects,
+ scribeI2pCustomRedirects,
+ scribeLokiCustomRedirects,
+ protocol,
+ protocolFallback
function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableMedium",
- "mediumRedirects",
- "scribeNormalRedirectsChecks",
- "scribeNormalCustomRedirects",
- "scribeTorRedirectsChecks",
- "scribeTorCustomRedirects",
- "scribeI2pCustomRedirects",
- "scribeLokiCustomRedirects",
- "protocol",
- "protocolFallback"
- ],
- r => {
- disableMedium = r.disableMedium;
- mediumRedirects = r.mediumRedirects;
- scribeNormalRedirectsChecks = r.scribeNormalRedirectsChecks;
- scribeNormalCustomRedirects = r.scribeNormalCustomRedirects;
- scribeTorRedirectsChecks = r.scribeTorRedirectsChecks;
- scribeTorCustomRedirects = r.scribeTorCustomRedirects;
- scribeI2pCustomRedirects = r.scribeI2pCustomRedirects;
- scribeLokiCustomRedirects = r.scribeLokiCustomRedirects;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- resolve();
- }
- )
- })
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "disableMedium",
+ "mediumRedirects",
+ "scribeNormalRedirectsChecks",
+ "scribeNormalCustomRedirects",
+ "scribeTorRedirectsChecks",
+ "scribeTorCustomRedirects",
+ "scribeI2pCustomRedirects",
+ "scribeLokiCustomRedirects",
+ "protocol",
+ "protocolFallback",
+ ],
+ r => {
+ disableMedium = r.disableMedium
+ mediumRedirects = r.mediumRedirects
+ scribeNormalRedirectsChecks = r.scribeNormalRedirectsChecks
+ scribeNormalCustomRedirects = r.scribeNormalCustomRedirects
+ scribeTorRedirectsChecks = r.scribeTorRedirectsChecks
+ scribeTorCustomRedirects = r.scribeTorCustomRedirects
+ scribeI2pCustomRedirects = r.scribeI2pCustomRedirects
+ scribeLokiCustomRedirects = r.scribeLokiCustomRedirects
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function redirect(url, type, initiator, disableOverride) {
- if (disableMedium && !disableOverride) return;
- if (url.pathname == "/" && !disableOverride) return;
- if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return;
- if (initiator && (
- [
- ...mediumRedirects.scribe.normal,
- ...mediumRedirects.scribe.tor,
- ...scribeNormalCustomRedirects,
- ...scribeTorCustomRedirects,
- ...scribeI2pCustomRedirects,
- ...scribeLokiCustomRedirects
- ].includes(initiator.origin))) return;
+ if (disableMedium && !disableOverride) return
+ if (url.pathname == "/" && !disableOverride) return
+ if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return
+ if (
+ initiator &&
+ [...mediumRedirects.scribe.normal, ...mediumRedirects.scribe.tor, ...scribeNormalCustomRedirects, ...scribeTorCustomRedirects, ...scribeI2pCustomRedirects, ...scribeLokiCustomRedirects].includes(
+ initiator.origin
+ )
+ )
+ return
- if (!targets.some(rx => rx.test(url.host))) return;
- if (/^\/(@[a-zA-Z.]{0,}(\/|)$)/.test(url.pathname)) return;
+ if (!targets.some(rx => rx.test(url.host))) return
+ if (/^\/(@[a-zA-Z.]{0,}(\/|)$)/.test(url.pathname)) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...scribeLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...scribeI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...scribeLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...scribeI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList)
- return `${randomInstance}${url.pathname}${url.search}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}${url.pathname}${url.search}`
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableMedium && !disableOverride) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...mediumRedirects.scribe.tor,
- ...mediumRedirects.scribe.normal,
+ return new Promise(async resolve => {
+ await init()
+ if (disableMedium && !disableOverride) {
+ resolve()
+ return
+ }
+ let protocolHost = utils.protocolHost(url)
+ const all = [
+ ...mediumRedirects.scribe.tor,
+ ...mediumRedirects.scribe.normal,
- ...scribeNormalCustomRedirects,
- ...scribeTorCustomRedirects,
- ...scribeI2pCustomRedirects,
- ...scribeLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ ...scribeNormalCustomRedirects,
+ ...scribeTorCustomRedirects,
+ ...scribeI2pCustomRedirects,
+ ...scribeLokiCustomRedirects,
+ ]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...scribeLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...scribeI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...scribeLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...scribeI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList',
- async r => {
- scribeNormalRedirectsChecks = [...redirects.scribe.normal];
- for (const instance of r.cloudflareBlackList) {
- let i = scribeNormalRedirectsChecks.indexOf(instance);
- if (i > -1) scribeNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableMedium: false,
- mediumRedirects: redirects,
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ scribeNormalRedirectsChecks = [...redirects.scribe.normal]
+ for (const instance of r.cloudflareBlackList) {
+ let i = scribeNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) scribeNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableMedium: false,
+ mediumRedirects: redirects,
- scribeNormalRedirectsChecks: scribeNormalRedirectsChecks,
- scribeNormalCustomRedirects: [],
+ scribeNormalRedirectsChecks: scribeNormalRedirectsChecks,
+ scribeNormalCustomRedirects: [],
- scribeTorRedirectsChecks: [...redirects.scribe.tor],
- scribeTorCustomRedirects: [],
+ scribeTorRedirectsChecks: [...redirects.scribe.tor],
+ scribeTorCustomRedirects: [],
- scribeI2pRedirectsChecks: [...redirects.scribe.i2p],
- scribeI2pCustomRedirects: [],
+ scribeI2pRedirectsChecks: [...redirects.scribe.i2p],
+ scribeI2pCustomRedirects: [],
- scribeLokiRedirectsChecks: [...redirects.scribe.loki],
- scribeLokiCustomRedirects: []
- }, () => resolve())
- })
- })
- })
+ scribeLokiRedirectsChecks: [...redirects.scribe.loki],
+ scribeLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
- redirect,
- switchInstance,
- initDefaults,
-};
+ setRedirects,
+ redirect,
+ switchInstance,
+ initDefaults,
+}
diff --git a/src/assets/javascripts/peertube.js b/src/assets/javascripts/peertube.js
index d05e4b27..de25cfaa 100644
--- a/src/assets/javascripts/peertube.js
+++ b/src/assets/javascripts/peertube.js
@@ -1,180 +1,201 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-let redirects = {
- "simpleertube": {
- "normal": [
- "https://tube.simple-web.org",
- "https://tube.ftild3.org",
- "https://stube.alefvanoon.xyz",
- "https://st.phreedom.club",
- "https://simpleertube.esmailelbob.xyz",
- ],
- "tor": [],
- "i2p": [],
- "loki": []
- }
+const frontends = new Array("simpleertube")
+const protocols = new Array("normal", "tor", "i2p", "loki")
+
+let redirects = {}
+
+for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
-function setRedirects(val) {
- redirects.simpleertube = val;
- browser.storage.local.set({ peertubeTargetsRedirects: redirects })
- for (const item of simpleertubeNormalRedirectsChecks)
- if (!redirects.simpleertube.normal.includes(item)) {
- var index = simpleertubeNormalRedirectsChecks.indexOf(item);
- if (index !== -1) simpleertubeNormalRedirectsChecks.splice(index, 1);
- }
- browser.storage.local.set({ simpleertubeNormalRedirectsChecks })
- for (const item of simpleertubeTorRedirectsChecks)
- if (!redirects.simpleertube.normal.includes(item)) {
- var index = simpleertubeTorRedirectsChecks.indexOf(item);
- if (index !== -1) simpleertubeTorRedirectsChecks.splice(index, 1);
- }
- browser.storage.local.set({ simpleertubeTorRedirectsChecks })
+function setRedirects(val) {
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.simpleertube = val
+ simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = simpleertubeNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) simpleertubeNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ peertubeRedirects: redirects,
+ simpleertubeNormalRedirectsChecks,
+ })
+ })
}
-let
- disablePeertubeTargets,
- peertubeRedirects,
- simpleertubeNormalRedirectsChecks,
- simpleertubeNormalCustomRedirects,
- simpleertubeTorRedirectsChecks,
- simpleertubeTorCustomRedirects,
- simpleertubeI2pCustomRedirects,
- simpleertubeLokiCustomRedirects,
- peerTubeTargets,
- protocol,
- protocolFallback;
+let disablePeertubeTargets,
+ peertubeRedirects,
+ simpleertubeNormalRedirectsChecks,
+ simpleertubeNormalCustomRedirects,
+ simpleertubeTorRedirectsChecks,
+ simpleertubeTorCustomRedirects,
+ simpleertubeI2pRedirectsChecks,
+ simpleertubeI2pCustomRedirects,
+ simpleertubeLokiRedirectsChecks,
+ simpleertubeLokiCustomRedirects,
+ peerTubeTargets,
+ protocol,
+ protocolFallback
function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disablePeertubeTargets",
- "peertubeRedirects",
- "simpleertubeNormalRedirectsChecks",
- "simpleertubeNormalCustomRedirects",
- "simpleertubeTorRedirectsChecks",
- "simpleertubeTorCustomRedirects",
- "simpleertubeI2pCustomRedirects",
- "simpleertubeLokiCustomRedirects",
- "peerTubeTargets",
- "protocol",
- "protocolFallback"
- ],
- r => {
- disablePeertubeTargets = r.disablePeertubeTargets;
- peertubeRedirects = r.peertubeRedirects;
- simpleertubeNormalRedirectsChecks = r.simpleertubeNormalRedirectsChecks;
- simpleertubeNormalCustomRedirects = r.simpleertubeNormalCustomRedirects;
- simpleertubeTorRedirectsChecks = r.simpleertubeTorRedirectsChecks;
- simpleertubeTorCustomRedirects = r.simpleertubeTorCustomRedirects;
- simpleertubeI2pCustomRedirects = r.simpleertubeI2pCustomRedirects;
- simpleertubeLokiCustomRedirects = r.simpleertubeLokiCustomRedirects;
- peerTubeTargets = r.peerTubeTargets;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- resolve();
- }
- )
- })
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "disablePeertubeTargets",
+ "peertubeRedirects",
+ "simpleertubeNormalRedirectsChecks",
+ "simpleertubeNormalCustomRedirects",
+ "simpleertubeTorRedirectsChecks",
+ "simpleertubeTorCustomRedirects",
+ "simpleertubeI2pRedirectsChecks",
+ "simpleertubeI2pCustomRedirects",
+ "simpleertubeLokiRedirectsChecks",
+ "simpleertubeLokiCustomRedirects",
+ "peerTubeTargets",
+ "protocol",
+ "protocolFallback",
+ ],
+ r => {
+ disablePeertubeTargets = r.disablePeertubeTargets
+ peertubeRedirects = r.peertubeRedirects
+ simpleertubeNormalRedirectsChecks = r.simpleertubeNormalRedirectsChecks
+ simpleertubeNormalCustomRedirects = r.simpleertubeNormalCustomRedirects
+ simpleertubeTorRedirectsChecks = r.simpleertubeTorRedirectsChecks
+ simpleertubeTorCustomRedirects = r.simpleertubeTorCustomRedirects
+ simpleertubeI2pRedirectsChecks = r.simpleertubeI2pRedirectsChecks
+ simpleertubeI2pCustomRedirects = r.simpleertubeI2pCustomRedirects
+ simpleertubeLokiRedirectsChecks = r.simpleertubeLokiRedirectsChecks
+ simpleertubeLokiCustomRedirects = r.simpleertubeLokiCustomRedirects
+ peerTubeTargets = r.peerTubeTargets
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function all() {
- return [
- ...redirects.simpleertube.normal,
- ...redirects.simpleertube.tor,
- ...simpleertubeNormalCustomRedirects,
- ...simpleertubeTorCustomRedirects,
- ...simpleertubeI2pCustomRedirects,
- ...simpleertubeLokiCustomRedirects
- ];
+ return [
+ ...simpleertubeNormalRedirectsChecks,
+ ...simpleertubeTorRedirectsChecks,
+ ...simpleertubeI2pRedirectsChecks,
+ ...simpleertubeLokiRedirectsChecks,
+ ...simpleertubeNormalCustomRedirects,
+ ...simpleertubeTorCustomRedirects,
+ ...simpleertubeI2pCustomRedirects,
+ ...simpleertubeLokiCustomRedirects,
+ ]
}
function redirect(url, type, initiator, disableOverride) {
- if (disablePeertubeTargets && !disableOverride) return;
- if (initiator && (all().includes(initiator.origin) || peerTubeTargets.includes(initiator.host))) return;
- let protocolHost = utils.protocolHost(url);
- if (!peerTubeTargets.includes(protocolHost)) return;
- if (type != "main_frame") return;
+ if (disablePeertubeTargets && !disableOverride) return
+ if (initiator && (all().includes(initiator.origin) || peerTubeTargets.includes(initiator.host))) return
+ let protocolHost = utils.protocolHost(url)
+ if (!peerTubeTargets.includes(protocolHost)) return
+ if (type != "main_frame") return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...simpleertubeLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...simpleertubeI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...simpleertubeLokiRedirectsChecks, ...simpleertubeLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...simpleertubeI2pRedirectsChecks, ...simpleertubeI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- if (url.host == 'search.joinpeertube.org' || url.host == 'sepiasearch.org') return randomInstance;
- return `${randomInstance}/${url.host}${url.pathname}${url.search}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ if (url.host == "search.joinpeertube.org" || url.host == "sepiasearch.org") return randomInstance
+ return `${randomInstance}/${url.host}${url.pathname}${url.search}`
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disablePeertubeTargets && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ if (disablePeertubeTargets && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...simpleertubeLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...simpleertubeI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...simpleertubeLokiRedirectsChecks, ...simpleertubeLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...simpleertubeI2pRedirectsChecks, ...simpleertubeI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- browser.storage.local.get('cloudflareBlackList', async r => {
- simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal];
- for (const instance of r.cloudflareBlackList) {
- let i = simpleertubeNormalRedirectsChecks.indexOf(instance);
- if (i > -1) simpleertubeNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- peerTubeTargets: ['https://search.joinpeertube.org', ...dataJson.peertube],
- disablePeertubeTargets: true,
- peertubeRedirects: redirects,
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal]
+ for (const instance of r.cloudflareBlackList) {
+ let i = simpleertubeNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) simpleertubeNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ peerTubeTargets: ["https://search.joinpeertube.org", ...dataJson.peertube],
+ disablePeertubeTargets: true,
+ peertubeRedirects: redirects,
- simpleertubeNormalRedirectsChecks: simpleertubeNormalRedirectsChecks,
- simpleertubeNormalCustomRedirects: [],
+ simpleertubeNormalRedirectsChecks: simpleertubeNormalRedirectsChecks,
+ simpleertubeNormalCustomRedirects: [],
- simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor],
- simpleertubeTorCustomRedirects: [],
+ simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor],
+ simpleertubeTorCustomRedirects: [],
- simpleertubeI2pRedirectsChecks: [...redirects.simpleertube.i2p],
- simpleertubeI2pCustomRedirects: [],
+ simpleertubeI2pRedirectsChecks: [...redirects.simpleertube.i2p],
+ simpleertubeI2pCustomRedirects: [],
- simpleertubeLokiRedirectsChecks: [...redirects.simpleertube.loki],
- simpleertubeLokiCustomRedirects: []
- }, () => resolve());
- })
- })
- })
+ simpleertubeLokiRedirectsChecks: [...redirects.simpleertube.loki],
+ simpleertubeLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
- switchInstance,
- redirect,
- initDefaults,
-};
+ setRedirects,
+ switchInstance,
+ redirect,
+ initDefaults,
+}
diff --git a/src/assets/javascripts/quora.js b/src/assets/javascripts/quora.js
index fed321de..3f9e4189 100644
--- a/src/assets/javascripts/quora.js
+++ b/src/assets/javascripts/quora.js
@@ -1,10 +1,8 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}(www\.|)quora\.com.*/
-];
+const targets = [/^https?:\/{2}(www\.|)quora\.com.*/]
let redirects = {}
@@ -12,183 +10,183 @@ const frontends = new Array("quetre")
const protocols = new Array("normal", "tor", "i2p", "loki")
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.quetre = val;
- quetreNormalRedirectsChecks = [...redirects.quetre.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = quetreNormalRedirectsChecks.indexOf(instance);
- if (a > -1) quetreNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- quoraRedirects: redirects,
- quetreNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.quetre = val
+ quetreNormalRedirectsChecks = [...redirects.quetre.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = quetreNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) quetreNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ quoraRedirects: redirects,
+ quetreNormalRedirectsChecks,
+ })
+ })
}
-let
- disableQuora,
- protocol,
- protocolFallback,
- quoraRedirects,
- quetreNormalRedirectsChecks,
- quetreNormalCustomRedirects,
- quetreTorRedirectsChecks,
- quetreTorCustomRedirects,
- quetreI2pCustomRedirects,
- quetreLokiCustomRedirects;
+let disableQuora,
+ protocol,
+ protocolFallback,
+ quoraRedirects,
+ quetreNormalRedirectsChecks,
+ quetreNormalCustomRedirects,
+ quetreTorRedirectsChecks,
+ quetreTorCustomRedirects,
+ quetreI2pCustomRedirects,
+ quetreLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableQuora",
- "protocol",
- "protocolFallback",
- "quoraRedirects",
- "quetreNormalRedirectsChecks",
- "quetreNormalCustomRedirects",
- "quetreTorRedirectsChecks",
- "quetreTorCustomRedirects",
- "quetreI2pCustomRedirects",
- "quetreLokiCustomRedirects"
- ],
- r => {
- disableQuora = r.disableQuora;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- quoraRedirects = r.quoraRedirects;
- quetreNormalRedirectsChecks = r.quetreNormalRedirectsChecks;
- quetreNormalCustomRedirects = r.quetreNormalCustomRedirects;
- quetreTorRedirectsChecks = r.quetreTorRedirectsChecks;
- quetreTorCustomRedirects = r.quetreTorCustomRedirects;
- quetreI2pCustomRedirects = r.quetreI2pCustomRedirects;
- quetreLokiCustomRedirects = r.quetreLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableQuora",
+ "protocol",
+ "protocolFallback",
+ "quoraRedirects",
+ "quetreNormalRedirectsChecks",
+ "quetreNormalCustomRedirects",
+ "quetreTorRedirectsChecks",
+ "quetreTorCustomRedirects",
+ "quetreI2pCustomRedirects",
+ "quetreLokiCustomRedirects",
+ ],
+ r => {
+ disableQuora = r.disableQuora
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ quoraRedirects = r.quoraRedirects
+ quetreNormalRedirectsChecks = r.quetreNormalRedirectsChecks
+ quetreNormalCustomRedirects = r.quetreNormalCustomRedirects
+ quetreTorRedirectsChecks = r.quetreTorRedirectsChecks
+ quetreTorCustomRedirects = r.quetreTorCustomRedirects
+ quetreI2pCustomRedirects = r.quetreI2pCustomRedirects
+ quetreLokiCustomRedirects = r.quetreLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function redirect(url, type, initiator, disableOverride) {
- if (disableQuora && !disableOverride) return;
- if (url.pathname == "/" && !disableOverride) return;
- if (type != "main_frame") return;
- const all = [
- ...quoraRedirects.quetre.normal,
- ...quetreNormalCustomRedirects
- ];
- if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.some(rx => rx.test(url.href))) return;
+ if (disableQuora && !disableOverride) return
+ if (url.pathname == "/" && !disableOverride) return
+ if (type != "main_frame") return
+ const all = [...quoraRedirects.quetre.normal, ...quetreNormalCustomRedirects]
+ if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return
+ if (!targets.some(rx => rx.test(url.href))) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...quetreLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...quetreI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...quetreLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...quetreI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}${url.pathname}`
}
function reverse(url) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...quoraRedirects.quetre.normal,
- ...quoraRedirects.quetre.tor,
- ...quetreNormalCustomRedirects,
- ...quetreTorCustomRedirects,
- ...quetreI2pCustomRedirects,
- ...quetreLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(url)
+ const all = [...quoraRedirects.quetre.normal, ...quoraRedirects.quetre.tor, ...quetreNormalCustomRedirects, ...quetreTorCustomRedirects, ...quetreI2pCustomRedirects, ...quetreLokiCustomRedirects]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- resolve(`https://quora.com${url.pathname}${url.search}`);
- })
+ resolve(`https://quora.com${url.pathname}${url.search}`)
+ })
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableQuora && !disableOverride) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...quoraRedirects.quetre.tor,
- ...quoraRedirects.quetre.normal,
+ return new Promise(async resolve => {
+ await init()
+ if (disableQuora && !disableOverride) {
+ resolve()
+ return
+ }
+ let protocolHost = utils.protocolHost(url)
+ const all = [...quoraRedirects.quetre.tor, ...quoraRedirects.quetre.normal, ...quetreNormalCustomRedirects, ...quetreTorCustomRedirects, ...quetreI2pCustomRedirects, ...quetreLokiCustomRedirects]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- ...quetreNormalCustomRedirects,
- ...quetreTorCustomRedirects,
- ...quetreI2pCustomRedirects,
- ...quetreLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...quetreLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...quetreI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects]
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...quetreLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...quetreI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects];
- }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
-
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.set({
- disableQuora: false,
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.set(
+ {
+ disableQuora: false,
- quoraRedirects: redirects,
+ quoraRedirects: redirects,
- quetreNormalRedirectsChecks: [...redirects.quetre.normal],
- quetreNormalCustomRedirects: [],
+ quetreNormalRedirectsChecks: [...redirects.quetre.normal],
+ quetreNormalCustomRedirects: [],
- quetreTorRedirectsChecks: [...redirects.quetre.tor],
- quetreTorCustomRedirects: [],
+ quetreTorRedirectsChecks: [...redirects.quetre.tor],
+ quetreTorCustomRedirects: [],
- quetreI2pRedirectsChecks: [...redirects.quetre.i2p],
- quetreI2pCustomRedirects: [],
+ quetreI2pRedirectsChecks: [...redirects.quetre.i2p],
+ quetreI2pCustomRedirects: [],
- quetreLokiRedirectsChecks: [...redirects.quetre.loki],
- quetreLokiCustomRedirects: []
- }, () => resolve());
- });
- })
+ quetreLokiRedirectsChecks: [...redirects.quetre.loki],
+ quetreLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
}
export default {
- setRedirects,
+ setRedirects,
- redirect,
- reverse,
- switchInstance,
+ redirect,
+ reverse,
+ switchInstance,
- initDefaults
-};
+ initDefaults,
+}
diff --git a/src/assets/javascripts/reddit.js b/src/assets/javascripts/reddit.js
index bc7b687f..699dcf1a 100644
--- a/src/assets/javascripts/reddit.js
+++ b/src/assets/javascripts/reddit.js
@@ -1,264 +1,261 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/,
- /^https?:\/{2}(i\.|preview\.)redd\.it/,
-];
-let redirects = {};
+const targets = [/^https?:\/{2}(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/, /^https?:\/{2}(i\.|preview\.)redd\.it/]
+let redirects = {}
const frontends = new Array("libreddit", "teddit")
const protocols = new Array("normal", "tor", "i2p", "loki")
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects = val;
- libredditNormalRedirectsChecks = [...redirects.libreddit.normal];
- tedditNormalRedirectsChecks = [...redirects.teddit.normal]
- for (const instance of r.cloudflareBlackList) {
- const a = libredditNormalRedirectsChecks.indexOf(instance);
- if (a > -1) libredditNormalRedirectsChecks.splice(a, 1);
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects = val
+ libredditNormalRedirectsChecks = [...redirects.libreddit.normal]
+ tedditNormalRedirectsChecks = [...redirects.teddit.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = libredditNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) libredditNormalRedirectsChecks.splice(a, 1)
- const b = tedditNormalRedirectsChecks.indexOf(instance);
- if (b > -1) tedditNormalRedirectsChecks.splice(b, 1);
- }
- browser.storage.local.set({
- redditRedirects: redirects,
- libredditNormalRedirectsChecks,
- tedditNormalRedirectsChecks
- })
- })
+ const b = tedditNormalRedirectsChecks.indexOf(instance)
+ if (b > -1) tedditNormalRedirectsChecks.splice(b, 1)
+ }
+ browser.storage.local.set({
+ redditRedirects: redirects,
+ libredditNormalRedirectsChecks,
+ tedditNormalRedirectsChecks,
+ })
+ })
}
-let
- disableReddit,
- redditFrontend,
- redditRedirects,
- protocol,
- protocolFallback,
-
- libredditNormalRedirectsChecks,
- libredditNormalCustomRedirects,
-
- libredditTorRedirectsChecks,
- libredditTorCustomRedirects,
-
- libredditI2pCustomRedirects,
-
- libredditLokiCustomRedirects,
-
- tedditNormalRedirectsChecks,
- tedditNormalCustomRedirects,
-
- tedditTorRedirectsChecks,
- tedditTorCustomRedirects,
-
- tedditI2pCustomRedirects,
- tedditLokiCustomRedirects;
+let disableReddit,
+ redditFrontend,
+ redditRedirects,
+ protocol,
+ protocolFallback,
+ libredditNormalRedirectsChecks,
+ libredditNormalCustomRedirects,
+ libredditTorRedirectsChecks,
+ libredditTorCustomRedirects,
+ libredditI2pCustomRedirects,
+ libredditLokiCustomRedirects,
+ tedditNormalRedirectsChecks,
+ tedditNormalCustomRedirects,
+ tedditTorRedirectsChecks,
+ tedditTorCustomRedirects,
+ tedditI2pCustomRedirects,
+ tedditLokiCustomRedirects
function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableReddit",
- "redditFrontend",
- "redditRedirects",
- "protocol",
- "protocolFallback",
- "libredditNormalRedirectsChecks",
- "libredditNormalCustomRedirects",
- "libredditTorRedirectsChecks",
- "libredditTorCustomRedirects",
- "libredditI2pCustomRedirects",
- "libredditLokiCustomRedirects",
- "tedditNormalRedirectsChecks",
- "tedditNormalCustomRedirects",
- "tedditTorRedirectsChecks",
- "tedditTorCustomRedirects",
- "tedditI2pCustomRedirects",
- "tedditLokiCustomRedirects"
- ],
- r => {
- disableReddit = r.disableReddit;
- redditFrontend = r.redditFrontend;
- redditRedirects = r.redditRedirects;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- libredditNormalRedirectsChecks = r.libredditNormalRedirectsChecks;
- libredditNormalCustomRedirects = r.libredditNormalCustomRedirects;
- libredditTorRedirectsChecks = r.libredditTorRedirectsChecks;
- libredditTorCustomRedirects = r.libredditTorCustomRedirects;
- libredditI2pCustomRedirects = r.libredditI2pCustomRedirects;
- libredditLokiCustomRedirects = r.libredditLokiCustomRedirects;
- tedditNormalRedirectsChecks = r.tedditNormalRedirectsChecks;
- tedditNormalCustomRedirects = r.tedditNormalCustomRedirects;
- tedditTorRedirectsChecks = r.tedditTorRedirectsChecks;
- tedditTorCustomRedirects = r.tedditTorCustomRedirects;
- tedditI2pCustomRedirects = r.tedditI2pCustomRedirects;
- tedditLokiCustomRedirects = r.tedditLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "disableReddit",
+ "redditFrontend",
+ "redditRedirects",
+ "protocol",
+ "protocolFallback",
+ "libredditNormalRedirectsChecks",
+ "libredditNormalCustomRedirects",
+ "libredditTorRedirectsChecks",
+ "libredditTorCustomRedirects",
+ "libredditI2pCustomRedirects",
+ "libredditLokiCustomRedirects",
+ "tedditNormalRedirectsChecks",
+ "tedditNormalCustomRedirects",
+ "tedditTorRedirectsChecks",
+ "tedditTorCustomRedirects",
+ "tedditI2pCustomRedirects",
+ "tedditLokiCustomRedirects",
+ ],
+ r => {
+ disableReddit = r.disableReddit
+ redditFrontend = r.redditFrontend
+ redditRedirects = r.redditRedirects
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ libredditNormalRedirectsChecks = r.libredditNormalRedirectsChecks
+ libredditNormalCustomRedirects = r.libredditNormalCustomRedirects
+ libredditTorRedirectsChecks = r.libredditTorRedirectsChecks
+ libredditTorCustomRedirects = r.libredditTorCustomRedirects
+ libredditI2pCustomRedirects = r.libredditI2pCustomRedirects
+ libredditLokiCustomRedirects = r.libredditLokiCustomRedirects
+ tedditNormalRedirectsChecks = r.tedditNormalRedirectsChecks
+ tedditNormalCustomRedirects = r.tedditNormalCustomRedirects
+ tedditTorRedirectsChecks = r.tedditTorRedirectsChecks
+ tedditTorCustomRedirects = r.tedditTorCustomRedirects
+ tedditI2pCustomRedirects = r.tedditI2pCustomRedirects
+ tedditLokiCustomRedirects = r.tedditLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function initLibredditCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(from);
- if (![
- ...libredditNormalRedirectsChecks,
- ...libredditTorRedirectsChecks,
- ...libredditNormalCustomRedirects,
- ...libredditTorCustomRedirects,
- ...libredditI2pCustomRedirects,
- ...libredditLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(from)
+ if (
+ ![
+ ...libredditNormalRedirectsChecks,
+ ...libredditTorRedirectsChecks,
+ ...libredditNormalCustomRedirects,
+ ...libredditTorCustomRedirects,
+ ...libredditI2pCustomRedirects,
+ ...libredditLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...libredditLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...libredditI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
- }
- await utils.copyCookie('libreddit', from, checkedInstances, "theme");
- await utils.copyCookie('libreddit', from, checkedInstances, "front_page");
- await utils.copyCookie('libreddit', from, checkedInstances, "layout");
- await utils.copyCookie('libreddit', from, checkedInstances, "wide");
- await utils.copyCookie('libreddit', from, checkedInstances, "post_sort");
- await utils.copyCookie('libreddit', from, checkedInstances, "comment_sort");
- await utils.copyCookie('libreddit', from, checkedInstances, "show_nsfw");
- await utils.copyCookie('libreddit', from, checkedInstances, "autoplay_videos");
- await utils.copyCookie('libreddit', from, checkedInstances, "use_hls");
- await utils.copyCookie('libreddit', from, checkedInstances, "hide_hls_notification");
- await utils.copyCookie('libreddit', from, checkedInstances, "subscriptions");
- await utils.copyCookie('libreddit', from, checkedInstances, "filters");
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...libredditLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...libredditI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]
+ }
+ await utils.copyCookie("libreddit", from, checkedInstances, "theme")
+ await utils.copyCookie("libreddit", from, checkedInstances, "front_page")
+ await utils.copyCookie("libreddit", from, checkedInstances, "layout")
+ await utils.copyCookie("libreddit", from, checkedInstances, "wide")
+ await utils.copyCookie("libreddit", from, checkedInstances, "post_sort")
+ await utils.copyCookie("libreddit", from, checkedInstances, "comment_sort")
+ await utils.copyCookie("libreddit", from, checkedInstances, "show_nsfw")
+ await utils.copyCookie("libreddit", from, checkedInstances, "autoplay_videos")
+ await utils.copyCookie("libreddit", from, checkedInstances, "use_hls")
+ await utils.copyCookie("libreddit", from, checkedInstances, "hide_hls_notification")
+ await utils.copyCookie("libreddit", from, checkedInstances, "subscriptions")
+ await utils.copyCookie("libreddit", from, checkedInstances, "filters")
+ }
+ resolve(true)
+ })
}
function pasteLibredditCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableReddit || redditFrontend != 'libreddit' || protocol === undefined) { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...libredditLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...libredditI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('libreddit', checkedInstances, "theme");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "front_page");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "layout");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "wide");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "post_sort");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "comment_sort");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "show_nsfw");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "autoplay_videos");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "use_hls");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "hide_hls_notification");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "subscriptions");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "filters");
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableReddit || redditFrontend != "libreddit" || protocol === undefined) {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...libredditLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...libredditI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "theme")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "front_page")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "layout")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "wide")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "post_sort")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "comment_sort")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "show_nsfw")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "autoplay_videos")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "use_hls")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "hide_hls_notification")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "subscriptions")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "filters")
+ resolve()
+ })
}
function initTedditCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...tedditNormalRedirectsChecks,
- ...tedditTorRedirectsChecks,
- ...tedditNormalCustomRedirects,
- ...tedditTorCustomRedirects,
- ...tedditI2pCustomRedirects,
- ...tedditI2pCustomRedirects
-
- ].includes(protocolHost)) resolve();
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(from)
+ if (
+ ![...tedditNormalRedirectsChecks, ...tedditTorRedirectsChecks, ...tedditNormalCustomRedirects, ...tedditTorCustomRedirects, ...tedditI2pCustomRedirects, ...tedditI2pCustomRedirects].includes(
+ protocolHost
+ )
+ )
+ resolve()
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...tedditLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...tedditI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
- }
- await utils.copyCookie('teddit', from, checkedInstances, 'collapse_child_comments')
- await utils.copyCookie('teddit', from, checkedInstances, 'domain_instagram')
- await utils.copyCookie('teddit', from, checkedInstances, 'domain_twitter')
- await utils.copyCookie('teddit', from, checkedInstances, 'domain_youtube')
- await utils.copyCookie('teddit', from, checkedInstances, 'flairs')
- await utils.copyCookie('teddit', from, checkedInstances, 'highlight_controversial')
- await utils.copyCookie('teddit', from, checkedInstances, 'nsfw_enabled')
- await utils.copyCookie('teddit', from, checkedInstances, 'post_media_max_height')
- await utils.copyCookie('teddit', from, checkedInstances, 'show_upvoted_percentage')
- await utils.copyCookie('teddit', from, checkedInstances, 'show_upvotes')
- await utils.copyCookie('teddit', from, checkedInstances, 'theme')
- await utils.copyCookie('teddit', from, checkedInstances, 'videos_muted')
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...tedditLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...tedditI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]
+ }
+ await utils.copyCookie("teddit", from, checkedInstances, "collapse_child_comments")
+ await utils.copyCookie("teddit", from, checkedInstances, "domain_instagram")
+ await utils.copyCookie("teddit", from, checkedInstances, "domain_twitter")
+ await utils.copyCookie("teddit", from, checkedInstances, "domain_youtube")
+ await utils.copyCookie("teddit", from, checkedInstances, "flairs")
+ await utils.copyCookie("teddit", from, checkedInstances, "highlight_controversial")
+ await utils.copyCookie("teddit", from, checkedInstances, "nsfw_enabled")
+ await utils.copyCookie("teddit", from, checkedInstances, "post_media_max_height")
+ await utils.copyCookie("teddit", from, checkedInstances, "show_upvoted_percentage")
+ await utils.copyCookie("teddit", from, checkedInstances, "show_upvotes")
+ await utils.copyCookie("teddit", from, checkedInstances, "theme")
+ await utils.copyCookie("teddit", from, checkedInstances, "videos_muted")
+ }
+ resolve(true)
+ })
}
function pasteTedditCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableReddit || redditFrontend != 'teddit' || protocol === undefined) { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...tedditLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...tedditI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('teddit', checkedInstances, 'collapse_child_comments')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'domain_instagram')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'domain_twitter')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'domain_youtube')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'flairs')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'highlight_controversial')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'nsfw_enabled')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'post_media_max_height')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'show_upvoted_percentage')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'show_upvotes')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'theme')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'videos_muted')
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableReddit || redditFrontend != "teddit" || protocol === undefined) {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...tedditLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...tedditI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("teddit", checkedInstances, "collapse_child_comments")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "domain_instagram")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "domain_twitter")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "domain_youtube")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "flairs")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "highlight_controversial")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "nsfw_enabled")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "post_media_max_height")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "show_upvoted_percentage")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "show_upvotes")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "theme")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "videos_muted")
+ resolve()
+ })
}
function all() {
- return [
- ...redditRedirects.libreddit.normal,
- ...redditRedirects.libreddit.tor,
- ...redditRedirects.teddit.normal,
- ...redditRedirects.teddit.tor,
- ...libredditNormalCustomRedirects,
- ...libredditTorCustomRedirects,
- ...libredditI2pCustomRedirects,
- ...libredditLokiCustomRedirects,
- ...tedditNormalCustomRedirects,
- ...tedditTorCustomRedirects,
- ...tedditI2pCustomRedirects,
- ...tedditLokiCustomRedirects
- ];
+ return [
+ ...redditRedirects.libreddit.normal,
+ ...redditRedirects.libreddit.tor,
+ ...redditRedirects.teddit.normal,
+ ...redditRedirects.teddit.tor,
+ ...libredditNormalCustomRedirects,
+ ...libredditTorCustomRedirects,
+ ...libredditI2pCustomRedirects,
+ ...libredditLokiCustomRedirects,
+ ...tedditNormalCustomRedirects,
+ ...tedditTorCustomRedirects,
+ ...tedditI2pCustomRedirects,
+ ...tedditLokiCustomRedirects,
+ ]
}
// https://libreddit.exonip.de/vid/1mq8d0ma3yk81/720.mp4
@@ -267,188 +264,189 @@ function all() {
// https://teddit.net/vids/1mq8d0ma3yk81.mp4
// https://teddit.net/pics/w:null_4v3t1vgvrzk81.png
-
// redd.it/t5379n
// https://v.redd.it/z08avb339n801/DASH_1_2_M
// https://i.redd.it/bfkhs659tzk81.jpg
function redirect(url, type, initiator, disableOverride) {
- if (disableReddit && !disableOverride) return;
- if (!targets.some(rx => rx.test(url.href))) return;
- if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
- if (!["main_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return;
- const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/;
- if (url.pathname.match(bypassPaths)) return;
+ if (disableReddit && !disableOverride) return
+ if (!targets.some(rx => rx.test(url.href))) return
+ if (initiator && all().includes(initiator.origin)) return "BYPASSTAB"
+ if (!["main_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return
+ const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/
+ if (url.pathname.match(bypassPaths)) return
- let libredditInstancesList = [];
- let tedditInstancesList = [];
+ let libredditInstancesList = []
+ let tedditInstancesList = []
- if (protocol == 'loki') {
- libredditInstancesList = [...libredditLokiCustomRedirects];
- tedditInstancesList = [...tedditLokiCustomRedirects];
- }
- else if (protocol == 'i2p') {
- libredditInstancesList = [...libredditI2pCustomRedirects];
- tedditInstancesList = [...tedditI2pCustomRedirects];
- }
- else if (protocol == 'tor') {
- libredditInstancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
- tedditInstancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
- }
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- libredditInstancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
- tedditInstancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
- }
+ if (protocol == "loki") {
+ libredditInstancesList = [...libredditLokiCustomRedirects]
+ tedditInstancesList = [...tedditLokiCustomRedirects]
+ } else if (protocol == "i2p") {
+ libredditInstancesList = [...libredditI2pCustomRedirects]
+ tedditInstancesList = [...tedditI2pCustomRedirects]
+ } else if (protocol == "tor") {
+ libredditInstancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]
+ tedditInstancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ libredditInstancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]
+ tedditInstancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]
+ }
- if (url.host === "i.redd.it") {
- if (redditFrontend == 'teddit') {
- if (tedditInstancesList.length === 0) return;
- let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList);
- return `${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.search}`;
- }
- if (redditFrontend == 'libreddit') {
- if (libredditInstancesList.length === 0) return;
- let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
- return `${libredditRandomInstance}/img${url.pathname}${url.search}`
- }
- }
- else if (url.host === "redd.it") {
- if (redditFrontend == 'libreddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
- if (libredditInstancesList.length === 0) return;
- let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
- // https://redd.it/foo => https://libredd.it/comments/foo
- return `${libredditRandomInstance}/comments${url.pathname}${url.search}`;
- }
- if (redditFrontend == 'teddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
- if (tedditInstancesList.length === 0) return;
- let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList);
- // https://redd.it/foo => https://teddit.net/comments/foo
- return `${tedditRandomInstance}/comments${url.pathname}${url.search}`
- }
- }
- else if (url.host === 'preview.redd.it') {
- if (redditFrontend == 'teddit') return;
- if (redditFrontend == 'libreddit') {
- if (libredditInstancesList.length === 0) return;
- const libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
- return `${libredditRandomInstance}/preview/pre${url.pathname}${url.search}`;
- }
- }
+ if (url.host === "i.redd.it") {
+ if (redditFrontend == "teddit") {
+ if (tedditInstancesList.length === 0) return
+ let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList)
+ return `${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.search}`
+ }
+ if (redditFrontend == "libreddit") {
+ if (libredditInstancesList.length === 0) return
+ let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList)
+ return `${libredditRandomInstance}/img${url.pathname}${url.search}`
+ }
+ } else if (url.host === "redd.it") {
+ if (redditFrontend == "libreddit" && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
+ if (libredditInstancesList.length === 0) return
+ let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList)
+ // https://redd.it/foo => https://libredd.it/comments/foo
+ return `${libredditRandomInstance}/comments${url.pathname}${url.search}`
+ }
+ if (redditFrontend == "teddit" && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
+ if (tedditInstancesList.length === 0) return
+ let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList)
+ // https://redd.it/foo => https://teddit.net/comments/foo
+ return `${tedditRandomInstance}/comments${url.pathname}${url.search}`
+ }
+ } else if (url.host === "preview.redd.it") {
+ if (redditFrontend == "teddit") return
+ if (redditFrontend == "libreddit") {
+ if (libredditInstancesList.length === 0) return
+ const libredditRandomInstance = utils.getRandomInstance(libredditInstancesList)
+ return `${libredditRandomInstance}/preview/pre${url.pathname}${url.search}`
+ }
+ }
- let randomInstance;
- if (redditFrontend == 'libreddit') {
- if (libredditInstancesList.length === 0) return;
- randomInstance = utils.getRandomInstance(libredditInstancesList);
- }
- if (redditFrontend == 'teddit') {
- if (tedditInstancesList.length === 0) return;
- randomInstance = utils.getRandomInstance(tedditInstancesList);
- }
- return `${randomInstance}${url.pathname}${url.search}`;
+ let randomInstance
+ if (redditFrontend == "libreddit") {
+ if (libredditInstancesList.length === 0) return
+ randomInstance = utils.getRandomInstance(libredditInstancesList)
+ }
+ if (redditFrontend == "teddit") {
+ if (tedditInstancesList.length === 0) return
+ randomInstance = utils.getRandomInstance(tedditInstancesList)
+ }
+ return `${randomInstance}${url.pathname}${url.search}`
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableReddit && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList = [];
- if (redditFrontend == 'libreddit') {
- if (protocol == 'loki') instancesList = [...libredditLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...libredditI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
- }
- if ([
- ...redditRedirects.teddit.normal,
- ...redditRedirects.teddit.tor
- ].includes(protocolHost)) url.pathname = url.pathname.replace("/pics/w:null_", "/img/");
- }
- else if (redditFrontend == 'teddit') {
- if (protocol == 'loki') instancesList = [...tedditLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...tedditI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
- }
- if ([
- ...redditRedirects.libreddit.normal,
- ...redditRedirects.libreddit.tor
- ].includes(protocolHost)
- ) url.pathname = url.pathname.replace("/img/", "/pics/w:null_");
- }
+ return new Promise(async resolve => {
+ await init()
+ if (disableReddit && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ let instancesList = []
+ if (redditFrontend == "libreddit") {
+ if (protocol == "loki") instancesList = [...libredditLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...libredditI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]
+ }
+ if ([...redditRedirects.teddit.normal, ...redditRedirects.teddit.tor].includes(protocolHost)) url.pathname = url.pathname.replace("/pics/w:null_", "/img/")
+ } else if (redditFrontend == "teddit") {
+ if (protocol == "loki") instancesList = [...tedditLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...tedditI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]
+ }
+ if ([...redditRedirects.libreddit.normal, ...redditRedirects.libreddit.tor].includes(protocolHost)) url.pathname = url.pathname.replace("/img/", "/pics/w:null_")
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList', async r => {
- libredditNormalRedirectsChecks = [...redirects.libreddit.normal];
- tedditNormalRedirectsChecks = [...redirects.teddit.normal]
- for (const instance of r.cloudflareBlackList) {
- let i;
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ libredditNormalRedirectsChecks = [...redirects.libreddit.normal]
+ tedditNormalRedirectsChecks = [...redirects.teddit.normal]
+ for (const instance of r.cloudflareBlackList) {
+ let i
- i = libredditNormalRedirectsChecks.indexOf(instance);
- if (i > -1) libredditNormalRedirectsChecks.splice(i, 1);
+ i = libredditNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) libredditNormalRedirectsChecks.splice(i, 1)
- i = tedditNormalRedirectsChecks.indexOf(instance);
- if (i > -1) tedditNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableReddit: false,
- redditFrontend: 'libreddit',
- redditRedirects: redirects,
+ i = tedditNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) tedditNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableReddit: false,
+ redditFrontend: "libreddit",
+ redditRedirects: redirects,
- libredditNormalRedirectsChecks: libredditNormalRedirectsChecks,
- libredditNormalCustomRedirects: [],
+ libredditNormalRedirectsChecks: libredditNormalRedirectsChecks,
+ libredditNormalCustomRedirects: [],
- libredditTorRedirectsChecks: [...redirects.libreddit.tor],
- libredditTorCustomRedirects: [],
+ libredditTorRedirectsChecks: [...redirects.libreddit.tor],
+ libredditTorCustomRedirects: [],
- libredditI2pRedirectsChecks: [...redirects.libreddit.i2p],
- libredditI2pCustomRedirects: [],
+ libredditI2pRedirectsChecks: [...redirects.libreddit.i2p],
+ libredditI2pCustomRedirects: [],
- libredditLokiRedirectsChecks: [...redirects.libreddit.loki],
- libredditLokiCustomRedirects: [],
+ libredditLokiRedirectsChecks: [...redirects.libreddit.loki],
+ libredditLokiCustomRedirects: [],
- tedditNormalRedirectsChecks: tedditNormalRedirectsChecks,
- tedditNormalCustomRedirects: [],
+ tedditNormalRedirectsChecks: tedditNormalRedirectsChecks,
+ tedditNormalCustomRedirects: [],
- tedditTorRedirectsChecks: [...redirects.teddit.tor],
- tedditTorCustomRedirects: [],
+ tedditTorRedirectsChecks: [...redirects.teddit.tor],
+ tedditTorCustomRedirects: [],
- tedditI2pRedirectsChecks: [...redirects.teddit.i2p],
- tedditI2pCustomRedirects: [],
+ tedditI2pRedirectsChecks: [...redirects.teddit.i2p],
+ tedditI2pCustomRedirects: [],
- tedditLokiRedirectsChecks: [...redirects.teddit.loki],
- tedditLokiCustomRedirects: []
- }, () => resolve());
- });
- });
- });
+ tedditLokiRedirectsChecks: [...redirects.teddit.loki],
+ tedditLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
- initLibredditCookies,
- pasteLibredditCookies,
- initTedditCookies,
- pasteTedditCookies,
+ setRedirects,
+ initLibredditCookies,
+ pasteLibredditCookies,
+ initTedditCookies,
+ pasteTedditCookies,
- redirect,
- initDefaults,
- switchInstance,
-};
+ redirect,
+ initDefaults,
+ switchInstance,
+}
diff --git a/src/assets/javascripts/reuters.js b/src/assets/javascripts/reuters.js
index e1d18a40..e4afa19c 100644
--- a/src/assets/javascripts/reuters.js
+++ b/src/assets/javascripts/reuters.js
@@ -1,152 +1,140 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}(www\.|)reuters\.com.*/
-];
+const targets = [/^https?:\/{2}(www\.|)reuters\.com.*/]
-let redirects = {
- "neuters": {
- "normal": [
- "https://neuters.de"
- ],
- "tor": [],
- "i2p": [],
- "loki": []
- }
-}
+const frontends = new Array("neuters")
+const protocols = new Array("normal", "tor", "i2p", "loki")
-// const frontends = new Array("neuters")
-// const protocols = new Array("normal", "tor", "i2p", "loki")
+let redirects = {}
-// for (let i = 0; i < frontends.length; i++) {
-// redirects[frontends[i]] = {}
-// for (let x = 0; x < protocols.length; x++) {
-// redirects[frontends[i]][protocols[x]] = []
-// }
-// }
+for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
+}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.neuters = val;
- neutersNormalRedirectsChecks = [...redirects.neuters.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = neutersNormalRedirectsChecks.indexOf(instance);
- if (a > -1) neutersNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- neutersRedirects: redirects,
- neutersNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.neuters = val
+ neutersNormalRedirectsChecks = [...redirects.neuters.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = neutersNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) neutersNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ neutersRedirects: redirects,
+ neutersNormalRedirectsChecks,
+ })
+ })
}
-let
- disableReuters,
- protocol,
- protocolFallback,
- reutersRedirects,
- neutersNormalRedirectsChecks,
- neutersNormalCustomRedirects,
- neutersTorRedirectsChecks,
- neutersTorCustomRedirects,
- neutersI2pCustomRedirects,
- neutersLokiCustomRedirects;
+let disableReuters,
+ protocol,
+ protocolFallback,
+ reutersRedirects,
+ neutersNormalRedirectsChecks,
+ neutersNormalCustomRedirects,
+ neutersTorRedirectsChecks,
+ neutersTorCustomRedirects,
+ neutersI2pCustomRedirects,
+ neutersLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableReuters",
- "protocol",
- "protocolFallback",
- "reutersRedirects",
- "neutersNormalRedirectsChecks",
- "neutersNormalCustomRedirects",
- "neutersTorRedirectsChecks",
- "neutersTorCustomRedirects",
- "neutersI2pCustomRedirects",
- "neutersLokiCustomRedirects"
- ],
- r => {
- disableReuters = r.disableReuters;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- reutersRedirects = r.reutersRedirects;
- neutersNormalRedirectsChecks = r.neutersNormalRedirectsChecks;
- neutersNormalCustomRedirects = r.neutersNormalCustomRedirects;
- neutersTorRedirectsChecks = r.neutersTorRedirectsChecks;
- neutersTorCustomRedirects = r.neutersTorCustomRedirects;
- neutersI2pCustomRedirects = r.neutersI2pCustomRedirects;
- neutersLokiCustomRedirects = r.neutersLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableReuters",
+ "protocol",
+ "protocolFallback",
+ "reutersRedirects",
+ "neutersNormalRedirectsChecks",
+ "neutersNormalCustomRedirects",
+ "neutersTorRedirectsChecks",
+ "neutersTorCustomRedirects",
+ "neutersI2pCustomRedirects",
+ "neutersLokiCustomRedirects",
+ ],
+ r => {
+ disableReuters = r.disableReuters
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ reutersRedirects = r.reutersRedirects
+ neutersNormalRedirectsChecks = r.neutersNormalRedirectsChecks
+ neutersNormalCustomRedirects = r.neutersNormalCustomRedirects
+ neutersTorRedirectsChecks = r.neutersTorRedirectsChecks
+ neutersTorCustomRedirects = r.neutersTorCustomRedirects
+ neutersI2pCustomRedirects = r.neutersI2pCustomRedirects
+ neutersLokiCustomRedirects = r.neutersLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function redirect(url, type, initiator, disableOverride) {
- if (disableReuters && !disableOverride) return;
- if (type != "main_frame") return;
- const all = [
- ...reutersRedirects.neuters.normal,
- ...neutersNormalCustomRedirects
- ];
- if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.some(rx => rx.test(url.href))) return;
+ if (disableReuters && !disableOverride) return
+ if (type != "main_frame") return
+ const all = [...reutersRedirects.neuters.normal, ...neutersNormalCustomRedirects]
+ if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return
+ if (!targets.some(rx => rx.test(url.href))) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...neutersLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...neutersI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...neutersTorRedirectsChecks, ...neutersTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...neutersNormalRedirectsChecks, ...neutersNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...neutersLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...neutersI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...neutersTorRedirectsChecks, ...neutersTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...neutersNormalRedirectsChecks, ...neutersNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
- const randomInstance = utils.getRandomInstance(instancesList);
- // stolen from https://addons.mozilla.org/en-US/firefox/addon/reuters-redirect/
- if (
- url.pathname.startsWith('/article/') ||
- url.pathname.startsWith('/pf/') ||
- url.pathname.startsWith('/arc/') ||
- url.pathname.startsWith('/resizer/')
- )
- return null;
- else if (url.pathname.endsWith('/'))
- return `${randomInstance}${url.pathname}`;
- else
- return `${randomInstance}${url.pathname}/`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ // stolen from https://addons.mozilla.org/en-US/firefox/addon/reuters-redirect/
+ if (url.pathname.startsWith("/article/") || url.pathname.startsWith("/pf/") || url.pathname.startsWith("/arc/") || url.pathname.startsWith("/resizer/")) return null
+ else if (url.pathname.endsWith("/")) return `${randomInstance}${url.pathname}`
+ else return `${randomInstance}${url.pathname}/`
}
function initDefaults() {
- return new Promise(resolve => {
- browser.storage.local.set({
- disableReuters: true,
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.set(
+ {
+ disableReuters: true,
- reutersRedirects: redirects,
+ reutersRedirects: redirects,
- neutersNormalRedirectsChecks: [...redirects.neuters.normal],
- neutersNormalCustomRedirects: [],
+ neutersNormalRedirectsChecks: [...redirects.neuters.normal],
+ neutersNormalCustomRedirects: [],
- neutersTorRedirectsChecks: [...redirects.neuters.tor],
- neutersTorCustomRedirects: [],
+ neutersTorRedirectsChecks: [...redirects.neuters.tor],
+ neutersTorCustomRedirects: [],
- neutersI2pRedirectsChecks: [...redirects.neuters.i2p],
- neutersI2pCustomRedirects: [],
+ neutersI2pRedirectsChecks: [...redirects.neuters.i2p],
+ neutersI2pCustomRedirects: [],
- neutersLokiRedirectsChecks: [...redirects.neuters.loki],
- neutersLokiCustomRedirects: []
- }, () => resolve());
- });
+ neutersLokiRedirectsChecks: [...redirects.neuters.loki],
+ neutersLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
}
export default {
- setRedirects,
- redirect,
- initDefaults
-};
+ setRedirects,
+ redirect,
+ initDefaults,
+}
diff --git a/src/assets/javascripts/search.js b/src/assets/javascripts/search.js
index 7644ad4b..b076f5d0 100644
--- a/src/assets/javascripts/search.js
+++ b/src/assets/javascripts/search.js
@@ -1,16 +1,14 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}search\.libredirect\.invalid/,
-];
+const targets = [/^https?:\/{2}search\.libredirect\.invalid/]
// Ill optimise all of assets/javascripts at a later date. For now, I'll just add librex and optimse options javascript
const frontends = new Array("searx", "searxng", "whoogle", "librex")
const protocols = new Array("normal", "tor", "i2p", "loki")
const redirects = {}
- /*
+/*
"searx": {
"normal": [],
"tor": [],
@@ -32,640 +30,673 @@ const redirects = {}
//let tmp = "{"
for (let i = 0; i < frontends.length; i++) {
- //redirects.frontends[i] = {}
- //redirects.push(frontends[i])
- //tmp = frontends[i]
- //tmp = tmp + '\n"' + frontends[i] + '": {'
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- //redirects.frontends[i].protocols = []
- //tmp = tmp + '\n"' + protocols[x] + '": [],'
- redirects[frontends[i]][protocols[x]] = []
- }
- //tmp = tmp + "\n},"
+ //redirects.frontends[i] = {}
+ //redirects.push(frontends[i])
+ //tmp = frontends[i]
+ //tmp = tmp + '\n"' + frontends[i] + '": {'
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ //redirects.frontends[i].protocols = []
+ //tmp = tmp + '\n"' + protocols[x] + '": [],'
+ redirects[frontends[i]][protocols[x]] = []
+ }
+ //tmp = tmp + "\n},"
}
//tmp = tmp + "\n}"
//const redirects = JSON.parse(tmp)
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects = val;
- searxNormalRedirectsChecks = [...redirects.searx.normal];
- searxngNormalRedirectsChecks = [...redirects.searxng.normal];
- whoogleNormalRedirectsChecks = [...redirects.whoogle.normal];
- librexNormalRedirectsChecks = [...redirects.librex.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = searxNormalRedirectsChecks.indexOf(instance);
- if (a > -1) searxNormalRedirectsChecks.splice(a, 1);
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects = val
+ searxNormalRedirectsChecks = [...redirects.searx.normal]
+ searxngNormalRedirectsChecks = [...redirects.searxng.normal]
+ whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]
+ librexNormalRedirectsChecks = [...redirects.librex.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = searxNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) searxNormalRedirectsChecks.splice(a, 1)
- const b = searxngNormalRedirectsChecks.indexOf(instance);
- if (b > -1) searxngNormalRedirectsChecks.splice(b, 1);
+ const b = searxngNormalRedirectsChecks.indexOf(instance)
+ if (b > -1) searxngNormalRedirectsChecks.splice(b, 1)
- const c = whoogleNormalRedirectsChecks.indexOf(instance);
- if (c > -1) whoogleNormalRedirectsChecks.splice(c, 1);
+ const c = whoogleNormalRedirectsChecks.indexOf(instance)
+ if (c > -1) whoogleNormalRedirectsChecks.splice(c, 1)
- const d = librexNormalRedirectsChecks.indexOf(instance);
- if (d > -1) librexNormalRedirectsChecks.splice(d, 1);
- }
- browser.storage.local.set({
- searchRedirects: redirects,
- searxNormalRedirectsChecks,
- searxngNormalRedirectsChecks,
- whoogleNormalRedirectsChecks,
- librexNormalRedirectsChecks,
- });
- })
+ const d = librexNormalRedirectsChecks.indexOf(instance)
+ if (d > -1) librexNormalRedirectsChecks.splice(d, 1)
+ }
+ browser.storage.local.set({
+ searchRedirects: redirects,
+ searxNormalRedirectsChecks,
+ searxngNormalRedirectsChecks,
+ whoogleNormalRedirectsChecks,
+ librexNormalRedirectsChecks,
+ })
+ })
}
-let
- disableSearch,
- searchFrontend,
- searchRedirects,
- protocol,
- protocolFallback,
- whoogleNormalRedirectsChecks,
- whoogleNormalCustomRedirects,
- whoogleTorRedirectsChecks,
- whoogleTorCustomRedirects,
- whoogleI2pRedirectsChecks,
- whoogleI2pCustomRedirects,
- whoogleLokiCustomRedirects,
- searxNormalRedirectsChecks,
- searxNormalCustomRedirects,
- searxTorRedirectsChecks,
- searxTorCustomRedirects,
- searxI2pRedirectsChecks,
- searxI2pCustomRedirects,
- searxLokiCustomRedirects,
- searxngNormalRedirectsChecks,
- searxngNormalCustomRedirects,
- searxngTorRedirectsChecks,
- searxngTorCustomRedirects,
- searxngI2pRedirectsChecks,
- searxngI2pCustomRedirects,
- searxngLokiCustomRedirects,
- librexNormalRedirectsChecks,
- librexNormalCustomRedirects,
- librexTorRedirectsChecks,
- librexTorCustomRedirects,
- librexI2pRedirectsChecks,
- librexI2pCustomRedirects,
- librexLokiCustomRedirects;
+let disableSearch,
+ searchFrontend,
+ searchRedirects,
+ protocol,
+ protocolFallback,
+ whoogleNormalRedirectsChecks,
+ whoogleNormalCustomRedirects,
+ whoogleTorRedirectsChecks,
+ whoogleTorCustomRedirects,
+ whoogleI2pRedirectsChecks,
+ whoogleI2pCustomRedirects,
+ whoogleLokiCustomRedirects,
+ searxNormalRedirectsChecks,
+ searxNormalCustomRedirects,
+ searxTorRedirectsChecks,
+ searxTorCustomRedirects,
+ searxI2pRedirectsChecks,
+ searxI2pCustomRedirects,
+ searxLokiCustomRedirects,
+ searxngNormalRedirectsChecks,
+ searxngNormalCustomRedirects,
+ searxngTorRedirectsChecks,
+ searxngTorCustomRedirects,
+ searxngI2pRedirectsChecks,
+ searxngI2pCustomRedirects,
+ searxngLokiCustomRedirects,
+ librexNormalRedirectsChecks,
+ librexNormalCustomRedirects,
+ librexTorRedirectsChecks,
+ librexTorCustomRedirects,
+ librexI2pRedirectsChecks,
+ librexI2pCustomRedirects,
+ librexLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableSearch",
- "searchFrontend",
- "searchRedirects",
- "protocol",
- "protocolFallback",
- "whoogleNormalRedirectsChecks",
- "whoogleNormalCustomRedirects",
- "whoogleTorRedirectsChecks",
- "whoogleTorCustomRedirects",
- "whoogleI2pRedirectsChecks",
- "whoogleI2pCustomRedirects",
- "whoogleLokiCustomRedirects",
- "searxNormalRedirectsChecks",
- "searxNormalCustomRedirects",
- "searxTorRedirectsChecks",
- "searxTorCustomRedirects",
- "searxI2pRedirectsChecks",
- "searxI2pCustomRedirects",
- "searxLokiCustomRedirects",
- "searxngNormalRedirectsChecks",
- "searxngNormalCustomRedirects",
- "searxngTorRedirectsChecks",
- "searxngTorCustomRedirects",
- "searxngI2pRedirectsChecks",
- "searxngI2pCustomRedirects",
- "searxngLokiCustomRedirects",
- "librexNormalRedirectsChecks",
- "librexNormalCustomRedirects",
- "librexTorRedirectsChecks",
- "librexTorCustomRedirects",
- "librexI2pRedirectsChecks",
- "librexI2pCustomRedirects",
- "librexLokiCustomRedirects"
- ],
- r => {
- disableSearch = r.disableSearch;
- searchFrontend = r.searchFrontend;
- searchRedirects = r.searchRedirects;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- whoogleNormalRedirectsChecks = r.whoogleNormalRedirectsChecks;
- whoogleNormalCustomRedirects = r.whoogleNormalCustomRedirects;
- whoogleTorRedirectsChecks = r.whoogleTorRedirectsChecks;
- whoogleTorCustomRedirects = r.whoogleTorCustomRedirects;
- whoogleI2pRedirectsChecks = r.whoogleI2pRedirectsChecks;
- whoogleI2pCustomRedirects = r.whoogleI2pCustomRedirects;
- whoogleLokiCustomRedirects = r.whoogleLokiCustomRedirects;
- searxNormalRedirectsChecks = r.searxNormalRedirectsChecks;
- searxNormalCustomRedirects = r.searxNormalCustomRedirects;
- searxTorRedirectsChecks = r.searxTorRedirectsChecks;
- searxTorCustomRedirects = r.searxTorCustomRedirects;
- searxI2pRedirectsChecks = r.searxI2pRedirectsChecks;
- searxI2pCustomRedirects = r.searxI2pCustomRedirects;
- searxLokiCustomRedirects = r.searxLokiCustomRedirects;
- searxngNormalRedirectsChecks = r.searxngNormalRedirectsChecks;
- searxngNormalCustomRedirects = r.searxngNormalCustomRedirects;
- searxngTorRedirectsChecks = r.searxngTorRedirectsChecks;
- searxngTorCustomRedirects = r.searxngTorCustomRedirects;
- searxngI2pRedirectsChecks = r.searxngI2pRedirectsChecks;
- searxngI2pCustomRedirects = r.searxngI2pCustomRedirects;
- searxngLokiCustomRedirects = r.searxngLokiCustomRedirects;
- librexNormalRedirectsChecks = r.librexNormalRedirectsChecks;
- librexNormalCustomRedirects = r.librexNormalCustomRedirects;
- librexTorRedirectsChecks = r.librexTorRedirectsChecks;
- librexTorCustomRedirects = r.librexTorCustomRedirects;
- librexI2pRedirectsChecks = r.librexI2pRedirectsChecks;
- librexI2pCustomRedirects = r.librexI2pCustomRedirects;
- librexLokiCustomRedirects = r.librexLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableSearch",
+ "searchFrontend",
+ "searchRedirects",
+ "protocol",
+ "protocolFallback",
+ "whoogleNormalRedirectsChecks",
+ "whoogleNormalCustomRedirects",
+ "whoogleTorRedirectsChecks",
+ "whoogleTorCustomRedirects",
+ "whoogleI2pRedirectsChecks",
+ "whoogleI2pCustomRedirects",
+ "whoogleLokiCustomRedirects",
+ "searxNormalRedirectsChecks",
+ "searxNormalCustomRedirects",
+ "searxTorRedirectsChecks",
+ "searxTorCustomRedirects",
+ "searxI2pRedirectsChecks",
+ "searxI2pCustomRedirects",
+ "searxLokiCustomRedirects",
+ "searxngNormalRedirectsChecks",
+ "searxngNormalCustomRedirects",
+ "searxngTorRedirectsChecks",
+ "searxngTorCustomRedirects",
+ "searxngI2pRedirectsChecks",
+ "searxngI2pCustomRedirects",
+ "searxngLokiCustomRedirects",
+ "librexNormalRedirectsChecks",
+ "librexNormalCustomRedirects",
+ "librexTorRedirectsChecks",
+ "librexTorCustomRedirects",
+ "librexI2pRedirectsChecks",
+ "librexI2pCustomRedirects",
+ "librexLokiCustomRedirects",
+ ],
+ r => {
+ disableSearch = r.disableSearch
+ searchFrontend = r.searchFrontend
+ searchRedirects = r.searchRedirects
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ whoogleNormalRedirectsChecks = r.whoogleNormalRedirectsChecks
+ whoogleNormalCustomRedirects = r.whoogleNormalCustomRedirects
+ whoogleTorRedirectsChecks = r.whoogleTorRedirectsChecks
+ whoogleTorCustomRedirects = r.whoogleTorCustomRedirects
+ whoogleI2pRedirectsChecks = r.whoogleI2pRedirectsChecks
+ whoogleI2pCustomRedirects = r.whoogleI2pCustomRedirects
+ whoogleLokiCustomRedirects = r.whoogleLokiCustomRedirects
+ searxNormalRedirectsChecks = r.searxNormalRedirectsChecks
+ searxNormalCustomRedirects = r.searxNormalCustomRedirects
+ searxTorRedirectsChecks = r.searxTorRedirectsChecks
+ searxTorCustomRedirects = r.searxTorCustomRedirects
+ searxI2pRedirectsChecks = r.searxI2pRedirectsChecks
+ searxI2pCustomRedirects = r.searxI2pCustomRedirects
+ searxLokiCustomRedirects = r.searxLokiCustomRedirects
+ searxngNormalRedirectsChecks = r.searxngNormalRedirectsChecks
+ searxngNormalCustomRedirects = r.searxngNormalCustomRedirects
+ searxngTorRedirectsChecks = r.searxngTorRedirectsChecks
+ searxngTorCustomRedirects = r.searxngTorCustomRedirects
+ searxngI2pRedirectsChecks = r.searxngI2pRedirectsChecks
+ searxngI2pCustomRedirects = r.searxngI2pCustomRedirects
+ searxngLokiCustomRedirects = r.searxngLokiCustomRedirects
+ librexNormalRedirectsChecks = r.librexNormalRedirectsChecks
+ librexNormalCustomRedirects = r.librexNormalCustomRedirects
+ librexTorRedirectsChecks = r.librexTorRedirectsChecks
+ librexTorCustomRedirects = r.librexTorCustomRedirects
+ librexI2pRedirectsChecks = r.librexI2pRedirectsChecks
+ librexI2pCustomRedirects = r.librexI2pCustomRedirects
+ librexLokiCustomRedirects = r.librexLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function initSearxCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...searxNormalRedirectsChecks,
- ...searxNormalCustomRedirects,
- ...searxTorRedirectsChecks,
- ...searxTorCustomRedirects,
- ...searxI2pRedirectsChecks,
- ...searxI2pCustomRedirects,
- ...searxLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(from)
+ if (
+ ![
+ ...searxNormalRedirectsChecks,
+ ...searxNormalCustomRedirects,
+ ...searxTorRedirectsChecks,
+ ...searxTorCustomRedirects,
+ ...searxI2pRedirectsChecks,
+ ...searxI2pCustomRedirects,
+ ...searxLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...searxLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
- }
- await utils.copyCookie('searx', from, checkedInstances, 'advanced_search');
- await utils.copyCookie('searx', from, checkedInstances, 'autocomplete');
- await utils.copyCookie('searx', from, checkedInstances, 'categories');
- await utils.copyCookie('searx', from, checkedInstances, 'disabled_engines');
- await utils.copyCookie('searx', from, checkedInstances, 'disabled_plugins');
- await utils.copyCookie('searx', from, checkedInstances, 'doi_resolver');
- await utils.copyCookie('searx', from, checkedInstances, 'enabled_engines');
- await utils.copyCookie('searx', from, checkedInstances, 'enabled_plugins');
- await utils.copyCookie('searx', from, checkedInstances, 'image_proxy');
- await utils.copyCookie('searx', from, checkedInstances, 'language');
- await utils.copyCookie('searx', from, checkedInstances, 'locale');
- await utils.copyCookie('searx', from, checkedInstances, 'method');
- await utils.copyCookie('searx', from, checkedInstances, 'oscar-style');
- await utils.copyCookie('searx', from, checkedInstances, 'results_on_new_tab');
- await utils.copyCookie('searx', from, checkedInstances, 'safesearch');
- await utils.copyCookie('searx', from, checkedInstances, 'theme');
- await utils.copyCookie('searx', from, checkedInstances, 'tokens');
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...searxLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]
+ }
+ await utils.copyCookie("searx", from, checkedInstances, "advanced_search")
+ await utils.copyCookie("searx", from, checkedInstances, "autocomplete")
+ await utils.copyCookie("searx", from, checkedInstances, "categories")
+ await utils.copyCookie("searx", from, checkedInstances, "disabled_engines")
+ await utils.copyCookie("searx", from, checkedInstances, "disabled_plugins")
+ await utils.copyCookie("searx", from, checkedInstances, "doi_resolver")
+ await utils.copyCookie("searx", from, checkedInstances, "enabled_engines")
+ await utils.copyCookie("searx", from, checkedInstances, "enabled_plugins")
+ await utils.copyCookie("searx", from, checkedInstances, "image_proxy")
+ await utils.copyCookie("searx", from, checkedInstances, "language")
+ await utils.copyCookie("searx", from, checkedInstances, "locale")
+ await utils.copyCookie("searx", from, checkedInstances, "method")
+ await utils.copyCookie("searx", from, checkedInstances, "oscar-style")
+ await utils.copyCookie("searx", from, checkedInstances, "results_on_new_tab")
+ await utils.copyCookie("searx", from, checkedInstances, "safesearch")
+ await utils.copyCookie("searx", from, checkedInstances, "theme")
+ await utils.copyCookie("searx", from, checkedInstances, "tokens")
+ }
+ resolve(true)
+ })
}
function pasteSearxCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableSearch || searchFrontend != 'searx') { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...searxLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('searx', checkedInstances, 'advanced_search');
- utils.getCookiesFromStorage('searx', checkedInstances, 'autocomplete');
- utils.getCookiesFromStorage('searx', checkedInstances, 'categories');
- utils.getCookiesFromStorage('searx', checkedInstances, 'disabled_engines');
- utils.getCookiesFromStorage('searx', checkedInstances, 'disabled_plugins');
- utils.getCookiesFromStorage('searx', checkedInstances, 'doi_resolver');
- utils.getCookiesFromStorage('searx', checkedInstances, 'enabled_engines');
- utils.getCookiesFromStorage('searx', checkedInstances, 'enabled_plugins');
- utils.getCookiesFromStorage('searx', checkedInstances, 'image_proxy');
- utils.getCookiesFromStorage('searx', checkedInstances, 'language');
- utils.getCookiesFromStorage('searx', checkedInstances, 'locale');
- utils.getCookiesFromStorage('searx', checkedInstances, 'method');
- utils.getCookiesFromStorage('searx', checkedInstances, 'oscar-style');
- utils.getCookiesFromStorage('searx', checkedInstances, 'results_on_new_tab');
- utils.getCookiesFromStorage('searx', checkedInstances, 'safesearch');
- utils.getCookiesFromStorage('searx', checkedInstances, 'theme');
- utils.getCookiesFromStorage('searx', checkedInstances, 'tokens');
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableSearch || searchFrontend != "searx") {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...searxLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("searx", checkedInstances, "advanced_search")
+ utils.getCookiesFromStorage("searx", checkedInstances, "autocomplete")
+ utils.getCookiesFromStorage("searx", checkedInstances, "categories")
+ utils.getCookiesFromStorage("searx", checkedInstances, "disabled_engines")
+ utils.getCookiesFromStorage("searx", checkedInstances, "disabled_plugins")
+ utils.getCookiesFromStorage("searx", checkedInstances, "doi_resolver")
+ utils.getCookiesFromStorage("searx", checkedInstances, "enabled_engines")
+ utils.getCookiesFromStorage("searx", checkedInstances, "enabled_plugins")
+ utils.getCookiesFromStorage("searx", checkedInstances, "image_proxy")
+ utils.getCookiesFromStorage("searx", checkedInstances, "language")
+ utils.getCookiesFromStorage("searx", checkedInstances, "locale")
+ utils.getCookiesFromStorage("searx", checkedInstances, "method")
+ utils.getCookiesFromStorage("searx", checkedInstances, "oscar-style")
+ utils.getCookiesFromStorage("searx", checkedInstances, "results_on_new_tab")
+ utils.getCookiesFromStorage("searx", checkedInstances, "safesearch")
+ utils.getCookiesFromStorage("searx", checkedInstances, "theme")
+ utils.getCookiesFromStorage("searx", checkedInstances, "tokens")
+ resolve()
+ })
}
function initSearxngCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...searxngNormalRedirectsChecks,
- ...searxngNormalCustomRedirects,
- ...searxngTorRedirectsChecks,
- ...searxngTorCustomRedirects,
- ...searxngI2pRedirectsChecks,
- ...searxngI2pCustomRedirects,
- ...searxngLokiCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(from)
+ if (
+ ![
+ ...searxngNormalRedirectsChecks,
+ ...searxngNormalCustomRedirects,
+ ...searxngTorRedirectsChecks,
+ ...searxngTorCustomRedirects,
+ ...searxngI2pRedirectsChecks,
+ ...searxngI2pCustomRedirects,
+ ...searxngLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...searxngLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
- }
- await utils.copyCookie('searxng', from, checkedInstances, 'autocomplete');
- await utils.copyCookie('searxng', from, checkedInstances, 'categories');
- await utils.copyCookie('searxng', from, checkedInstances, 'disabled_engines');
- await utils.copyCookie('searxng', from, checkedInstances, 'disabled_plugins');
- await utils.copyCookie('searxng', from, checkedInstances, 'doi_resolver');
- await utils.copyCookie('searxng', from, checkedInstances, 'enabled_plugins');
- await utils.copyCookie('searxng', from, checkedInstances, 'enabled_engines');
- await utils.copyCookie('searxng', from, checkedInstances, 'image_proxy');
- await utils.copyCookie('searxng', from, checkedInstances, 'infinite_scroll');
- await utils.copyCookie('searxng', from, checkedInstances, 'language');
- await utils.copyCookie('searxng', from, checkedInstances, 'locale');
- await utils.copyCookie('searxng', from, checkedInstances, 'maintab');
- await utils.copyCookie('searxng', from, checkedInstances, 'method');
- await utils.copyCookie('searxng', from, checkedInstances, 'query_in_title');
- await utils.copyCookie('searxng', from, checkedInstances, 'results_on_new_tab');
- await utils.copyCookie('searxng', from, checkedInstances, 'safesearch');
- await utils.copyCookie('searxng', from, checkedInstances, 'simple_style');
- await utils.copyCookie('searxng', from, checkedInstances, 'theme');
- await utils.copyCookie('searxng', from, checkedInstances, 'tokens');
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...searxngLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]
+ }
+ await utils.copyCookie("searxng", from, checkedInstances, "autocomplete")
+ await utils.copyCookie("searxng", from, checkedInstances, "categories")
+ await utils.copyCookie("searxng", from, checkedInstances, "disabled_engines")
+ await utils.copyCookie("searxng", from, checkedInstances, "disabled_plugins")
+ await utils.copyCookie("searxng", from, checkedInstances, "doi_resolver")
+ await utils.copyCookie("searxng", from, checkedInstances, "enabled_plugins")
+ await utils.copyCookie("searxng", from, checkedInstances, "enabled_engines")
+ await utils.copyCookie("searxng", from, checkedInstances, "image_proxy")
+ await utils.copyCookie("searxng", from, checkedInstances, "infinite_scroll")
+ await utils.copyCookie("searxng", from, checkedInstances, "language")
+ await utils.copyCookie("searxng", from, checkedInstances, "locale")
+ await utils.copyCookie("searxng", from, checkedInstances, "maintab")
+ await utils.copyCookie("searxng", from, checkedInstances, "method")
+ await utils.copyCookie("searxng", from, checkedInstances, "query_in_title")
+ await utils.copyCookie("searxng", from, checkedInstances, "results_on_new_tab")
+ await utils.copyCookie("searxng", from, checkedInstances, "safesearch")
+ await utils.copyCookie("searxng", from, checkedInstances, "simple_style")
+ await utils.copyCookie("searxng", from, checkedInstances, "theme")
+ await utils.copyCookie("searxng", from, checkedInstances, "tokens")
+ }
+ resolve(true)
+ })
}
function pasteSearxngCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableSearch || searchFrontend != 'searxng', protocol === undefined) { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...searxngLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('searxng', checkedInstances, 'autocomplete');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'categories');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'disabled_engines');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'disabled_plugins');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'doi_resolver');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'enabled_plugins');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'enabled_engines');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'image_proxy');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'infinite_scroll');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'language');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'locale');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'maintab');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'method');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'query_in_title');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'results_on_new_tab');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'safesearch');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'simple_style');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'theme');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'tokens');
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if ((disableSearch || searchFrontend != "searxng", protocol === undefined)) {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...searxngLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("searxng", checkedInstances, "autocomplete")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "categories")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "disabled_engines")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "disabled_plugins")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "doi_resolver")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "enabled_plugins")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "enabled_engines")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "image_proxy")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "infinite_scroll")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "language")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "locale")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "maintab")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "method")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "query_in_title")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "results_on_new_tab")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "safesearch")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "simple_style")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "theme")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "tokens")
+ resolve()
+ })
}
function initLibrexCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...librexNormalRedirectsChecks,
- ...librexNormalCustomRedirects,
- ...librexTorRedirectsChecks,
- ...librexTorCustomRedirects,
- ...librexI2pRedirectsChecks,
- ...librexI2pCustomRedirects,
- ...librexLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(from)
+ if (
+ ![
+ ...librexNormalRedirectsChecks,
+ ...librexNormalCustomRedirects,
+ ...librexTorRedirectsChecks,
+ ...librexTorCustomRedirects,
+ ...librexI2pRedirectsChecks,
+ ...librexI2pCustomRedirects,
+ ...librexLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
- if(!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...librexLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects];
- }
- await utils.copyCookie('librex', from, checkedInstances, 'bibliogram');
- await utils.copyCookie('librex', from, checkedInstances, 'disable_special');
- await utils.copyCookie('librex', from, checkedInstances, 'invidious');
- await utils.copyCookie('librex', from, checkedInstances, 'libreddit');
- await utils.copyCookie('librex', from, checkedInstances, 'nitter');
- await utils.copyCookie('librex', from, checkedInstances, 'proxitok');
- await utils.copyCookie('librex', from, checkedInstances, 'theme');
- await utils.copyCookie('librex', from, checkedInstances, 'wikiless');
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...librexLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]
+ }
+ await utils.copyCookie("librex", from, checkedInstances, "bibliogram")
+ await utils.copyCookie("librex", from, checkedInstances, "disable_special")
+ await utils.copyCookie("librex", from, checkedInstances, "invidious")
+ await utils.copyCookie("librex", from, checkedInstances, "libreddit")
+ await utils.copyCookie("librex", from, checkedInstances, "nitter")
+ await utils.copyCookie("librex", from, checkedInstances, "proxitok")
+ await utils.copyCookie("librex", from, checkedInstances, "theme")
+ await utils.copyCookie("librex", from, checkedInstances, "wikiless")
+ }
+ resolve(true)
+ })
}
function pasteLibrexCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableSearch || searchFrontend != 'librex', protocol === undefined) { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...librexLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('librex', checkedInstances, 'bibliogram');
- utils.getCookiesFromStorage('librex', checkedInstances, 'disable_special');
- utils.getCookiesFromStorage('librex', checkedInstances, 'invidious');
- utils.getCookiesFromStorage('librex', checkedInstances, 'libreddit');
- utils.getCookiesFromStorage('librex', checkedInstances, 'nitter');
- utils.getCookiesFromStorage('librex', checkedInstances, 'proxitok');
- utils.getCookiesFromStorage('librex', checkedInstances, 'theme');
- utils.getCookiesFromStorage('librex', checkedInstances, 'wikiless');
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if ((disableSearch || searchFrontend != "librex", protocol === undefined)) {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...librexLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("librex", checkedInstances, "bibliogram")
+ utils.getCookiesFromStorage("librex", checkedInstances, "disable_special")
+ utils.getCookiesFromStorage("librex", checkedInstances, "invidious")
+ utils.getCookiesFromStorage("librex", checkedInstances, "libreddit")
+ utils.getCookiesFromStorage("librex", checkedInstances, "nitter")
+ utils.getCookiesFromStorage("librex", checkedInstances, "proxitok")
+ utils.getCookiesFromStorage("librex", checkedInstances, "theme")
+ utils.getCookiesFromStorage("librex", checkedInstances, "wikiless")
+ resolve()
+ })
}
function redirect(url, disableOverride) {
- if (disableSearch && !disableOverride) return;
- if (!targets.some(rx => rx.test(url.href))) return;
- if (url.searchParams.has('tbm')) return;
- if (url.hostname.includes('google') && !url.searchParams.has('q') && url.pathname != '/') return;
- let randomInstance;
- let path;
- if (searchFrontend == 'searx') {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...searxLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ if (disableSearch && !disableOverride) return
+ if (!targets.some(rx => rx.test(url.href))) return
+ if (url.searchParams.has("tbm")) return
+ if (url.hostname.includes("google") && !url.searchParams.has("q") && url.pathname != "/") return
+ let randomInstance
+ let path
+ if (searchFrontend == "searx") {
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...searxLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- randomInstance = utils.getRandomInstance(instancesList)
- path = "/";
- }
- else if (searchFrontend == 'searxng') {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...searxngLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ randomInstance = utils.getRandomInstance(instancesList)
+ path = "/"
+ } else if (searchFrontend == "searxng") {
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...searxngLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- randomInstance = utils.getRandomInstance(instancesList)
- path = "/";
- }
- else if (searchFrontend == 'whoogle') {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...whoogleLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...whoogleI2pCustomRedirects, ...whoogleI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ randomInstance = utils.getRandomInstance(instancesList)
+ path = "/"
+ } else if (searchFrontend == "whoogle") {
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...whoogleLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...whoogleI2pCustomRedirects, ...whoogleI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- randomInstance = utils.getRandomInstance(instancesList)
- path = "/search";
- }
- else if (searchFrontend == 'librex') {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...librexLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ randomInstance = utils.getRandomInstance(instancesList)
+ path = "/search"
+ } else if (searchFrontend == "librex") {
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...librexLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- randomInstance = utils.getRandomInstance(instancesList)
- path = "/search.php";
- }
+ randomInstance = utils.getRandomInstance(instancesList)
+ path = "/search.php"
+ }
- if (
- ((url.hostname.includes('google') || url.hostname.includes('bing')) && !url.searchParams.has('q')) ||
- (url.hostname.includes('yandex') && !url.searchParams.has('text'))
- ) path = '/';
+ if (((url.hostname.includes("google") || url.hostname.includes("bing")) && !url.searchParams.has("q")) || (url.hostname.includes("yandex") && !url.searchParams.has("text"))) path = "/"
- let searchQuery = "";
- if (
- (
- url.hostname.includes('google') ||
- url.hostname.includes('bing') ||
- url.hostname.includes('search.libredirect.invalid')
- ) &&
- url.searchParams.has('q')
- ) searchQuery = `?q=${encodeURIComponent(url.searchParams.get('q'))}`;
- if (url.hostname.includes('yandex') && url.searchParams.has('text')) searchQuery = `?q=${url.searchParams.get('text')}`;
+ let searchQuery = ""
+ if ((url.hostname.includes("google") || url.hostname.includes("bing") || url.hostname.includes("search.libredirect.invalid")) && url.searchParams.has("q"))
+ searchQuery = `?q=${encodeURIComponent(url.searchParams.get("q"))}`
+ if (url.hostname.includes("yandex") && url.searchParams.has("text")) searchQuery = `?q=${url.searchParams.get("text")}`
- return `${randomInstance}${path}${searchQuery}`;
+ return `${randomInstance}${path}${searchQuery}`
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableSearch && !disableOverride) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- if (![
- ...searchRedirects.searx.normal,
- ...searchRedirects.searx.tor,
- ...searchRedirects.searx.i2p,
+ return new Promise(async resolve => {
+ await init()
+ if (disableSearch && !disableOverride) {
+ resolve()
+ return
+ }
+ let protocolHost = utils.protocolHost(url)
+ if (
+ ![
+ ...searchRedirects.searx.normal,
+ ...searchRedirects.searx.tor,
+ ...searchRedirects.searx.i2p,
+
+ ...searchRedirects.searxng.normal,
+ ...searchRedirects.searxng.tor,
+ ...searchRedirects.searxng.i2p,
- ...searchRedirects.searxng.normal,
- ...searchRedirects.searxng.tor,
- ...searchRedirects.searxng.i2p,
+ ...searchRedirects.whoogle.normal,
+ ...searchRedirects.whoogle.tor,
+ ...searchRedirects.whoogle.i2p,
- ...searchRedirects.whoogle.normal,
- ...searchRedirects.whoogle.tor,
- ...searchRedirects.whoogle.i2p,
+ ...searchRedirects.librex.normal,
+ ...searchRedirects.librex.tor,
+ ...searchRedirects.librex.i2p,
- ...searchRedirects.librex.normal,
- ...searchRedirects.librex.tor,
- ...searchRedirects.librex.i2p,
+ ...searxNormalCustomRedirects,
+ ...searxTorCustomRedirects,
+ ...searxI2pCustomRedirects,
+ ...searxLokiCustomRedirects,
- ...searxNormalCustomRedirects,
- ...searxTorCustomRedirects,
- ...searxI2pCustomRedirects,
- ...searxLokiCustomRedirects,
+ ...searxngNormalCustomRedirects,
+ ...searxngTorCustomRedirects,
+ ...searxngI2pCustomRedirects,
+ ...searxngLokiCustomRedirects,
- ...searxngNormalCustomRedirects,
- ...searxngTorCustomRedirects,
- ...searxngI2pCustomRedirects,
- ...searxngLokiCustomRedirects,
+ ...whoogleNormalCustomRedirects,
+ ...whoogleTorCustomRedirects,
+ ...whoogleI2pCustomRedirects,
+ ...whoogleLokiCustomRedirects,
- ...whoogleNormalCustomRedirects,
- ...whoogleTorCustomRedirects,
- ...whoogleI2pCustomRedirects,
- ...whoogleLokiCustomRedirects,
+ ...librexNormalCustomRedirects,
+ ...librexTorCustomRedirects,
+ ...librexI2pCustomRedirects,
+ ...librexLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
- ...librexNormalCustomRedirects,
- ...librexTorCustomRedirects,
- ...librexI2pCustomRedirects,
- ...librexLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+ let instancesList = []
- let instancesList;
-
- if (protocol == 'loki') {
- if (searchFrontend == 'searx') instancesList = [...searxLokiCustomRedirects];
- else if (searchFrontend == 'searxng') instancesList = [...searxngLokiCustomRedirects];
- else if (searchFrontend == 'whoogle') instancesList = [...whoogleLokiCustomRedirects];
- else if (searchFrontend == 'librex') instancesList = [...librexLokiCustomRedirects];
- }
- else if (protocol == 'tor') {
- if (searchFrontend == 'searx') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
- else if (searchFrontend == 'searxng') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
- else if (searchFrontend == 'whoogle') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects];
- else if (searchFrontend == 'librex') instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects];
- }
- else if (protocol == 'i2p') {
- if (searchFrontend == 'searx') instancesList = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects];
- else if (searchFrontend == 'searxng') instancesList = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects];
- else if (searchFrontend == 'whoogle') instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects];
- else if (searchFrontend == 'librex') instancesList = [...librexI2pRedirectsChecks, ...librexI2pCustomRedirects];
- }
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- if (searchFrontend == 'searx') instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
- else if (searchFrontend == 'searxng') instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
- else if (searchFrontend == 'whoogle') instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects];
- else if (searchFrontend == 'librex') instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects];
- }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ if (protocol == "loki") {
+ if (searchFrontend == "searx") instancesList = [...searxLokiCustomRedirects]
+ else if (searchFrontend == "searxng") instancesList = [...searxngLokiCustomRedirects]
+ else if (searchFrontend == "whoogle") instancesList = [...whoogleLokiCustomRedirects]
+ else if (searchFrontend == "librex") instancesList = [...librexLokiCustomRedirects]
+ } else if (protocol == "tor") {
+ if (searchFrontend == "searx") instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]
+ else if (searchFrontend == "searxng") instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]
+ else if (searchFrontend == "whoogle") instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects]
+ else if (searchFrontend == "librex") instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]
+ } else if (protocol == "i2p") {
+ if (searchFrontend == "searx") instancesList = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects]
+ else if (searchFrontend == "searxng") instancesList = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects]
+ else if (searchFrontend == "whoogle") instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects]
+ else if (searchFrontend == "librex") instancesList = [...librexI2pRedirectsChecks, ...librexI2pCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ if (searchFrontend == "searx") instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]
+ else if (searchFrontend == "searxng") instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]
+ else if (searchFrontend == "whoogle") instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects]
+ else if (searchFrontend == "librex") instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]
+ }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- /*
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ /*
redirects.searx = dataJson.searx;
redirects.searxng = dataJson.searxng;
redirects.whoogle = dataJson.whoogle;
*/
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
- browser.storage.local.get('cloudflareBlackList', async r => {
- whoogleNormalRedirectsChecks = [...redirects.whoogle.normal];
- searxNormalRedirectsChecks = [...redirects.searx.normal];
- searxngNormalRedirectsChecks = [...redirects.searxng.normal];
- librexNormalRedirectsChecks = [...redirects.librex.normal];
- for (const instance of r.cloudflareBlackList) {
- let i;
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]
+ searxNormalRedirectsChecks = [...redirects.searx.normal]
+ searxngNormalRedirectsChecks = [...redirects.searxng.normal]
+ librexNormalRedirectsChecks = [...redirects.librex.normal]
+ for (const instance of r.cloudflareBlackList) {
+ let i
- i = whoogleNormalRedirectsChecks.indexOf(instance);
- if (i > -1) whoogleNormalRedirectsChecks.splice(i, 1);
+ i = whoogleNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) whoogleNormalRedirectsChecks.splice(i, 1)
- i = searxNormalRedirectsChecks.indexOf(instance);
- if (i > -1) searxNormalRedirectsChecks.splice(i, 1);
+ i = searxNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) searxNormalRedirectsChecks.splice(i, 1)
- i = searxngNormalRedirectsChecks.indexOf(instance);
- if (i > -1) searxngNormalRedirectsChecks.splice(i, 1);
+ i = searxngNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) searxngNormalRedirectsChecks.splice(i, 1)
- i = librexNormalRedirectsChecks.indexOf(instance);
- if (i > -1) librexNormalRedirectsChecks.splice(i, 1)
- }
- browser.storage.local.set({
- disableSearch: false,
- searchFrontend: 'searxng',
- searchRedirects: redirects,
- searxngCustomSettings: false,
+ i = librexNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) librexNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableSearch: false,
+ searchFrontend: "searxng",
+ searchRedirects: redirects,
+ searxngCustomSettings: false,
- whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks,
- whoogleNormalCustomRedirects: [],
+ whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks,
+ whoogleNormalCustomRedirects: [],
- whoogleTorRedirectsChecks: [...redirects.whoogle.tor],
- whoogleTorCustomRedirects: [],
+ whoogleTorRedirectsChecks: [...redirects.whoogle.tor],
+ whoogleTorCustomRedirects: [],
- whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p],
- whoogleI2pCustomRedirects: [],
+ whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p],
+ whoogleI2pCustomRedirects: [],
- whoogleLokiRedirectsChecks: [...redirects.whoogle.loki],
- whoogleLokiCustomRedirects: [],
+ whoogleLokiRedirectsChecks: [...redirects.whoogle.loki],
+ whoogleLokiCustomRedirects: [],
- searxNormalRedirectsChecks: searxNormalRedirectsChecks,
- searxNormalCustomRedirects: [],
+ searxNormalRedirectsChecks: searxNormalRedirectsChecks,
+ searxNormalCustomRedirects: [],
- searxTorRedirectsChecks: [...redirects.searx.tor],
- searxTorCustomRedirects: [],
+ searxTorRedirectsChecks: [...redirects.searx.tor],
+ searxTorCustomRedirects: [],
- searxI2pRedirectsChecks: [...redirects.searx.i2p],
- searxI2pCustomRedirects: [],
+ searxI2pRedirectsChecks: [...redirects.searx.i2p],
+ searxI2pCustomRedirects: [],
- searxLokiRedirectsChecks: [...redirects.searx.loki],
- searxLokiCustomRedirects: [],
+ searxLokiRedirectsChecks: [...redirects.searx.loki],
+ searxLokiCustomRedirects: [],
- searxngNormalRedirectsChecks: searxngNormalRedirectsChecks,
- searxngNormalCustomRedirects: [],
+ searxngNormalRedirectsChecks: searxngNormalRedirectsChecks,
+ searxngNormalCustomRedirects: [],
- searxngTorRedirectsChecks: [...redirects.searxng.tor],
- searxngTorCustomRedirects: [],
+ searxngTorRedirectsChecks: [...redirects.searxng.tor],
+ searxngTorCustomRedirects: [],
- searxngI2pRedirectsChecks: [...redirects.searxng.i2p],
- searxngI2pCustomRedirects: [],
+ searxngI2pRedirectsChecks: [...redirects.searxng.i2p],
+ searxngI2pCustomRedirects: [],
- searxngLokiRedirectsChecks: [...redirects.searxng.loki],
- searxngLokiCustomRedirects: [],
+ searxngLokiRedirectsChecks: [...redirects.searxng.loki],
+ searxngLokiCustomRedirects: [],
- librexNormalRedirectsChecks: librexNormalRedirectsChecks,
- librexNormalCustomRedirects: [],
+ librexNormalRedirectsChecks: librexNormalRedirectsChecks,
+ librexNormalCustomRedirects: [],
- librexTorRedirectsChecks: [...redirects.librex.tor],
- librexTorCustomRedirects: [],
+ librexTorRedirectsChecks: [...redirects.librex.tor],
+ librexTorCustomRedirects: [],
- librexI2pRedirectsChecks: [...redirects.librex.i2p],
- librexI2pCustomRedirects: [],
+ librexI2pRedirectsChecks: [...redirects.librex.i2p],
+ librexI2pCustomRedirects: [],
- librexLokiRedirectsChecks: [...redirects.librex.loki],
- librexLokiCustomRedirects: []
- }, () => resolve())
- })
- })
- })
+ librexLokiRedirectsChecks: [...redirects.librex.loki],
+ librexLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
- initSearxCookies,
- pasteSearxCookies,
- initSearxngCookies,
- pasteSearxngCookies,
- initLibrexCookies,
- pasteLibrexCookies,
- redirect,
- initDefaults,
- switchInstance,
-};
+ setRedirects,
+ initSearxCookies,
+ pasteSearxCookies,
+ initSearxngCookies,
+ pasteSearxngCookies,
+ initLibrexCookies,
+ pasteLibrexCookies,
+ redirect,
+ initDefaults,
+ switchInstance,
+}
diff --git a/src/assets/javascripts/sendTargets.js b/src/assets/javascripts/sendTargets.js
index 2ea95d21..ba892fe3 100644
--- a/src/assets/javascripts/sendTargets.js
+++ b/src/assets/javascripts/sendTargets.js
@@ -1,12 +1,8 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}send\.libredirect\.invalid\/$/,
- /^ https ?: \/\/send\.firefox\.com\/$/,
- /^https?:\/{2}sendfiles\.online\/$/
-];
+const targets = [/^https?:\/{2}send\.libredirect\.invalid\/$/, /^ https ?: \/\/send\.firefox\.com\/$/, /^https?:\/{2}sendfiles\.online\/$/]
const frontends = new Array("send")
const protocols = new Array("normal", "tor", "i2p", "loki")
@@ -14,167 +10,183 @@ const protocols = new Array("normal", "tor", "i2p", "loki")
let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.send = val;
- sendNormalRedirectsChecks = [...redirects.send.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = sendNormalRedirectsChecks.indexOf(instance);
- if (a > -1) sendNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- sendTargetsRedirects: redirects,
- sendNormalRedirectsChecks,
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.send = val
+ sendNormalRedirectsChecks = [...redirects.send.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = sendNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) sendNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ sendTargetsRedirects: redirects,
+ sendNormalRedirectsChecks,
+ })
+ })
}
-let
- disableSendTarget,
- sendTargetsRedirects,
- sendNormalRedirectsChecks,
- sendNormalCustomRedirects,
- sendTorRedirectsChecks,
- sendTorCustomRedirects,
- sendI2pCustomRedirects,
- sendLokiCustomRedirects,
- protocol,
- protocolFallback;
+let disableSendTarget,
+ sendTargetsRedirects,
+ sendNormalRedirectsChecks,
+ sendNormalCustomRedirects,
+ sendTorRedirectsChecks,
+ sendTorCustomRedirects,
+ sendI2pCustomRedirects,
+ sendLokiCustomRedirects,
+ protocol,
+ protocolFallback
function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableSendTarget",
- "sendTargetsRedirects",
- "protocol",
- "protocolFallback",
- "sendNormalRedirectsChecks",
- "sendNormalCustomRedirects",
- "sendTorRedirectsChecks",
- "sendTorCustomRedirects",
- "sendI2pCustomRedirects",
- "sendLokiCustomRedirects"
- ],
- r => {
- disableSendTarget = r.disableSendTarget;
- sendTargetsRedirects = r.sendTargetsRedirects;
- sendNormalRedirectsChecks = r.sendNormalRedirectsChecks;
- sendNormalCustomRedirects = r.sendNormalCustomRedirects;
- sendTorRedirectsChecks = r.sendTorRedirectsChecks;
- sendTorCustomRedirects = r.sendTorCustomRedirects;
- sendI2pCustomRedirects = r.sendI2pCustomRedirects;
- sendLokiCustomRedirects = r.sendLokiCustomRedirects;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- resolve();
- }
- )
- })
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "disableSendTarget",
+ "sendTargetsRedirects",
+ "protocol",
+ "protocolFallback",
+ "sendNormalRedirectsChecks",
+ "sendNormalCustomRedirects",
+ "sendTorRedirectsChecks",
+ "sendTorCustomRedirects",
+ "sendI2pCustomRedirects",
+ "sendLokiCustomRedirects",
+ ],
+ r => {
+ disableSendTarget = r.disableSendTarget
+ sendTargetsRedirects = r.sendTargetsRedirects
+ sendNormalRedirectsChecks = r.sendNormalRedirectsChecks
+ sendNormalCustomRedirects = r.sendNormalCustomRedirects
+ sendTorRedirectsChecks = r.sendTorRedirectsChecks
+ sendTorCustomRedirects = r.sendTorCustomRedirects
+ sendI2pCustomRedirects = r.sendI2pCustomRedirects
+ sendLokiCustomRedirects = r.sendLokiCustomRedirects
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function all() {
- return [
- ...sendTargetsRedirects.send.normal,
- ...sendTargetsRedirects.send.tor,
- ...sendNormalCustomRedirects,
- ...sendTorRedirectsChecks,
- ...sendTorCustomRedirects,
- ...sendI2pCustomRedirects,
- ...sendLokiCustomRedirects
- ];
+ return [
+ ...sendTargetsRedirects.send.normal,
+ ...sendTargetsRedirects.send.tor,
+ ...sendNormalCustomRedirects,
+ ...sendTorRedirectsChecks,
+ ...sendTorCustomRedirects,
+ ...sendI2pCustomRedirects,
+ ...sendLokiCustomRedirects,
+ ]
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableSendTarget && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- if (url.pathname != '/') { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ if (disableSendTarget && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ if (url.pathname != "/") {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...sendLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...sendI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...sendLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...sendI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function redirect(url, type, initiator, disableOverride) {
- if (disableSendTarget && !disableOverride) return;
- if (type != "main_frame") return;
- if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.some(rx => rx.test(url.href))) return;
+ if (disableSendTarget && !disableOverride) return
+ if (type != "main_frame") return
+ if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return
+ if (!targets.some(rx => rx.test(url.href))) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...sendLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...sendI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...sendLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...sendI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
- const randomInstance = utils.getRandomInstance(instancesList);
- return randomInstance;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return randomInstance
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList', async r => {
- sendNormalRedirectsChecks = [...redirects.send.normal];
- for (const instance of r.cloudflareBlackList) {
- let i = sendNormalRedirectsChecks.indexOf(instance);
- if (i > -1) sendNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableSendTarget: false,
- sendTargetsRedirects: redirects,
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ sendNormalRedirectsChecks = [...redirects.send.normal]
+ for (const instance of r.cloudflareBlackList) {
+ let i = sendNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) sendNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableSendTarget: false,
+ sendTargetsRedirects: redirects,
- sendNormalRedirectsChecks: sendNormalRedirectsChecks,
- sendNormalCustomRedirects: [],
+ sendNormalRedirectsChecks: sendNormalRedirectsChecks,
+ sendNormalCustomRedirects: [],
- sendTorRedirectsChecks: [...redirects.send.tor],
- sendTorCustomRedirects: [],
+ sendTorRedirectsChecks: [...redirects.send.tor],
+ sendTorCustomRedirects: [],
- sendI2pRedirectsChecks: [...redirects.send.i2p],
- sendI2pCustomRedirects: [],
+ sendI2pRedirectsChecks: [...redirects.send.i2p],
+ sendI2pCustomRedirects: [],
- sendLokiRedirectsChecks: [...redirects.send.loki],
- sendLokiCustomRedirects: []
- }, () => resolve())
- })
- })
- })
+ sendLokiRedirectsChecks: [...redirects.send.loki],
+ sendLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
- redirect,
- switchInstance,
- initDefaults,
-};
+ setRedirects,
+ redirect,
+ switchInstance,
+ initDefaults,
+}
diff --git a/src/assets/javascripts/tiktok.js b/src/assets/javascripts/tiktok.js
index a5c14a27..ba4a9ff1 100644
--- a/src/assets/javascripts/tiktok.js
+++ b/src/assets/javascripts/tiktok.js
@@ -1,10 +1,8 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}(www\.|)tiktok\.com.*/
-];
+const targets = [/^https?:\/{2}(www\.|)tiktok\.com.*/]
const frontends = new Array("proxiTok")
const protocols = new Array("normal", "tor", "i2p", "loki")
@@ -12,232 +10,251 @@ const protocols = new Array("normal", "tor", "i2p", "loki")
let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.proxiTok = val;
- proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = proxiTokNormalRedirectsChecks.indexOf(instance);
- if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- tiktokRedirects: redirects,
- proxiTokNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.proxiTok = val
+ proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = proxiTokNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ tiktokRedirects: redirects,
+ proxiTokNormalRedirectsChecks,
+ })
+ })
}
function initProxiTokCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...proxiTokNormalRedirectsChecks,
- ...proxiTokNormalCustomRedirects,
- ...proxiTokTorRedirectsChecks,
- ...proxiTokTorCustomRedirects,
- ...proxiTokI2pCustomRedirects,
- ...proxiTokLokiCustomRedirects,
- ].includes(protocolHost)) resolve();
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(from)
+ if (
+ ![
+ ...proxiTokNormalRedirectsChecks,
+ ...proxiTokNormalCustomRedirects,
+ ...proxiTokTorRedirectsChecks,
+ ...proxiTokTorCustomRedirects,
+ ...proxiTokI2pCustomRedirects,
+ ...proxiTokLokiCustomRedirects,
+ ].includes(protocolHost)
+ )
+ resolve()
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...proxiTokI2pCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...proxiTokLokiCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects];
- }
- await utils.copyCookie('proxitok', from, checkedInstances, 'theme');
- await utils.copyCookie('proxitok', from, checkedInstances, 'api-legacy');
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...proxiTokI2pCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...proxiTokLokiCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]
+ }
+ await utils.copyCookie("proxitok", from, checkedInstances, "theme")
+ await utils.copyCookie("proxitok", from, checkedInstances, "api-legacy")
+ }
+ resolve(true)
+ })
}
function pasteProxiTokCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableTiktok || protocol === undefined) { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...proxiTokI2pCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...proxiTokLokiCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('proxitok', checkedInstances, 'theme');
- utils.getCookiesFromStorage('proxitok', checkedInstances, 'api-legacy');
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableTiktok || protocol === undefined) {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...proxiTokI2pCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...proxiTokLokiCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("proxitok", checkedInstances, "theme")
+ utils.getCookiesFromStorage("proxitok", checkedInstances, "api-legacy")
+ resolve()
+ })
}
-let
- disableTiktok,
- protocol,
- protocolFallback,
- tiktokRedirects,
- proxiTokNormalRedirectsChecks,
- proxiTokNormalCustomRedirects,
- proxiTokTorRedirectsChecks,
- proxiTokTorCustomRedirects,
- proxiTokI2pCustomRedirects,
- proxiTokLokiCustomRedirects;
+let disableTiktok,
+ protocol,
+ protocolFallback,
+ tiktokRedirects,
+ proxiTokNormalRedirectsChecks,
+ proxiTokNormalCustomRedirects,
+ proxiTokTorRedirectsChecks,
+ proxiTokTorCustomRedirects,
+ proxiTokI2pCustomRedirects,
+ proxiTokLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableTiktok",
- "protocol",
- "protocolFallback",
- "tiktokRedirects",
- "proxiTokNormalRedirectsChecks",
- "proxiTokNormalCustomRedirects",
- "proxiTokTorRedirectsChecks",
- "proxiTokTorCustomRedirects",
- "proxiTokI2pCustomRedirects",
- "proxiTokLokiCustomRedirects"
- ],
- r => {
- disableTiktok = r.disableTiktok;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- tiktokRedirects = r.tiktokRedirects;
- proxiTokNormalRedirectsChecks = r.proxiTokNormalRedirectsChecks;
- proxiTokNormalCustomRedirects = r.proxiTokNormalCustomRedirects;
- proxiTokTorRedirectsChecks = r.proxiTokTorRedirectsChecks;
- proxiTokTorCustomRedirects = r.proxiTokTorCustomRedirects;
- proxiTokI2pCustomRedirects = r.proxiTokI2pCustomRedirects;
- proxiTokLokiCustomRedirects = r.proxiTokLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableTiktok",
+ "protocol",
+ "protocolFallback",
+ "tiktokRedirects",
+ "proxiTokNormalRedirectsChecks",
+ "proxiTokNormalCustomRedirects",
+ "proxiTokTorRedirectsChecks",
+ "proxiTokTorCustomRedirects",
+ "proxiTokI2pCustomRedirects",
+ "proxiTokLokiCustomRedirects",
+ ],
+ r => {
+ disableTiktok = r.disableTiktok
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ tiktokRedirects = r.tiktokRedirects
+ proxiTokNormalRedirectsChecks = r.proxiTokNormalRedirectsChecks
+ proxiTokNormalCustomRedirects = r.proxiTokNormalCustomRedirects
+ proxiTokTorRedirectsChecks = r.proxiTokTorRedirectsChecks
+ proxiTokTorCustomRedirects = r.proxiTokTorCustomRedirects
+ proxiTokI2pCustomRedirects = r.proxiTokI2pCustomRedirects
+ proxiTokLokiCustomRedirects = r.proxiTokLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
// https://www.tiktok.com/@keysikaspol/video/7061265241887345946
// https://www.tiktok.com/@keysikaspol
function redirect(url, type, initiator, disableOverride) {
- if (disableTiktok && !disableOverride) return;
- if (type != "main_frame") return;
- const all = [
- ...tiktokRedirects.proxiTok.normal,
- ...proxiTokNormalCustomRedirects
- ];
- if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.some(rx => rx.test(url.href))) return;
+ if (disableTiktok && !disableOverride) return
+ if (type != "main_frame") return
+ const all = [...tiktokRedirects.proxiTok.normal, ...proxiTokNormalCustomRedirects]
+ if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return
+ if (!targets.some(rx => rx.test(url.href))) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...proxiTokI2pCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...proxiTokLokiCustomRedirects];
- else if (protocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...proxiTokI2pCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...proxiTokLokiCustomRedirects]
+ else if (protocol == "tor") instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}${url.pathname}`
}
function reverse(url) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...tiktokRedirects.proxiTok.normal,
- ...tiktokRedirects.proxiTok.tor,
- ...proxiTokNormalCustomRedirects,
- ...proxiTokTorCustomRedirects,
- ...proxiTokI2pCustomRedirects,
- ...proxiTokLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(url)
+ const all = [
+ ...tiktokRedirects.proxiTok.normal,
+ ...tiktokRedirects.proxiTok.tor,
+ ...proxiTokNormalCustomRedirects,
+ ...proxiTokTorCustomRedirects,
+ ...proxiTokI2pCustomRedirects,
+ ...proxiTokLokiCustomRedirects,
+ ]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- resolve(`https://tiktok.com${url.pathname}${url.search}`);
- })
+ resolve(`https://tiktok.com${url.pathname}${url.search}`)
+ })
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableTiktok && !disableOverride) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...tiktokRedirects.proxiTok.tor,
- ...tiktokRedirects.proxiTok.normal,
+ return new Promise(async resolve => {
+ await init()
+ if (disableTiktok && !disableOverride) {
+ resolve()
+ return
+ }
+ let protocolHost = utils.protocolHost(url)
+ const all = [
+ ...tiktokRedirects.proxiTok.tor,
+ ...tiktokRedirects.proxiTok.normal,
- ...proxiTokNormalCustomRedirects,
- ...proxiTokTorCustomRedirects,
- ...proxiTokI2pCustomRedirects,
- ...proxiTokLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ ...proxiTokNormalCustomRedirects,
+ ...proxiTokTorCustomRedirects,
+ ...proxiTokI2pCustomRedirects,
+ ...proxiTokLokiCustomRedirects,
+ ]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...proxiTokI2pCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...proxiTokLokiCustomRedirects];
- else if (protocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...proxiTokI2pCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...proxiTokLokiCustomRedirects]
+ else if (protocol == "tor") instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.set({
- disableTiktok: false,
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.set(
+ {
+ disableTiktok: false,
- tiktokRedirects: redirects,
+ tiktokRedirects: redirects,
- proxiTokNormalRedirectsChecks: [...redirects.proxiTok.normal],
- proxiTokNormalCustomRedirects: [],
+ proxiTokNormalRedirectsChecks: [...redirects.proxiTok.normal],
+ proxiTokNormalCustomRedirects: [],
- proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor],
- proxiTokTorCustomRedirects: [],
+ proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor],
+ proxiTokTorCustomRedirects: [],
- proxiTokI2pRedirectsChecks: [...redirects.proxiTok.i2p],
- proxiTokI2pCustomRedirects: [],
+ proxiTokI2pRedirectsChecks: [...redirects.proxiTok.i2p],
+ proxiTokI2pCustomRedirects: [],
- proxiTokLokiRedirectsChecks: [...redirects.proxiTok.loki],
- proxiTokLokiCustomRedirects: []
- }, () => resolve());
- });
- })
+ proxiTokLokiRedirectsChecks: [...redirects.proxiTok.loki],
+ proxiTokLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
}
export default {
- setRedirects,
+ setRedirects,
- redirect,
- reverse,
- switchInstance,
+ redirect,
+ reverse,
+ switchInstance,
- initProxiTokCookies,
- pasteProxiTokCookies,
+ initProxiTokCookies,
+ pasteProxiTokCookies,
- initDefaults
-};
+ initDefaults,
+}
diff --git a/src/assets/javascripts/translate/get_lingva_preferences.js b/src/assets/javascripts/translate/get_lingva_preferences.js
index 40def6a5..0d6ff6ec 100644
--- a/src/assets/javascripts/translate/get_lingva_preferences.js
+++ b/src/assets/javascripts/translate/get_lingva_preferences.js
@@ -1,12 +1,10 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-browser.storage.local.set(
- {
- ['lingva_chakra-ui-color-mode']: localStorage.getItem('chakra-ui-color-mode'),
- lingva_isauto: localStorage.getItem('isauto'),
- lingva_source: localStorage.getItem('source'),
- lingva_target: localStorage.getItem('target'),
- }
-)
+browser.storage.local.set({
+ ["lingva_chakra-ui-color-mode"]: localStorage.getItem("chakra-ui-color-mode"),
+ lingva_isauto: localStorage.getItem("isauto"),
+ lingva_source: localStorage.getItem("source"),
+ lingva_target: localStorage.getItem("target"),
+})
-console.log(localStorage.getItem('target')); \ No newline at end of file
+console.log(localStorage.getItem("target"))
diff --git a/src/assets/javascripts/translate/set_lingva_preferences.js b/src/assets/javascripts/translate/set_lingva_preferences.js
index a0f2ad87..04a36e1b 100644
--- a/src/assets/javascripts/translate/set_lingva_preferences.js
+++ b/src/assets/javascripts/translate/set_lingva_preferences.js
@@ -1,17 +1,9 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-browser.storage.local.get(
- [
- "lingva_chakra-ui-color-mode",
- "lingva_isauto",
- "lingva_source",
- "lingva_target",
- ],
- r => {
- if (r['lingva_chakra-ui-color-mode'] !== undefined) localStorage.setItem('chakra-ui-color-mode', r['lingva_chakra-ui-color-mode']);
- if (r.lingva_isauto !== undefined) localStorage.setItem('isauto', r.lingva_isauto);
- if (r.lingva_source !== undefined) localStorage.setItem('source', r.lingva_source);
- if (r.lingva_target !== undefined) localStorage.setItem('target', r.lingva_target);
- window.close();
- }
-)
+browser.storage.local.get(["lingva_chakra-ui-color-mode", "lingva_isauto", "lingva_source", "lingva_target"], r => {
+ if (r["lingva_chakra-ui-color-mode"] !== undefined) localStorage.setItem("chakra-ui-color-mode", r["lingva_chakra-ui-color-mode"])
+ if (r.lingva_isauto !== undefined) localStorage.setItem("isauto", r.lingva_isauto)
+ if (r.lingva_source !== undefined) localStorage.setItem("source", r.lingva_source)
+ if (r.lingva_target !== undefined) localStorage.setItem("target", r.lingva_target)
+ window.close()
+})
diff --git a/src/assets/javascripts/translate/translate.js b/src/assets/javascripts/translate/translate.js
index 75c5b5f8..5512f7f1 100644
--- a/src/assets/javascripts/translate/translate.js
+++ b/src/assets/javascripts/translate/translate.js
@@ -1,379 +1,413 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from '../utils.js'
+import utils from "../utils.js"
-const targets = [
- /^https?:\/{2}translate\.google(\.[a-z]{2,3}){1,2}\//,
-];
+const targets = [/^https?:\/{2}translate\.google(\.[a-z]{2,3}){1,2}\//]
const frontends = new Array("simplyTranslate", "lingva")
const protocols = new Array("normal", "tor", "i2p", "loki")
-let redirects = {};
+let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
-let
- translateDisable,
- translateFrontend,
- protocol,
- protocolFallback,
- translateRedirects,
- simplyTranslateNormalRedirectsChecks,
- simplyTranslateNormalCustomRedirects,
- simplyTranslateTorRedirectsChecks,
- simplyTranslateTorCustomRedirects,
- simplyTranslateI2pRedirectsChecks,
- simplyTranslateI2pCustomRedirects,
- simplyTranslateLokiRedirectsChecks,
- simplyTranslateLokiCustomRedirects,
- lingvaNormalRedirectsChecks,
- lingvaNormalCustomRedirects,
- lingvaTorRedirectsChecks,
- lingvaTorCustomRedirects,
- lingvaI2pCustomRedirects,
- lingvaLokiCustomRedirects
+let translateDisable,
+ translateFrontend,
+ protocol,
+ protocolFallback,
+ translateRedirects,
+ simplyTranslateNormalRedirectsChecks,
+ simplyTranslateNormalCustomRedirects,
+ simplyTranslateTorRedirectsChecks,
+ simplyTranslateTorCustomRedirects,
+ simplyTranslateI2pRedirectsChecks,
+ simplyTranslateI2pCustomRedirects,
+ simplyTranslateLokiRedirectsChecks,
+ simplyTranslateLokiCustomRedirects,
+ lingvaNormalRedirectsChecks,
+ lingvaNormalCustomRedirects,
+ lingvaTorRedirectsChecks,
+ lingvaTorCustomRedirects,
+ lingvaI2pCustomRedirects,
+ lingvaLokiCustomRedirects
function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "translateDisable",
- "translateFrontend",
- "protocol",
- "protocolFallback",
- "translateRedirects",
- "simplyTranslateNormalRedirectsChecks",
- "simplyTranslateNormalCustomRedirects",
- "simplyTranslateTorRedirectsChecks",
- "simplyTranslateTorCustomRedirects",
- "simplyTranslateI2pRedirectsChecks",
- "simplyTranslateI2pCustomRedirects",
- "simplyTranslateLokiRedirectsChecks",
- "simplyTranslateLokiCustomRedirects",
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "translateDisable",
+ "translateFrontend",
+ "protocol",
+ "protocolFallback",
+ "translateRedirects",
+ "simplyTranslateNormalRedirectsChecks",
+ "simplyTranslateNormalCustomRedirects",
+ "simplyTranslateTorRedirectsChecks",
+ "simplyTranslateTorCustomRedirects",
+ "simplyTranslateI2pRedirectsChecks",
+ "simplyTranslateI2pCustomRedirects",
+ "simplyTranslateLokiRedirectsChecks",
+ "simplyTranslateLokiCustomRedirects",
- "lingvaNormalRedirectsChecks",
- "lingvaNormalCustomRedirects",
- "lingvaTorRedirectsChecks",
- "lingvaTorCustomRedirects",
- "lingvaI2pCustomRedirects",
- "lingvaLokiCustomRedirects"
- ],
- r => {
- translateDisable = r.translateDisable;
- translateFrontend = r.translateFrontend;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback
- translateRedirects = r.translateRedirects;
- simplyTranslateNormalRedirectsChecks = r.simplyTranslateNormalRedirectsChecks;
- simplyTranslateNormalCustomRedirects = r.simplyTranslateNormalCustomRedirects;
- simplyTranslateTorRedirectsChecks = r.simplyTranslateTorRedirectsChecks;
- simplyTranslateTorCustomRedirects = r.simplyTranslateTorCustomRedirects;
- simplyTranslateI2pRedirectsChecks = r.simplyTranslateI2pRedirectsChecks;
- simplyTranslateI2pCustomRedirects = r.simplyTranslateI2pCustomRedirects;
- simplyTranslateLokiRedirectsChecks = r.simplyTranslateLokiRedirectsChecks;
- simplyTranslateLokiCustomRedirects = r.simplyTranslateLokiCustomRedirects;
- lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks;
- lingvaNormalCustomRedirects = r.lingvaNormalCustomRedirects;
- lingvaTorRedirectsChecks = r.lingvaTorRedirectsChecks;
- lingvaTorCustomRedirects = r.lingvaTorCustomRedirects;
- lingvaI2pCustomRedirects = r.lingvaI2pCustomRedirects;
- lingvaLokiCustomRedirects = r.lingvaLokiCustomRedirects;
- resolve();
- }
- )
- })
+ "lingvaNormalRedirectsChecks",
+ "lingvaNormalCustomRedirects",
+ "lingvaTorRedirectsChecks",
+ "lingvaTorCustomRedirects",
+ "lingvaI2pCustomRedirects",
+ "lingvaLokiCustomRedirects",
+ ],
+ r => {
+ translateDisable = r.translateDisable
+ translateFrontend = r.translateFrontend
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ translateRedirects = r.translateRedirects
+ simplyTranslateNormalRedirectsChecks = r.simplyTranslateNormalRedirectsChecks
+ simplyTranslateNormalCustomRedirects = r.simplyTranslateNormalCustomRedirects
+ simplyTranslateTorRedirectsChecks = r.simplyTranslateTorRedirectsChecks
+ simplyTranslateTorCustomRedirects = r.simplyTranslateTorCustomRedirects
+ simplyTranslateI2pRedirectsChecks = r.simplyTranslateI2pRedirectsChecks
+ simplyTranslateI2pCustomRedirects = r.simplyTranslateI2pCustomRedirects
+ simplyTranslateLokiRedirectsChecks = r.simplyTranslateLokiRedirectsChecks
+ simplyTranslateLokiCustomRedirects = r.simplyTranslateLokiCustomRedirects
+ lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks
+ lingvaNormalCustomRedirects = r.lingvaNormalCustomRedirects
+ lingvaTorRedirectsChecks = r.lingvaTorRedirectsChecks
+ lingvaTorCustomRedirects = r.lingvaTorCustomRedirects
+ lingvaI2pCustomRedirects = r.lingvaI2pCustomRedirects
+ lingvaLokiCustomRedirects = r.lingvaLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects = val;
- lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
- for (const instance of r.cloudflareBlackList) {
- const i = lingvaNormalRedirectsChecks.indexOf(instance);
- if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- translateRedirects: redirects,
- simplyTranslateNormalRedirectsChecks: redirects.simplyTranslate.normal,
- simplyTranslateTorRedirectsChecks: redirects.simplyTranslate.tor,
- simplyTranslateI2pRedirectsChecks: redirects.simplyTranslate.i2p,
- simplyTranslateLokiRedirectsChecks: redirects.simplyTranslate.loki,
- lingvaNormalRedirectsChecks,
- lingvaTorRedirectsChecks: redirects.lingva.tor,
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects = val
+ lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const i = lingvaNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set({
+ translateRedirects: redirects,
+ simplyTranslateNormalRedirectsChecks: redirects.simplyTranslate.normal,
+ simplyTranslateTorRedirectsChecks: redirects.simplyTranslate.tor,
+ simplyTranslateI2pRedirectsChecks: redirects.simplyTranslate.i2p,
+ simplyTranslateLokiRedirectsChecks: redirects.simplyTranslate.loki,
+ lingvaNormalRedirectsChecks,
+ lingvaTorRedirectsChecks: redirects.lingva.tor,
+ })
+ })
}
function copyPasteLingvaLocalStorage(test, url, tabId) {
- return new Promise(async resolve => {
- await init();
- if (translateDisable || translateFrontend != 'lingva') { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...lingvaNormalRedirectsChecks,
- ...lingvaNormalCustomRedirects,
- ...lingvaTorRedirectsChecks,
- ...lingvaTorCustomRedirects,
- ...lingvaI2pCustomRedirects,
- ...lingvaLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ if (translateDisable || translateFrontend != "lingva") {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (
+ ![...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects, ...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects, ...lingvaI2pCustomRedirects, ...lingvaLokiCustomRedirects].includes(
+ protocolHost
+ )
+ ) {
+ resolve()
+ return
+ }
- if (!test) {
- browser.tabs.executeScript(
- tabId,
- { file: "/assets/javascripts/translate/get_lingva_preferences.js", runAt: "document_start" }
- );
+ if (!test) {
+ browser.tabs.executeScript(tabId, {
+ file: "/assets/javascripts/translate/get_lingva_preferences.js",
+ runAt: "document_start",
+ })
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks,
- else if (protocol == 'i2p') checkedInstances = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks,
- else if (protocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
- }
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- if (checkedInstances.length === 0) { resolve(); return; }
- for (const to of checkedInstances)
- browser.tabs.create(
- { url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/translate/set_lingva_preferences.js", runAt: "document_start" })
- );
- }
- resolve(true);
- }
- )
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...lingvaLokiCustomRedirects]
+ //...lingvaLokiRedirectsChecks,
+ else if (protocol == "i2p") checkedInstances = [...lingvaI2pCustomRedirects]
+ //...lingvaI2pRedirectsChecks,
+ else if (protocol == "tor") checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]
+ }
+ const i = checkedInstances.indexOf(protocolHost)
+ if (i !== -1) checkedInstances.splice(i, 1)
+ if (checkedInstances.length === 0) {
+ resolve()
+ return
+ }
+ for (const to of checkedInstances)
+ browser.tabs.create({ url: to }, tab =>
+ browser.tabs.executeScript(tab.id, {
+ file: "/assets/javascripts/translate/set_lingva_preferences.js",
+ runAt: "document_start",
+ })
+ )
+ }
+ resolve(true)
+ })
}
function pasteLingvaLocalStorage() {
- return new Promise(async resolve => {
- await init();
- if (translateDisable || translateFrontend != 'lingva') { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks,
- else if (protocol == 'i2p') checkedInstances = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks,
- else if (protocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
- }
- for (const to of checkedInstances)
- browser.tabs.create({ url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/translate/set_lingva_preferences.js", runAt: "document_start" }))
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (translateDisable || translateFrontend != "lingva") {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...lingvaLokiCustomRedirects]
+ //...lingvaLokiRedirectsChecks,
+ else if (protocol == "i2p") checkedInstances = [...lingvaI2pCustomRedirects]
+ //...lingvaI2pRedirectsChecks,
+ else if (protocol == "tor") checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]
+ }
+ for (const to of checkedInstances)
+ browser.tabs.create({ url: to }, tab =>
+ browser.tabs.executeScript(tab.id, {
+ file: "/assets/javascripts/translate/set_lingva_preferences.js",
+ runAt: "document_start",
+ })
+ )
+ resolve()
+ })
}
function copyPasteSimplyTranslateCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(from);
- if (![
- ...simplyTranslateNormalRedirectsChecks,
- ...simplyTranslateNormalCustomRedirects,
- ...simplyTranslateTorRedirectsChecks,
- ...simplyTranslateTorCustomRedirects,
- ...simplyTranslateI2pRedirectsChecks,
- ...simplyTranslateI2pCustomRedirects,
- ...simplyTranslateLokiRedirectsChecks,
- ...simplyTranslateLokiCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]
- else if (protocol == 'i2p') checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects];
- }
- await utils.copyCookie('simplyTranslate', from, checkedInstances, 'from_lang');
- await utils.copyCookie('simplyTranslate', from, checkedInstances, 'to_lang');
- await utils.copyCookie('simplyTranslate', from, checkedInstances, 'tts_enabled');
- await utils.copyCookie('simplyTranslate', from, checkedInstances, 'use_text_fields');
- }
- resolve(true);
- }
- )
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(from)
+ if (
+ ![
+ ...simplyTranslateNormalRedirectsChecks,
+ ...simplyTranslateNormalCustomRedirects,
+ ...simplyTranslateTorRedirectsChecks,
+ ...simplyTranslateTorCustomRedirects,
+ ...simplyTranslateI2pRedirectsChecks,
+ ...simplyTranslateI2pCustomRedirects,
+ ...simplyTranslateLokiRedirectsChecks,
+ ...simplyTranslateLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
+ }
+ await utils.copyCookie("simplyTranslate", from, checkedInstances, "from_lang")
+ await utils.copyCookie("simplyTranslate", from, checkedInstances, "to_lang")
+ await utils.copyCookie("simplyTranslate", from, checkedInstances, "tts_enabled")
+ await utils.copyCookie("simplyTranslate", from, checkedInstances, "use_text_fields")
+ }
+ resolve(true)
+ })
}
function pasteSimplyTranslateCookies() {
- return new Promise(async resolve => {
- await init();
- if (translateDisable || translateFrontend != 'simplyTranslate') { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]
- else if (protocol == 'i2p') checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'from_lang');
- utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'to_lang');
- utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'tts_enabled');
- utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'use_text_fields');
- resolve();
- }
- )
+ return new Promise(async resolve => {
+ await init()
+ if (translateDisable || translateFrontend != "simplyTranslate") {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "from_lang")
+ utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "to_lang")
+ utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "tts_enabled")
+ utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "use_text_fields")
+ resolve()
+ })
}
function redirect(url, disableOverride) {
- if (translateDisable && !disableOverride) return;
- if (!targets.some(rx => rx.test(url.href))) return;
+ if (translateDisable && !disableOverride) return
+ if (!targets.some(rx => rx.test(url.href))) return
- if (translateFrontend == 'simplyTranslate') {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
+ if (translateFrontend == "simplyTranslate") {
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
- const randomInstance = utils.getRandomInstance(instancesList)
- return `${randomInstance}/${url.search}`;
- }
- else if (translateFrontend == 'lingva') {
- let params_arr = url.search.split('&');
- params_arr[0] = params_arr[0].substring(1);
- let params = {};
- for (let i = 0; i < params_arr.length; i++) {
- let pair = params_arr[i].split('=');
- params[pair[0]] = pair[1];
- }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks,
- else if (protocol == 'i2p') instancesList = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks,
- if (protocol == 'tor') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}/${url.search}`
+ } else if (translateFrontend == "lingva") {
+ let params_arr = url.search.split("&")
+ params_arr[0] = params_arr[0].substring(1)
+ let params = {}
+ for (let i = 0; i < params_arr.length; i++) {
+ let pair = params_arr[i].split("=")
+ params[pair[0]] = pair[1]
+ }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...lingvaLokiCustomRedirects]
+ //...lingvaLokiRedirectsChecks,
+ else if (protocol == "i2p") instancesList = [...lingvaI2pCustomRedirects] //...lingvaI2pRedirectsChecks,
+ if (protocol == "tor") instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
- const randomInstance = utils.getRandomInstance(instancesList)
- if (params.sl && params.tl && params.text) {
- return `${randomInstance}/${params.sl}/${params.tl}/${params.text}`
- }
- return randomInstance;
- }
+ const randomInstance = utils.getRandomInstance(instancesList)
+ if (params.sl && params.tl && params.text) {
+ return `${randomInstance}/${params.sl}/${params.tl}/${params.text}`
+ }
+ return randomInstance
+ }
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (translateDisable && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...translateRedirects.simplyTranslate.normal,
- ...translateRedirects.simplyTranslate.tor,
- ...translateRedirects.simplyTranslate.i2p,
- ...translateRedirects.simplyTranslate.loki,
+ return new Promise(async resolve => {
+ await init()
+ if (translateDisable && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (
+ ![
+ ...translateRedirects.simplyTranslate.normal,
+ ...translateRedirects.simplyTranslate.tor,
+ ...translateRedirects.simplyTranslate.i2p,
+ ...translateRedirects.simplyTranslate.loki,
- ...simplyTranslateNormalCustomRedirects,
- ...simplyTranslateTorCustomRedirects,
- ...simplyTranslateI2pCustomRedirects,
- ...simplyTranslateLokiCustomRedirects,
+ ...simplyTranslateNormalCustomRedirects,
+ ...simplyTranslateTorCustomRedirects,
+ ...simplyTranslateI2pCustomRedirects,
+ ...simplyTranslateLokiCustomRedirects,
- ...translateRedirects.lingva.normal,
- ...translateRedirects.lingva.tor,
+ ...translateRedirects.lingva.normal,
+ ...translateRedirects.lingva.tor,
- ...lingvaNormalCustomRedirects,
- ...lingvaTorCustomRedirects,
- ...lingvaI2pCustomRedirects,
- ...lingvaLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+ ...lingvaNormalCustomRedirects,
+ ...lingvaTorCustomRedirects,
+ ...lingvaI2pCustomRedirects,
+ ...lingvaLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
- let instancesList;
+ let instancesList
- if (protocol == 'loki') {
- if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects];
- else if (translateFrontend == 'lingva') instancesList = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks,
- }
- else if (protocol == 'i2p') {
- if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects];
- else if (translateFrontend == 'lingva') instancesList = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks,
- }
- else if (protocol == 'tor') {
- if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
- else if (translateFrontend == 'lingva') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
- }
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects];
- else if (translateFrontend == 'lingva') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
- }
+ if (protocol == "loki") {
+ if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]
+ else if (translateFrontend == "lingva") instancesList = [...lingvaLokiCustomRedirects] //...lingvaLokiRedirectsChecks,
+ } else if (protocol == "i2p") {
+ if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects]
+ else if (translateFrontend == "lingva") instancesList = [...lingvaI2pCustomRedirects] //...lingvaI2pRedirectsChecks,
+ } else if (protocol == "tor") {
+ if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
+ else if (translateFrontend == "lingva") instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
+ else if (translateFrontend == "lingva") instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList',
- async r => {
- lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
- for (const instance of r.cloudflareBlackList) {
- const i = lingvaNormalRedirectsChecks.indexOf(instance);
- if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- translateDisable: false,
- translateFrontend: "simplyTranslate",
- translateRedirects: redirects,
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const i = lingvaNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ translateDisable: false,
+ translateFrontend: "simplyTranslate",
+ translateRedirects: redirects,
- simplyTranslateNormalRedirectsChecks: [...redirects.simplyTranslate.normal],
- simplyTranslateNormalCustomRedirects: [],
-
- simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor],
- simplyTranslateTorCustomRedirects: [],
-
- simplyTranslateI2pRedirectsChecks: [...redirects.simplyTranslate.i2p],
- simplyTranslateI2pCustomRedirects: [],
-
- simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki],
- simplyTranslateLokiCustomRedirects: [],
+ simplyTranslateNormalRedirectsChecks: [...redirects.simplyTranslate.normal],
+ simplyTranslateNormalCustomRedirects: [],
- lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks,
- lingvaNormalCustomRedirects: [],
+ simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor],
+ simplyTranslateTorCustomRedirects: [],
- lingvaTorRedirectsChecks: [...redirects.lingva.tor],
- lingvaTorCustomRedirects: [],
+ simplyTranslateI2pRedirectsChecks: [...redirects.simplyTranslate.i2p],
+ simplyTranslateI2pCustomRedirects: [],
- lingvaI2pRedirectsChecks: [...redirects.lingva.i2p],
- lingvaI2pCustomRedirects: [],
+ simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki],
+ simplyTranslateLokiCustomRedirects: [],
- lingvaLokiRedirectsChecks: [...redirects.lingva.loki],
- lingvaLokiCustomRedirects: []
- }, () => resolve())
- })
- })
- })
+ lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks,
+ lingvaNormalCustomRedirects: [],
+
+ lingvaTorRedirectsChecks: [...redirects.lingva.tor],
+ lingvaTorCustomRedirects: [],
+
+ lingvaI2pRedirectsChecks: [...redirects.lingva.i2p],
+ lingvaI2pCustomRedirects: [],
+
+ lingvaLokiRedirectsChecks: [...redirects.lingva.loki],
+ lingvaLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- copyPasteSimplyTranslateCookies,
- pasteSimplyTranslateCookies,
- copyPasteLingvaLocalStorage,
- pasteLingvaLocalStorage,
- setRedirects,
- redirect,
- initDefaults,
- switchInstance,
-};
+ copyPasteSimplyTranslateCookies,
+ pasteSimplyTranslateCookies,
+ copyPasteLingvaLocalStorage,
+ pasteLingvaLocalStorage,
+ setRedirects,
+ redirect,
+ initDefaults,
+ switchInstance,
+}
diff --git a/src/assets/javascripts/twitter.js b/src/assets/javascripts/twitter.js
index 0a851923..1ec4d8eb 100644
--- a/src/assets/javascripts/twitter.js
+++ b/src/assets/javascripts/twitter.js
@@ -1,13 +1,8 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}(www\.|mobile\.|)twitter\.com/,
- /^https?:\/{2}(pbs\.|video\.|)twimg\.com/,
- /^https?:\/{2}platform\.twitter\.com\/embed/,
- /^https?:\/{2}t\.co/
-];
+const targets = [/^https?:\/{2}(www\.|mobile\.|)twitter\.com/, /^https?:\/{2}(pbs\.|video\.|)twimg\.com/, /^https?:\/{2}platform\.twitter\.com\/embed/, /^https?:\/{2}t\.co/]
const frontends = new Array("nitter")
const protocols = new Array("normal", "tor", "i2p", "loki")
@@ -15,287 +10,295 @@ const protocols = new Array("normal", "tor", "i2p", "loki")
let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get(['cloudflareBlackList', 'authenticateBlackList'], r => {
- redirects.nitter = val;
- nitterNormalRedirectsChecks = [...redirects.nitter.normal];
- for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) {
- let i = nitterNormalRedirectsChecks.indexOf(instance);
- if (i > -1) nitterNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- twitterRedirects: redirects,
- nitterNormalRedirectsChecks,
- nitterTorRedirectsChecks: [...redirects.nitter.tor]
- })
- })
+ browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList"], r => {
+ redirects.nitter = val
+ nitterNormalRedirectsChecks = [...redirects.nitter.normal]
+ for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) {
+ let i = nitterNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) nitterNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set({
+ twitterRedirects: redirects,
+ nitterNormalRedirectsChecks,
+ nitterTorRedirectsChecks: [...redirects.nitter.tor],
+ })
+ })
}
-let
- disableTwitter,
- protocol,
- protocolFallback,
- twitterRedirects,
- twitterRedirectType,
- nitterNormalRedirectsChecks,
- nitterNormalCustomRedirects,
- nitterTorRedirectsChecks,
- nitterTorCustomRedirects,
- nitterI2pCustomRedirects,
- nitterLokiCustomRedirects;
+let disableTwitter,
+ protocol,
+ protocolFallback,
+ twitterRedirects,
+ twitterRedirectType,
+ nitterNormalRedirectsChecks,
+ nitterNormalCustomRedirects,
+ nitterTorRedirectsChecks,
+ nitterTorCustomRedirects,
+ nitterI2pCustomRedirects,
+ nitterLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableTwitter",
- "protocol",
- "protocolFallback",
- "twitterRedirects",
- "twitterRedirectType",
- "nitterNormalRedirectsChecks",
- "nitterNormalCustomRedirects",
- "nitterTorRedirectsChecks",
- "nitterTorCustomRedirects",
- "nitterI2pCustomRedirects",
- "nitterLokiCustomRedirects"
- ],
- r => {
- disableTwitter = r.disableTwitter;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- twitterRedirects = r.twitterRedirects;
- twitterRedirectType = r.twitterRedirectType;
- nitterNormalRedirectsChecks = r.nitterNormalRedirectsChecks;
- nitterNormalCustomRedirects = r.nitterNormalCustomRedirects;
- nitterTorRedirectsChecks = r.nitterTorRedirectsChecks;
- nitterTorCustomRedirects = r.nitterTorCustomRedirects;
- nitterI2pCustomRedirects = r.nitterI2pCustomRedirects;
- nitterLokiCustomRedirects = r.nitterLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableTwitter",
+ "protocol",
+ "protocolFallback",
+ "twitterRedirects",
+ "twitterRedirectType",
+ "nitterNormalRedirectsChecks",
+ "nitterNormalCustomRedirects",
+ "nitterTorRedirectsChecks",
+ "nitterTorCustomRedirects",
+ "nitterI2pCustomRedirects",
+ "nitterLokiCustomRedirects",
+ ],
+ r => {
+ disableTwitter = r.disableTwitter
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ twitterRedirects = r.twitterRedirects
+ twitterRedirectType = r.twitterRedirectType
+ nitterNormalRedirectsChecks = r.nitterNormalRedirectsChecks
+ nitterNormalCustomRedirects = r.nitterNormalCustomRedirects
+ nitterTorRedirectsChecks = r.nitterTorRedirectsChecks
+ nitterTorCustomRedirects = r.nitterTorCustomRedirects
+ nitterI2pCustomRedirects = r.nitterI2pCustomRedirects
+ nitterLokiCustomRedirects = r.nitterLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function all() {
- return [
- ...nitterNormalRedirectsChecks,
- ...nitterTorRedirectsChecks,
- ...nitterNormalCustomRedirects,
- ...nitterTorCustomRedirects,
- ...nitterI2pCustomRedirects,
- ...nitterLokiCustomRedirects
- ];
+ return [...nitterNormalRedirectsChecks, ...nitterTorRedirectsChecks, ...nitterNormalCustomRedirects, ...nitterTorCustomRedirects, ...nitterI2pCustomRedirects, ...nitterLokiCustomRedirects]
}
function redirect(url, type, initiator, disableOverride) {
- if (disableTwitter && !disableOverride) return;
- if (!targets.some(rx => rx.test(url.href))) return;
- if (url.pathname.split("/").includes("home")) return;
- if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
- if (twitterRedirectType == 'sub_frame' && type == "main_frame") return;
- if (twitterRedirectType == 'main_frame' && type != "main_frame") return;
+ if (disableTwitter && !disableOverride) return
+ if (!targets.some(rx => rx.test(url.href))) return
+ if (url.pathname.split("/").includes("home")) return
+ if (initiator && all().includes(initiator.origin)) return "BYPASSTAB"
+ if (twitterRedirectType == "sub_frame" && type == "main_frame") return
+ if (twitterRedirectType == "main_frame" && type != "main_frame") return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...nitterI2pCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...nitterLokiCustomRedirects];
- else if (protocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...nitterI2pCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...nitterLokiCustomRedirects]
+ else if (protocol == "tor") instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
- const randomInstance = utils.getRandomInstance(instancesList);
- // https://pbs.twimg.com/profile_images/648888480974508032/66_cUYfj_400x400.jpg
- if (url.host.split(".")[0] === "pbs" || url.host.split(".")[0] === "video") {
- const [, id, format, extra] = url.search.match(/(.*)\?format=(.*)&(.*)/);
- const query = encodeURIComponent(`${id}.${format}?${extra}`);
- return `${randomInstance}/pic${url.pathname}${query}`;
- }
- else if (url.pathname.split("/").includes("tweets"))
- return `${randomInstance}${url.pathname.replace("/tweets", "")}${url.search}`;
- else if (url.host == 't.co')
- return `${randomInstance}/t.co${url.pathname}`;
- else
- return `${randomInstance}${url.pathname}${url.search}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ // https://pbs.twimg.com/profile_images/648888480974508032/66_cUYfj_400x400.jpg
+ if (url.host.split(".")[0] === "pbs" || url.host.split(".")[0] === "video") {
+ const [, id, format, extra] = url.search.match(/(.*)\?format=(.*)&(.*)/)
+ const query = encodeURIComponent(`${id}.${format}?${extra}`)
+ return `${randomInstance}/pic${url.pathname}${query}`
+ } else if (url.pathname.split("/").includes("tweets")) return `${randomInstance}${url.pathname.replace("/tweets", "")}${url.search}`
+ else if (url.host == "t.co") return `${randomInstance}/t.co${url.pathname}`
+ else return `${randomInstance}${url.pathname}${url.search}`
}
function reverse(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- resolve(`https://twitter.com${url.pathname}${url.search}`);
- })
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ resolve(`https://twitter.com${url.pathname}${url.search}`)
+ })
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableTwitter && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...nitterI2pCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...nitterLokiCustomRedirects];
- else if (protocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
- }
+ return new Promise(async resolve => {
+ await init()
+ if (disableTwitter && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...nitterI2pCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...nitterLokiCustomRedirects]
+ else if (protocol == "tor") instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
+ }
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ let index = instancesList.indexOf(protocolHost)
+ if (index > -1) instancesList.splice(index, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function removeXFrameOptions(e) {
- if (e.type != 'sub_frame') return;
- let url = new URL(e.url);
- let protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) return;
- let isChanged = false;
- for (const i in e.responseHeaders) {
- if (e.responseHeaders[i].name == 'x-frame-options') {
- e.responseHeaders.splice(i, 1);
- isChanged = true;
- }
- else if (e.responseHeaders[i].name == 'content-security-policy') {
- e.responseHeaders.splice(i, 1);
- isChanged = true;
- }
- }
- if (isChanged) return { responseHeaders: e.responseHeaders };
+ if (e.type != "sub_frame") return
+ let url = new URL(e.url)
+ let protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) return
+ let isChanged = false
+ for (const i in e.responseHeaders) {
+ if (e.responseHeaders[i].name == "x-frame-options") {
+ e.responseHeaders.splice(i, 1)
+ isChanged = true
+ } else if (e.responseHeaders[i].name == "content-security-policy") {
+ e.responseHeaders.splice(i, 1)
+ isChanged = true
+ }
+ }
+ if (isChanged) return { responseHeaders: e.responseHeaders }
}
function initNitterCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(from);
- if (!all().includes(protocolHost)
- ) { resolve(); return; }
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...nitterI2pCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...nitterLokiCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
- }
- await utils.copyCookie('nitter', from, checkedInstances, 'theme');
- await utils.copyCookie('nitter', from, checkedInstances, 'infiniteScroll');
- await utils.copyCookie('nitter', from, checkedInstances, 'stickyProfile');
- await utils.copyCookie('nitter', from, checkedInstances, 'bidiSupport');
- await utils.copyCookie('nitter', from, checkedInstances, 'hideTweetStats');
- await utils.copyCookie('nitter', from, checkedInstances, 'hideBanner');
- await utils.copyCookie('nitter', from, checkedInstances, 'hidePins');
- await utils.copyCookie('nitter', from, checkedInstances, 'hideReplies');
- await utils.copyCookie('nitter', from, checkedInstances, 'squareAvatars');
- await utils.copyCookie('nitter', from, checkedInstances, 'mp4Playback');
- await utils.copyCookie('nitter', from, checkedInstances, 'hlsPlayback');
- await utils.copyCookie('nitter', from, checkedInstances, 'proxyVideos');
- await utils.copyCookie('nitter', from, checkedInstances, 'muteVideos');
- await utils.copyCookie('nitter', from, checkedInstances, 'autoplayGifs');
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(from)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...nitterI2pCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...nitterLokiCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
+ }
+ await utils.copyCookie("nitter", from, checkedInstances, "theme")
+ await utils.copyCookie("nitter", from, checkedInstances, "infiniteScroll")
+ await utils.copyCookie("nitter", from, checkedInstances, "stickyProfile")
+ await utils.copyCookie("nitter", from, checkedInstances, "bidiSupport")
+ await utils.copyCookie("nitter", from, checkedInstances, "hideTweetStats")
+ await utils.copyCookie("nitter", from, checkedInstances, "hideBanner")
+ await utils.copyCookie("nitter", from, checkedInstances, "hidePins")
+ await utils.copyCookie("nitter", from, checkedInstances, "hideReplies")
+ await utils.copyCookie("nitter", from, checkedInstances, "squareAvatars")
+ await utils.copyCookie("nitter", from, checkedInstances, "mp4Playback")
+ await utils.copyCookie("nitter", from, checkedInstances, "hlsPlayback")
+ await utils.copyCookie("nitter", from, checkedInstances, "proxyVideos")
+ await utils.copyCookie("nitter", from, checkedInstances, "muteVideos")
+ await utils.copyCookie("nitter", from, checkedInstances, "autoplayGifs")
- await utils.copyCookie('nitter', from, checkedInstances, 'replaceInstagram');
- await utils.copyCookie('nitter', from, checkedInstances, 'replaceReddit');
- await utils.copyCookie('nitter', from, checkedInstances, 'replaceTwitter');
- await utils.copyCookie('nitter', from, checkedInstances, 'replaceYouTube');
- }
- resolve(true);
- })
+ await utils.copyCookie("nitter", from, checkedInstances, "replaceInstagram")
+ await utils.copyCookie("nitter", from, checkedInstances, "replaceReddit")
+ await utils.copyCookie("nitter", from, checkedInstances, "replaceTwitter")
+ await utils.copyCookie("nitter", from, checkedInstances, "replaceYouTube")
+ }
+ resolve(true)
+ })
}
function pasteNitterCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableTwitter || protocol === undefined) { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...nitterI2pCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...nitterLokiCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('nitter', checkedInstances, 'theme');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'infiniteScroll');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'stickyProfile');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'bidiSupport');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'hideTweetStats');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'hideBanner');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'hidePins');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'hideReplies');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'squareAvatars');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'mp4Playback');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'hlsPlayback');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'proxyVideos');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'muteVideos');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'autoplayGifs');
+ return new Promise(async resolve => {
+ await init()
+ if (disableTwitter || protocol === undefined) {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...nitterI2pCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...nitterLokiCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("nitter", checkedInstances, "theme")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "infiniteScroll")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "stickyProfile")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "bidiSupport")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "hideTweetStats")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "hideBanner")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "hidePins")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "hideReplies")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "squareAvatars")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "mp4Playback")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "hlsPlayback")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "proxyVideos")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "muteVideos")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "autoplayGifs")
- utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceInstagram');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceReddit');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceTwitter');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceYouTube');
- resolve();
- }
- )
+ utils.getCookiesFromStorage("nitter", checkedInstances, "replaceInstagram")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "replaceReddit")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "replaceTwitter")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "replaceYouTube")
+ resolve()
+ })
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get(['cloudflareBlackList', 'authenticateBlackList'], async r => {
- nitterNormalRedirectsChecks = [...redirects.nitter.normal];
- for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) {
- let i = nitterNormalRedirectsChecks.indexOf(instance);
- if (i > -1) nitterNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableTwitter: false,
- twitterRedirects: redirects,
- twitterRedirectType: "both",
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList"], async r => {
+ nitterNormalRedirectsChecks = [...redirects.nitter.normal]
+ for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) {
+ let i = nitterNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) nitterNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableTwitter: false,
+ twitterRedirects: redirects,
+ twitterRedirectType: "both",
- nitterNormalRedirectsChecks: nitterNormalRedirectsChecks,
- nitterNormalCustomRedirects: [],
+ nitterNormalRedirectsChecks: nitterNormalRedirectsChecks,
+ nitterNormalCustomRedirects: [],
- nitterTorRedirectsChecks: [...redirects.nitter.tor],
- nitterTorCustomRedirects: [],
+ nitterTorRedirectsChecks: [...redirects.nitter.tor],
+ nitterTorCustomRedirects: [],
- nitterI2pRedirectsChecks: [...redirects.nitter.i2p],
- nitterI2pCustomRedirects: [],
+ nitterI2pRedirectsChecks: [...redirects.nitter.i2p],
+ nitterI2pCustomRedirects: [],
- nitterLokiRedirectsChecks: [...redirects.nitter.loki],
- nitterLokiCustomRedirects: []
- }, () => resolve());
- })
- })
- })
+ nitterLokiRedirectsChecks: [...redirects.nitter.loki],
+ nitterLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
- redirect,
- switchInstance,
- reverse,
- removeXFrameOptions,
- initNitterCookies,
- pasteNitterCookies,
- initDefaults,
-};
+ setRedirects,
+ redirect,
+ switchInstance,
+ reverse,
+ removeXFrameOptions,
+ initNitterCookies,
+ pasteNitterCookies,
+ initDefaults,
+}
diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js
index f9225729..7a97dcdb 100644
--- a/src/assets/javascripts/utils.js
+++ b/src/assets/javascripts/utils.js
@@ -1,193 +1,207 @@
-window.browser = window.browser || window.chrome;
-import twitterHelper from "./twitter.js";
-import youtubeHelper from "./youtube/youtube.js";
-import instagramHelper from "./instagram.js";
-import mediumHelper from "./medium.js";
-import redditHelper from "./reddit.js";
-import searchHelper from "./search.js";
-import translateHelper from "./translate/translate.js";
-import wikipediaHelper from "./wikipedia.js";
-import peertubeHelper from "./peertube.js";
-import lbryHelper from "./lbry.js";
-import sendTargetsHelper from "./sendTargets.js";
-import tiktokHelper from "./tiktok.js";
+window.browser = window.browser || window.chrome
+import twitterHelper from "./twitter.js"
+import youtubeHelper from "./youtube/youtube.js"
+import instagramHelper from "./instagram.js"
+import mediumHelper from "./medium.js"
+import redditHelper from "./reddit.js"
+import searchHelper from "./search.js"
+import translateHelper from "./translate/translate.js"
+import wikipediaHelper from "./wikipedia.js"
+import peertubeHelper from "./peertube.js"
+import lbryHelper from "./lbry.js"
+import sendTargetsHelper from "./sendTargets.js"
+import tiktokHelper from "./tiktok.js"
import quoraHelper from "./quora.js"
-import libremdbHelper from "./imdb.js";
-import imgurHelper from "./imgur.js";
-import reutersHelper from './reuters.js';
-import localise from './localise.js'
+import libremdbHelper from "./imdb.js"
+import imgurHelper from "./imgur.js"
+import reutersHelper from "./reuters.js"
+import youtubeMusicHelper from "./youtubeMusic.js"
+import mapsHelper from "./maps.js"
+import localise from "./localise.js"
function getRandomInstance(instances) {
- return instances[~~(instances.length * Math.random())];
+ return instances[~~(instances.length * Math.random())]
}
-let cloudflareBlackList = [];
-let authenticateBlackList = [];
+let cloudflareBlackList = []
+let authenticateBlackList = []
async function initcloudflareBlackList() {
- return new Promise(resolve => {
- fetch('/instances/blacklist.json').then(response => response.text()).then(data => {
- cloudflareBlackList = JSON.parse(data).cloudflare;
- authenticateBlackList = JSON.parse(data).authenticate;
- resolve();
- })
- });
+ return new Promise(resolve => {
+ fetch("/instances/blacklist.json")
+ .then(response => response.text())
+ .then(data => {
+ cloudflareBlackList = JSON.parse(data).cloudflare
+ authenticateBlackList = JSON.parse(data).authenticate
+ resolve()
+ })
+ })
}
function updateInstances() {
- return new Promise(async resolve => {
- let http = new XMLHttpRequest();
- http.open('GET', 'https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json', false);
- http.send(null);
- if (http.status === 200) {
- await initcloudflareBlackList();
- const instances = JSON.parse(http.responseText);
+ return new Promise(async resolve => {
+ let http = new XMLHttpRequest()
+ http.open("GET", "https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json", false)
+ http.send(null)
+ if (http.status === 200) {
+ await initcloudflareBlackList()
+ const instances = JSON.parse(http.responseText)
- youtubeHelper.setRedirects({ 'invidious': instances.invidious, 'piped': instances.piped, 'pipedMaterial': instances.pipedMaterial })
- twitterHelper.setRedirects(instances.nitter);
- instagramHelper.setRedirects(instances.bibliogram);
- redditHelper.setRedirects({ 'libreddit': instances.libreddit, 'teddit': instances.teddit });
- translateHelper.setRedirects({ "simplyTranslate": instances.simplyTranslate, "lingva": instances.lingva });
- searchHelper.setRedirects({ 'searx': instances.searx, 'searxng': instances.searxng, 'whoogle': instances.whoogle, 'librex': instances.librex });
- wikipediaHelper.setRedirects(instances.wikiless);
- mediumHelper.setRedirects(instances.scribe);
- quoraHelper.setRedirects(instances.quetre);
- libremdbHelper.setRedirects(instances.libremdb);
- sendTargetsHelper.setRedirects(instances.send);
- tiktokHelper.setRedirects(instances.proxiTok);
- lbryHelper.setRedirects(instances.librarian);
- reutersHelper.setRedirects(instances.neuters);
+ youtubeHelper.setRedirects({
+ invidious: instances.invidious,
+ piped: instances.piped,
+ pipedMaterial: instances.pipedMaterial,
+ })
+ twitterHelper.setRedirects(instances.nitter)
+ instagramHelper.setRedirects(instances.bibliogram)
+ redditHelper.setRedirects({
+ libreddit: instances.libreddit,
+ teddit: instances.teddit,
+ })
+ translateHelper.setRedirects({
+ simplyTranslate: instances.simplyTranslate,
+ lingva: instances.lingva,
+ })
+ searchHelper.setRedirects({
+ searx: instances.searx,
+ searxng: instances.searxng,
+ whoogle: instances.whoogle,
+ librex: instances.librex,
+ })
+ wikipediaHelper.setRedirects(instances.wikiless)
+ mediumHelper.setRedirects(instances.scribe)
+ quoraHelper.setRedirects(instances.quetre)
+ libremdbHelper.setRedirects(instances.libremdb)
+ sendTargetsHelper.setRedirects(instances.send)
+ tiktokHelper.setRedirects(instances.proxiTok)
+ lbryHelper.setRedirects(instances.librarian)
+ reutersHelper.setRedirects(instances.neuters)
+ youtubeMusicHelper.setRedirects({
+ beatbump: instances.beatbump,
+ hyperpipe: instances.hyperpipe,
+ })
+ mapsHelper.setRedirects(instances.facil)
+ peertubeHelper.setRedirects(instances.simpleertube)
- console.info("Successfully updated Instances");
- resolve(true); return;
- }
- resolve()
- })
+ console.info("Successfully updated Instances")
+ resolve(true)
+ return
+ }
+ resolve()
+ })
}
function protocolHost(url) {
- if (url.username && url.password) return `${url.protocol}//${url.username}:${url.password}@${url.host}`;
- return `${url.protocol}//${url.host}`;
+ if (url.username && url.password) return `${url.protocol}//${url.username}:${url.password}@${url.host}`
+ return `${url.protocol}//${url.host}`
}
async function processDefaultCustomInstances(target, name, protocol, document) {
+ function camelCase(str) {
+ return str.charAt(0).toUpperCase() + str.slice(1)
+ }
+ let latencyKey = `${name}Latency`
+ let instancesLatency
+ let nameProtocolElement = document.getElementById(name).getElementsByClassName(protocol)[0]
- function camelCase(str) {
- return str.charAt(0).toUpperCase() + str.slice(1);
- }
- let latencyKey = `${name}Latency`;
- let instancesLatency;
- let nameProtocolElement = document.getElementById(name).getElementsByClassName(protocol)[0];
+ let nameCustomInstances = []
+ let nameCheckListElement = nameProtocolElement.getElementsByClassName("checklist")[0]
- let nameCustomInstances = [];
- let nameCheckListElement = nameProtocolElement.getElementsByClassName('checklist')[0];
+ await initcloudflareBlackList()
- await initcloudflareBlackList();
+ let nameDefaultRedirects
- let nameDefaultRedirects;
+ let redirectsChecks = `${name}${camelCase(protocol)}RedirectsChecks`
+ let customRedirects = `${name}${camelCase(protocol)}CustomRedirects`
+ let redirectsKey = `${target}Redirects`
- let redirectsChecks = `${name}${camelCase(protocol)}RedirectsChecks`;
- let customRedirects = `${name}${camelCase(protocol)}CustomRedirects`;
- let redirectsKey = `${target}Redirects`;
+ let redirects
- let redirects;
+ async function getFromStorage() {
+ return new Promise(async resolve =>
+ browser.storage.local.get([redirectsChecks, customRedirects, redirectsKey, latencyKey], r => {
+ nameDefaultRedirects = r[redirectsChecks]
+ nameCustomInstances = r[customRedirects]
+ instancesLatency = r[latencyKey] ?? []
+ redirects = r[redirectsKey]
+ resolve()
+ })
+ )
+ }
- async function getFromStorage() {
- return new Promise(async resolve =>
- browser.storage.local.get(
- [
- redirectsChecks,
- customRedirects,
- redirectsKey,
- latencyKey
- ],
- r => {
- nameDefaultRedirects = r[redirectsChecks];
- nameCustomInstances = r[customRedirects];
- instancesLatency = r[latencyKey] ?? [];
- redirects = r[redirectsKey];
- resolve();
- }
- )
- )
- }
-
- await getFromStorage();
- if (nameCustomInstances === undefined) console.log(customRedirects);
+ await getFromStorage()
+ if (nameCustomInstances === undefined) console.log(customRedirects)
- function calcNameCheckBoxes() {
- let isTrue = true;
- for (const item of redirects[name][protocol]) {
- if (!nameDefaultRedirects.includes(item)) {
- isTrue = false;
- break;
- }
- }
- for (const element of nameCheckListElement.getElementsByTagName('input')) {
- element.checked = nameDefaultRedirects.includes(element.className)
- }
- if (nameDefaultRedirects.length == 0) isTrue = false;
- nameProtocolElement.getElementsByClassName('toggle-all')[0].checked = isTrue;
- }
- nameCheckListElement.innerHTML =
- [
- `<div>
+ function calcNameCheckBoxes() {
+ let isTrue = true
+ for (const item of redirects[name][protocol]) {
+ if (nameDefaultRedirects === undefined) console.log(name + protocol + " is undefined")
+ if (!nameDefaultRedirects.includes(item)) {
+ isTrue = false
+ break
+ }
+ }
+ for (const element of nameCheckListElement.getElementsByTagName("input")) {
+ element.checked = nameDefaultRedirects.includes(element.className)
+ }
+ if (nameDefaultRedirects.length == 0) isTrue = false
+ nameProtocolElement.getElementsByClassName("toggle-all")[0].checked = isTrue
+ }
+ nameCheckListElement.innerHTML = [
+ `<div>
<x data-localise="__MSG_toggleAll__">Toggle All</x>
<input type="checkbox" class="toggle-all"/>
</div>`,
- ...redirects[name][protocol].map(
- x => {
- const cloudflare = cloudflareBlackList.includes(x) ? ' <span style="color:red;">cloudflare</span>' : '';
- const authenticate = authenticateBlackList.includes(x) ? ' <span style="color:orange;">authenticate</span>' : '';
+ ...redirects[name][protocol].map(x => {
+ const cloudflare = cloudflareBlackList.includes(x) ? ' <span style="color:red;">cloudflare</span>' : ""
+ const authenticate = authenticateBlackList.includes(x) ? ' <span style="color:orange;">authenticate</span>' : ""
- let ms = instancesLatency[x];
- let latencyColor = (ms <= 1000 ? "green" : ms <= 2000 ? "orange" : "red");
- let latencyLimit;
- if (ms == 5000) latencyLimit = '5000ms+';
- else if (ms > 5000) latencyLimit = `ERROR: ${ms - 5000}`;
- else latencyLimit = ms + 'ms';
+ let ms = instancesLatency[x]
+ let latencyColor = ms <= 1000 ? "green" : ms <= 2000 ? "orange" : "red"
+ let latencyLimit
+ if (ms == 5000) latencyLimit = "5000ms+"
+ else if (ms > 5000) latencyLimit = `ERROR: ${ms - 5000}`
+ else latencyLimit = ms + "ms"
- const latency = x in instancesLatency ? '<span style="color:' + latencyColor + ';">' + latencyLimit + '</span>' : '';
+ const latency = x in instancesLatency ? '<span style="color:' + latencyColor + ';">' + latencyLimit + "</span>" : ""
- let warnings = [cloudflare, authenticate, latency].join(' ');
- return `<div>
+ let warnings = [cloudflare, authenticate, latency].join(" ")
+ return `<div>
<x><a href="${x}" target="_blank">${x}</a>${warnings}</x>
<input type="checkbox" class="${x}"/>
- </div>`;
- }
- ),
- ].join('\n<hr>\n');
+ </div>`
+ }),
+ ].join("\n<hr>\n")
- localise.localisePage();
+ localise.localisePage()
- calcNameCheckBoxes();
- nameProtocolElement.getElementsByClassName('toggle-all')[0].addEventListener("change", async event => {
- if (event.target.checked)
- nameDefaultRedirects = [...redirects[name][protocol]];
- else
- nameDefaultRedirects = [];
+ calcNameCheckBoxes()
+ nameProtocolElement.getElementsByClassName("toggle-all")[0].addEventListener("change", async event => {
+ if (event.target.checked) nameDefaultRedirects = [...redirects[name][protocol]]
+ else nameDefaultRedirects = []
- browser.storage.local.set({ [redirectsChecks]: nameDefaultRedirects });
- calcNameCheckBoxes();
- });
+ browser.storage.local.set({ [redirectsChecks]: nameDefaultRedirects })
+ calcNameCheckBoxes()
+ })
- for (let element of nameCheckListElement.getElementsByTagName('input')) {
- if (element.className != 'toggle-all')
- nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", async event => {
- if (event.target.checked)
- nameDefaultRedirects.push(element.className)
- else {
- let index = nameDefaultRedirects.indexOf(element.className);
- if (index > -1) nameDefaultRedirects.splice(index, 1);
- }
- browser.storage.local.set({ [redirectsChecks]: nameDefaultRedirects });
- calcNameCheckBoxes();
- });
- }
+ for (let element of nameCheckListElement.getElementsByTagName("input")) {
+ if (element.className != "toggle-all")
+ nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", async event => {
+ if (event.target.checked) nameDefaultRedirects.push(element.className)
+ else {
+ let index = nameDefaultRedirects.indexOf(element.className)
+ if (index > -1) nameDefaultRedirects.splice(index, 1)
+ }
+ browser.storage.local.set({
+ [redirectsChecks]: nameDefaultRedirects,
+ })
+ calcNameCheckBoxes()
+ })
+ }
- function calcNameCustomInstances() {
- nameProtocolElement.getElementsByClassName('custom-checklist')[0].innerHTML =
- nameCustomInstances.map(
- x => `<div>
+ function calcNameCustomInstances() {
+ nameProtocolElement.getElementsByClassName("custom-checklist")[0].innerHTML = nameCustomInstances
+ .map(
+ x => `<div>
${x}
<button class="add clear-${x}">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
@@ -196,286 +210,294 @@ async function processDefaultCustomInstances(target, name, protocol, document) {
</button>
</div>
<hr>`
- ).join('\n');
+ )
+ .join("\n")
- for (const item of nameCustomInstances) {
- nameProtocolElement.getElementsByClassName(`clear-${item}`)[0].addEventListener("click", async () => {
- let index = nameCustomInstances.indexOf(item);
- if (index > -1) nameCustomInstances.splice(index, 1);
- browser.storage.local.set({ [customRedirects]: nameCustomInstances });
- calcNameCustomInstances();
- });
- }
- }
- calcNameCustomInstances();
- nameProtocolElement.getElementsByClassName('custom-instance-form')[0].addEventListener("submit", async event => {
- event.preventDefault();
- let nameCustomInstanceInput = nameProtocolElement.getElementsByClassName('custom-instance')[0];
- let url = new URL(nameCustomInstanceInput.value);
- let protocolHostVar = protocolHost(url);
- if (nameCustomInstanceInput.validity.valid && !redirects[name][protocol].includes(protocolHostVar)) {
- if (!nameCustomInstances.includes(protocolHostVar)) {
- nameCustomInstances.push(protocolHostVar)
- browser.storage.local.set({ [customRedirects]: nameCustomInstances });
- nameCustomInstanceInput.value = '';
- }
- calcNameCustomInstances();
- }
- })
+ for (const item of nameCustomInstances) {
+ nameProtocolElement.getElementsByClassName(`clear-${item}`)[0].addEventListener("click", async () => {
+ let index = nameCustomInstances.indexOf(item)
+ if (index > -1) nameCustomInstances.splice(index, 1)
+ browser.storage.local.set({ [customRedirects]: nameCustomInstances })
+ calcNameCustomInstances()
+ })
+ }
+ }
+ calcNameCustomInstances()
+ nameProtocolElement.getElementsByClassName("custom-instance-form")[0].addEventListener("submit", async event => {
+ event.preventDefault()
+ let nameCustomInstanceInput = nameProtocolElement.getElementsByClassName("custom-instance")[0]
+ let url = new URL(nameCustomInstanceInput.value)
+ let protocolHostVar = protocolHost(url)
+ if (nameCustomInstanceInput.validity.valid && !redirects[name][protocol].includes(protocolHostVar)) {
+ if (!nameCustomInstances.includes(protocolHostVar)) {
+ nameCustomInstances.push(protocolHostVar)
+ browser.storage.local.set({ [customRedirects]: nameCustomInstances })
+ nameCustomInstanceInput.value = ""
+ }
+ calcNameCustomInstances()
+ }
+ })
}
async function ping(href) {
- return new Promise(async resolve => {
- let http = new XMLHttpRequest();
- http.open("GET", `${href}?_=${new Date().getTime()}`, /*async*/true);
- http.timeout = 5000;
- let started = new Date().getTime();
- http.onreadystatechange = () => {
- if (http.readyState == 2) {
- if (http.status == 200) {
- let ended = new Date().getTime();
- http.abort();
- resolve(ended - started);
- }
- else
- resolve(5000 + http.status)
- }
- };
- http.ontimeout = () => resolve(5000)
- http.onerror = () => resolve()
- try {
- http.send(null);
- } catch (exception) {
- resolve()
- }
- });
+ return new Promise(async resolve => {
+ let http = new XMLHttpRequest()
+ http.open("GET", `${href}?_=${new Date().getTime()}`, /*async*/ true)
+ http.timeout = 5000
+ let started = new Date().getTime()
+ http.onreadystatechange = () => {
+ if (http.readyState == 2) {
+ if (http.status == 200) {
+ let ended = new Date().getTime()
+ http.abort()
+ resolve(ended - started)
+ } else resolve(5000 + http.status)
+ }
+ }
+ http.ontimeout = () => resolve(5000)
+ http.onerror = () => resolve()
+ try {
+ http.send(null)
+ } catch (exception) {
+ resolve()
+ }
+ })
}
async function testLatency(element, instances) {
- return new Promise(async resolve => {
- let myList = {};
- for (const href of instances) await ping(href).then(time => {
- if (time) {
- myList[href] = time;
- let color;
- if (time <= 1000) color = "green"
- else if (time <= 2000) color = "orange"
- else color = "red";
+ return new Promise(async resolve => {
+ let myList = {}
+ for (const href of instances)
+ await ping(href).then(time => {
+ if (time) {
+ myList[href] = time
+ let color
+ if (time <= 1000) color = "green"
+ else if (time <= 2000) color = "orange"
+ else color = "red"
- let text;
- if (time == 5000) text = '5000ms+'
- else if (time > 5000) text = `ERROR: ${time - 5000}`;
- else text = `${time}ms`;
- element.innerHTML = `${href}:&nbsp;<span style="color:${color};">${text}</span>`;
- }
- })
- resolve(myList);
- })
+ let text
+ if (time == 5000) text = "5000ms+"
+ else if (time > 5000) text = `ERROR: ${time - 5000}`
+ else text = `${time}ms`
+ element.innerHTML = `${href}:&nbsp;<span style="color:${color};">${text}</span>`
+ }
+ })
+ resolve(myList)
+ })
}
function copyCookie(frontend, targetUrl, urls, name) {
- return new Promise(resolve => {
- browser.storage.local.get('firstPartyIsolate', r => {
- let query;
- if (!r.firstPartyIsolate) query = { url: protocolHost(targetUrl), name: name }
- else query = { url: protocolHost(targetUrl), name: name, firstPartyDomain: null }
- browser.cookies.getAll(
- query,
- async cookies => {
- for (const cookie of cookies)
- if (cookie.name == name) {
- for (const url of urls) {
- const setQuery =
- r.firstPartyIsolate ?
- {
- url: url, name: name, value: cookie.value, secure: true,
- firstPartyDomain: new URL(url).hostname,
- }
- :
- {
- url: url, name: name, value: cookie.value, secure: true,
- expirationDate: cookie.expirationDate,
- };
- browser.cookies.set(setQuery, () =>
- browser.storage.local.set({ [`${frontend}_${name}`]: cookie }, () => resolve())
- );
- }
- break;
- }
- resolve();
- }
- );
- })
- })
+ return new Promise(resolve => {
+ browser.storage.local.get("firstPartyIsolate", r => {
+ let query
+ if (!r.firstPartyIsolate) query = { url: protocolHost(targetUrl), name: name }
+ else
+ query = {
+ url: protocolHost(targetUrl),
+ name: name,
+ firstPartyDomain: null,
+ }
+ browser.cookies.getAll(query, async cookies => {
+ for (const cookie of cookies)
+ if (cookie.name == name) {
+ for (const url of urls) {
+ const setQuery = r.firstPartyIsolate
+ ? {
+ url: url,
+ name: name,
+ value: cookie.value,
+ secure: true,
+ firstPartyDomain: new URL(url).hostname,
+ }
+ : {
+ url: url,
+ name: name,
+ value: cookie.value,
+ secure: true,
+ expirationDate: cookie.expirationDate,
+ }
+ browser.cookies.set(setQuery, () => browser.storage.local.set({ [`${frontend}_${name}`]: cookie }, () => resolve()))
+ }
+ break
+ }
+ resolve()
+ })
+ })
+ })
}
function getCookiesFromStorage(frontend, urls, name) {
- let key = `${frontend}_${name}`;
- browser.storage.local.get([key, 'firstPartyIsolate'], r => {
- const cookie = r[key];
- if (cookie === undefined) return;
- for (const url of urls) {
- let query =
- r.firstPartyIsolate ?
- {
- url: url, name: cookie.name, value: cookie.value, secure: true,
- expirationDate: null,
- firstPartyDomain: new URL(url).hostname,
- }
- :
- {
- url: url, name: cookie.name, value: cookie.value, secure: true,
- expirationDate: cookie.expirationDate,
- };
- browser.cookies.set(query)
- }
- })
+ let key = `${frontend}_${name}`
+ browser.storage.local.get([key, "firstPartyIsolate"], r => {
+ const cookie = r[key]
+ if (cookie === undefined) return
+ for (const url of urls) {
+ let query = r.firstPartyIsolate
+ ? {
+ url: url,
+ name: cookie.name,
+ value: cookie.value,
+ secure: true,
+ expirationDate: null,
+ firstPartyDomain: new URL(url).hostname,
+ }
+ : {
+ url: url,
+ name: cookie.name,
+ value: cookie.value,
+ secure: true,
+ expirationDate: cookie.expirationDate,
+ }
+ browser.cookies.set(query)
+ }
+ })
}
function copyRaw(test, copyRawElement) {
- return new Promise(resolve => {
- browser.tabs.query(
- { active: true, currentWindow: true }, async tabs => {
- let currTab = tabs[0];
- if (currTab) {
- let url;
- try { url = new URL(currTab.url); }
- catch { resolve(); return; }
+ return new Promise(resolve => {
+ browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
+ let currTab = tabs[0]
+ if (currTab) {
+ let url
+ try {
+ url = new URL(currTab.url)
+ } catch {
+ resolve()
+ return
+ }
- let newUrl = await youtubeHelper.reverse(url);
- if (!newUrl) newUrl = await twitterHelper.reverse(url);
- if (!newUrl) newUrl = await instagramHelper.reverse(url);
- if (!newUrl) newUrl = await tiktokHelper.reverse(url);
- if (!newUrl) newUrl = await quoraHelper.reverse(url);
- if (!newUrl) newUrl = await libremdbHelper.reverse(url);
- if (!newUrl) newUrl = await imgurHelper.reverse(url);
+ let newUrl = await youtubeHelper.reverse(url)
+ if (!newUrl) newUrl = await twitterHelper.reverse(url)
+ if (!newUrl) newUrl = await instagramHelper.reverse(url)
+ if (!newUrl) newUrl = await tiktokHelper.reverse(url)
+ if (!newUrl) newUrl = await quoraHelper.reverse(url)
+ if (!newUrl) newUrl = await libremdbHelper.reverse(url)
+ if (!newUrl) newUrl = await imgurHelper.reverse(url)
- if (newUrl) {
- resolve(newUrl);
- if (test) return;
- navigator.clipboard.writeText(newUrl);
- if (copyRawElement) {
- const textElement = copyRawElement.getElementsByTagName('h4')[0]
- const oldHtml = textElement.innerHTML;
- textElement.innerHTML = browser.i18n.getMessage('copied');
- setTimeout(() => textElement.innerHTML = oldHtml, 1000);
- }
- }
- }
- resolve()
- }
- )
- })
+ if (newUrl) {
+ resolve(newUrl)
+ if (test) return
+ navigator.clipboard.writeText(newUrl)
+ if (copyRawElement) {
+ const textElement = copyRawElement.getElementsByTagName("h4")[0]
+ const oldHtml = textElement.innerHTML
+ textElement.innerHTML = browser.i18n.getMessage("copied")
+ setTimeout(() => (textElement.innerHTML = oldHtml), 1000)
+ }
+ }
+ }
+ resolve()
+ })
+ })
}
function unify(test) {
- return new Promise(resolve => {
- browser.tabs.query(
- { active: true, currentWindow: true },
- async tabs => {
- let currTab = tabs[0]
- if (currTab) {
- let url;
- try { url = new URL(currTab.url); }
- catch { resolve(); return; }
- if (currTab.incognito) { resolve(); return; }
+ return new Promise(resolve => {
+ browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
+ let currTab = tabs[0]
+ if (currTab) {
+ let url
+ try {
+ url = new URL(currTab.url)
+ } catch {
+ resolve()
+ return
+ }
+ if (currTab.incognito) {
+ resolve()
+ return
+ }
- let result = await youtubeHelper.copyPasteInvidiousCookies(test, url);
- if (!result) result = await youtubeHelper.copyPastePipedLocalStorage(test, url, currTab.id);
- if (!result) result = await youtubeHelper.copyPastePipedMaterialLocalStorage(test, url, currTab.id);
+ let result = await youtubeHelper.copyPasteInvidiousCookies(test, url)
+ if (!result) result = await youtubeHelper.copyPastePipedLocalStorage(test, url, currTab.id)
+ if (!result) result = await youtubeHelper.copyPastePipedMaterialLocalStorage(test, url, currTab.id)
- if (!result) result = await twitterHelper.initNitterCookies(test, url);
+ if (!result) result = await twitterHelper.initNitterCookies(test, url)
+ if (!result) result = await redditHelper.initLibredditCookies(test, url)
+ if (!result) result = await redditHelper.initTedditCookies(test, url)
+ if (!result) result = await searchHelper.initSearxCookies(test, url)
+ if (!result) result = await searchHelper.initSearxngCookies(test, url)
+ if (!result) result = await searchHelper.initLibrexCookies(test, url)
+ if (!result) result = await tiktokHelper.initProxiTokCookies(test, url)
+ if (!result) result = await wikipediaHelper.initWikilessCookies(test, url)
+ if (!result) result = await translateHelper.copyPasteSimplyTranslateCookies(test, url)
+ if (!result) result = await translateHelper.copyPasteLingvaLocalStorage(test, url)
- if (!result) result = await redditHelper.initLibredditCookies(test, url);
- if (!result) result = await redditHelper.initTedditCookies(test, url);
-
- if (!result) result = await searchHelper.initSearxCookies(test, url);
- if (!result) result = await searchHelper.initSearxngCookies(test, url);
- if (!result) result = await searchHelper.initLibrexCookies(test, url);
-
- if (!result) result = await tiktokHelper.initProxiTokCookies(test, url);
-
- if (!result) result = await wikipediaHelper.initWikilessCookies(test, url);
-
- if (!result) result = await translateHelper.copyPasteSimplyTranslateCookies(test, url);
- if (!result) result = await translateHelper.copyPasteLingvaLocalStorage(test, url);
-
- resolve(result);
- }
- }
- )
- })
+ resolve(result)
+ }
+ })
+ })
}
function switchInstance(test) {
- return new Promise(resolve => {
- browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
- let currTab = tabs[0];
- if (currTab) {
- let url;
- try { url = new URL(currTab.url); }
- catch { resolve(); return };
- let newUrl = await youtubeHelper.switchInstance(url);
- if (!newUrl) newUrl = await twitterHelper.switchInstance(url);
- if (!newUrl) newUrl = await instagramHelper.switchInstance(url);
- if (!newUrl) newUrl = await redditHelper.switchInstance(url);
- if (!newUrl) newUrl = await searchHelper.switchInstance(url);
- if (!newUrl) newUrl = await translateHelper.switchInstance(url);
- if (!newUrl) newUrl = await mediumHelper.switchInstance(url);
- if (!newUrl) newUrl = await quoraHelper.switchInstance(url);
- if (!newUrl) newUrl = await libremdbHelper.switchInstance(url);
- if (!newUrl) newUrl = await tiktokHelper.switchInstance(url);
- if (!newUrl) newUrl = await sendTargetsHelper.switchInstance(url);
- if (!newUrl) newUrl = await peertubeHelper.switchInstance(url);
- if (!newUrl) newUrl = await lbryHelper.switchInstance(url);
- if (!newUrl) newUrl = await imgurHelper.switchInstance(url);
- if (!newUrl) newUrl = await wikipediaHelper.switchInstance(url);
+ return new Promise(resolve => {
+ browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
+ let currTab = tabs[0]
+ if (currTab) {
+ let url
+ try {
+ url = new URL(currTab.url)
+ } catch {
+ resolve()
+ return
+ }
+ let newUrl = await youtubeHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await twitterHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await instagramHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await redditHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await searchHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await translateHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await mediumHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await quoraHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await libremdbHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await tiktokHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await sendTargetsHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await peertubeHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await lbryHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await imgurHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await wikipediaHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await youtubeMusicHelper.switchInstance(url, true)
- if (newUrl) {
- if (!test)
- browser.tabs.update({ url: newUrl });
- resolve(true)
- } else resolve()
- }
- })
- })
+ if (newUrl) {
+ if (!test) browser.tabs.update({ url: newUrl })
+ resolve(true)
+ } else resolve()
+ }
+ })
+ })
}
function latency(name, frontend, document, location) {
- let latencyElement = document.getElementById(`latency-${frontend}`);
- let latencyLabel = document.getElementById(`latency-${frontend}-label`);
- latencyElement.addEventListener("click",
- async () => {
- let reloadWindow = () => location.reload();
- latencyElement.addEventListener("click", reloadWindow);
- let key = `${name}Redirects`
- browser.storage.local.get(
- key,
- r => {
- let redirects = r[key];
- const oldHtml = latencyLabel.innerHTML;
- latencyLabel.innerHTML = '...';
- testLatency(latencyLabel, redirects[frontend].normal).then(r => {
- browser.storage.local.set({ [`${frontend}Latency`]: r });
- latencyLabel.innerHTML = oldHtml;
- processDefaultCustomInstances(name, frontend, 'normal', document);
- latencyElement.removeEventListener("click", reloadWindow)
- });
- }
- )
- }
- );
+ let latencyElement = document.getElementById(`latency-${frontend}`)
+ let latencyLabel = document.getElementById(`latency-${frontend}-label`)
+ latencyElement.addEventListener("click", async () => {
+ let reloadWindow = () => location.reload()
+ latencyElement.addEventListener("click", reloadWindow)
+ let key = `${name}Redirects`
+ browser.storage.local.get(key, r => {
+ let redirects = r[key]
+ const oldHtml = latencyLabel.innerHTML
+ latencyLabel.innerHTML = "..."
+ testLatency(latencyLabel, redirects[frontend].normal).then(r => {
+ browser.storage.local.set({ [`${frontend}Latency`]: r })
+ latencyLabel.innerHTML = oldHtml
+ processDefaultCustomInstances(name, frontend, "normal", document)
+ latencyElement.removeEventListener("click", reloadWindow)
+ })
+ })
+ })
}
export default {
- getRandomInstance,
- updateInstances,
- protocolHost,
- processDefaultCustomInstances,
- latency,
- copyCookie,
- getCookiesFromStorage,
- switchInstance,
- copyRaw,
- unify,
+ getRandomInstance,
+ updateInstances,
+ protocolHost,
+ processDefaultCustomInstances,
+ latency,
+ copyCookie,
+ getCookiesFromStorage,
+ switchInstance,
+ copyRaw,
+ unify,
}
diff --git a/src/assets/javascripts/wikipedia.js b/src/assets/javascripts/wikipedia.js
index d2ba7de8..cf19b208 100644
--- a/src/assets/javascripts/wikipedia.js
+++ b/src/assets/javascripts/wikipedia.js
@@ -1,248 +1,262 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = /^https?:\/{2}(([a-z]{1,}\.){0,})wikipedia\.org/
+const targets = /^https?:\/{2}([a-z]+\.)*wikipedia\.org/
const frontends = new Array("wikiless")
const protocols = new Array("normal", "tor", "i2p", "loki")
-let redirects = {};
+let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.wikiless = val;
- wikilessNormalRedirectsChecks = [...redirects.wikiless.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = wikilessNormalRedirectsChecks.indexOf(instance);
- if (a > -1) wikilessNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- wikipediaRedirects: redirects,
- wikilessNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.wikiless = val
+ wikilessNormalRedirectsChecks = [...redirects.wikiless.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = wikilessNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) wikilessNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ wikipediaRedirects: redirects,
+ wikilessNormalRedirectsChecks,
+ })
+ })
}
-let
- disableWikipedia,
- wikipediaRedirects,
- protocol,
- protocolFallback,
- wikilessNormalRedirectsChecks,
- wikilessTorRedirectsChecks,
- wikilessI2pRedirectsChecks,
- wikilessNormalCustomRedirects,
- wikilessTorCustomRedirects,
- wikilessI2pCustomRedirects,
- wikilessLokiCustomRedirects;
+let disableWikipedia,
+ wikipediaRedirects,
+ protocol,
+ protocolFallback,
+ wikilessNormalRedirectsChecks,
+ wikilessTorRedirectsChecks,
+ wikilessI2pRedirectsChecks,
+ wikilessNormalCustomRedirects,
+ wikilessTorCustomRedirects,
+ wikilessI2pCustomRedirects,
+ wikilessLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableWikipedia",
- "wikipediaRedirects",
- "protocol",
- "protocolFallback",
- "wikilessNormalRedirectsChecks",
- "wikilessTorRedirectsChecks",
- "wikilessI2pRedirectsChecks",
- "wikilessNormalCustomRedirects",
- "wikilessTorCustomRedirects",
- "wikilessI2pCustomRedirects",
- "wikilessLokiCustomRedirects"
- ],
- r => {
- disableWikipedia = r.disableWikipedia;
- wikipediaRedirects = r.wikipediaRedirects;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- wikilessNormalRedirectsChecks = r.wikilessNormalRedirectsChecks;
- wikilessTorRedirectsChecks = r.wikilessTorRedirectsChecks;
- wikilessI2pRedirectsChecks = r.wikilessI2pRedirectsChecks;
- wikilessNormalCustomRedirects = r.wikilessNormalCustomRedirects;
- wikilessTorCustomRedirects = r.wikilessTorCustomRedirects;
- wikilessI2pCustomRedirects = r.wikilessI2pCustomRedirects;
- wikilessLokiCustomRedirects = r.wikilessLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableWikipedia",
+ "wikipediaRedirects",
+ "protocol",
+ "protocolFallback",
+ "wikilessNormalRedirectsChecks",
+ "wikilessTorRedirectsChecks",
+ "wikilessI2pRedirectsChecks",
+ "wikilessNormalCustomRedirects",
+ "wikilessTorCustomRedirects",
+ "wikilessI2pCustomRedirects",
+ "wikilessLokiCustomRedirects",
+ ],
+ r => {
+ disableWikipedia = r.disableWikipedia
+ wikipediaRedirects = r.wikipediaRedirects
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ wikilessNormalRedirectsChecks = r.wikilessNormalRedirectsChecks
+ wikilessTorRedirectsChecks = r.wikilessTorRedirectsChecks
+ wikilessI2pRedirectsChecks = r.wikilessI2pRedirectsChecks
+ wikilessNormalCustomRedirects = r.wikilessNormalCustomRedirects
+ wikilessTorCustomRedirects = r.wikilessTorCustomRedirects
+ wikilessI2pCustomRedirects = r.wikilessI2pCustomRedirects
+ wikilessLokiCustomRedirects = r.wikilessLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function initWikilessCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(from);
- const all = [
- ...wikilessNormalRedirectsChecks,
- ...wikilessNormalCustomRedirects,
- ...wikilessTorRedirectsChecks,
- ...wikilessTorCustomRedirects,
- ...wikilessI2pRedirectsChecks,
- ...wikilessI2pCustomRedirects,
- ...wikilessLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(from)
+ const all = [
+ ...wikilessNormalRedirectsChecks,
+ ...wikilessNormalCustomRedirects,
+ ...wikilessTorRedirectsChecks,
+ ...wikilessTorCustomRedirects,
+ ...wikilessI2pRedirectsChecks,
+ ...wikilessI2pCustomRedirects,
+ ...wikilessLokiCustomRedirects,
+ ]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...wikilessLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects];
- }
- await utils.copyCookie('wikiless', from, checkedInstances, 'theme');
- await utils.copyCookie('wikiless', from, checkedInstances, 'default_lang');
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...wikilessLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]
+ }
+ await utils.copyCookie("wikiless", from, checkedInstances, "theme")
+ await utils.copyCookie("wikiless", from, checkedInstances, "default_lang")
+ }
+ resolve(true)
+ })
}
function pasteWikilessCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableWikipedia || protocol === undefined) { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...wikilessLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('wikiless', checkedInstances, 'theme');
- utils.getCookiesFromStorage('wikiless', checkedInstances, 'default_lang');
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableWikipedia || protocol === undefined) {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...wikilessLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("wikiless", checkedInstances, "theme")
+ utils.getCookiesFromStorage("wikiless", checkedInstances, "default_lang")
+ resolve()
+ })
}
function redirect(url, disableOverride) {
- if (disableWikipedia && !disableOverride) return;
- if (!targets.test(url.href)) return;
+ if (disableWikipedia && !disableOverride) return
+ if (!targets.test(url.href)) return
- let GETArguments = [];
- if (url.search.length > 0) {
- let search = url.search.substring(1); //get rid of '?'
- let argstrings = search.split("&");
- for (let i = 0; i < argstrings.length; i++) {
- let args = argstrings[i].split("=");
- GETArguments.push([args[0], args[1]]);
- }
- }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...wikilessLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
- const randomInstance = utils.getRandomInstance(instancesList)
+ let GETArguments = []
+ if (url.search.length > 0) {
+ let search = url.search.substring(1) //get rid of '?'
+ let argstrings = search.split("&")
+ for (let i = 0; i < argstrings.length; i++) {
+ let args = argstrings[i].split("=")
+ GETArguments.push([args[0], args[1]])
+ }
+ }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...wikilessLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
+ const randomInstance = utils.getRandomInstance(instancesList)
- let link = `${randomInstance}${url.pathname}`;
- let urlSplit = url.host.split(".");
- if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") {
- if (urlSplit[0] == "m")
- GETArguments.push(["mobileaction", "toggle_view_mobile"]);
- else
- GETArguments.push(["lang", urlSplit[0]]);
- if (urlSplit[1] == "m")
- GETArguments.push(["mobileaction", "toggle_view_mobile"]);
- // wikiless doesn't have mobile view support yet
- }
- for (let i = 0; i < GETArguments.length; i++)
- link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1];
- return link;
+ let link = `${randomInstance}${url.pathname}`
+ let urlSplit = url.host.split(".")
+ if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") {
+ if (urlSplit[0] == "m") GETArguments.push(["mobileaction", "toggle_view_mobile"])
+ else GETArguments.push(["lang", urlSplit[0]])
+ if (urlSplit[1] == "m") GETArguments.push(["mobileaction", "toggle_view_mobile"])
+ // wikiless doesn't have mobile view support yet
+ }
+ for (let i = 0; i < GETArguments.length; i++) link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1]
+ return link
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableWikipedia && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- const wikipediaList = [
- ...wikipediaRedirects.wikiless.normal,
- ...wikipediaRedirects.wikiless.tor,
- ...wikipediaRedirects.wikiless.i2p,
+ return new Promise(async resolve => {
+ await init()
+ if (disableWikipedia && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ const wikipediaList = [
+ ...wikipediaRedirects.wikiless.normal,
+ ...wikipediaRedirects.wikiless.tor,
+ ...wikipediaRedirects.wikiless.i2p,
- ...wikilessNormalCustomRedirects,
- ...wikilessTorCustomRedirects,
- ...wikilessI2pCustomRedirects,
- ...wikilessLokiCustomRedirects
- ];
- if (!wikipediaList.includes(protocolHost)) { resolve(); return; }
+ ...wikilessNormalCustomRedirects,
+ ...wikilessTorCustomRedirects,
+ ...wikilessI2pCustomRedirects,
+ ...wikilessLokiCustomRedirects,
+ ]
+ if (!wikipediaList.includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...wikilessLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...wikilessLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]
+ }
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ let index = instancesList.indexOf(protocolHost)
+ if (index > -1) instancesList.splice(index, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList', async r => {
- wikilessNormalRedirectsChecks = [...redirects.wikiless.normal];
- for (const instance of r.cloudflareBlackList) {
- let i = wikilessNormalRedirectsChecks.indexOf(instance);
- if (i > -1) wikilessNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableWikipedia: true,
- wikipediaRedirects: redirects,
-
- wikilessNormalRedirectsChecks: wikilessNormalRedirectsChecks,
- wikilessNormalCustomRedirects: [],
-
- wikilessTorRedirectsChecks: [...redirects.wikiless.tor],
- wikilessTorCustomRedirects: [],
-
- wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p],
- wikilessI2pCustomRedirects: [],
-
- wikilessLokiRedirectsChecks: [...redirects.wikiless.loki],
- wikilessLokiCustomRedirects: []
-
- }, () => resolve());
- })
- })
- })
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ wikilessNormalRedirectsChecks = [...redirects.wikiless.normal]
+ for (const instance of r.cloudflareBlackList) {
+ let i = wikilessNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) wikilessNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableWikipedia: true,
+ wikipediaRedirects: redirects,
+
+ wikilessNormalRedirectsChecks: wikilessNormalRedirectsChecks,
+ wikilessNormalCustomRedirects: [],
+
+ wikilessTorRedirectsChecks: [...redirects.wikiless.tor],
+ wikilessTorCustomRedirects: [],
+
+ wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p],
+ wikilessI2pCustomRedirects: [],
+
+ wikilessLokiRedirectsChecks: [...redirects.wikiless.loki],
+ wikilessLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
+ setRedirects,
- initWikilessCookies,
- pasteWikilessCookies,
+ initWikilessCookies,
+ pasteWikilessCookies,
- redirect,
- initDefaults,
- switchInstance,
-};
+ redirect,
+ initDefaults,
+ switchInstance,
+}
diff --git a/src/assets/javascripts/youtube/get_pipedMaterial_preferences.js b/src/assets/javascripts/youtube/get_pipedMaterial_preferences.js
index 9d052f62..df79e13c 100644
--- a/src/assets/javascripts/youtube/get_pipedMaterial_preferences.js
+++ b/src/assets/javascripts/youtube/get_pipedMaterial_preferences.js
@@ -1,7 +1,5 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-browser.storage.local.set(
- {
- 'pipedMaterial_PREFERENCES': localStorage.getItem("PREFERENCES")
- }
-) \ No newline at end of file
+browser.storage.local.set({
+ pipedMaterial_PREFERENCES: localStorage.getItem("PREFERENCES"),
+})
diff --git a/src/assets/javascripts/youtube/get_piped_preferences.js b/src/assets/javascripts/youtube/get_piped_preferences.js
index 417d64df..388ecd19 100644
--- a/src/assets/javascripts/youtube/get_piped_preferences.js
+++ b/src/assets/javascripts/youtube/get_piped_preferences.js
@@ -1,24 +1,22 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-browser.storage.local.set(
- {
- 'piped_bufferGoal': localStorage.getItem("bufferGoal"),
- 'piped_comments': localStorage.getItem("comments"),
- 'piped_disableLBRY': localStorage.getItem("disableLBRY"),
- 'piped_enabledCodecs': localStorage.getItem("enabledCodecs"),
- 'piped_hl': localStorage.getItem("hl"),
- 'piped_homepage': localStorage.getItem("homepage"),
- 'piped_instance': localStorage.getItem("instance"),
- 'piped_listen': localStorage.getItem("listen"),
- 'piped_minimizeDescription': localStorage.getItem("minimizeDescription"),
- 'piped_playerAutoPlay': localStorage.getItem("playerAutoPlay"),
- 'piped_proxyLBRY': localStorage.getItem("proxyLBRY"),
- 'piped_quality': localStorage.getItem("quality"),
- 'piped_region': localStorage.getItem("region"),
- 'piped_selectedSkip': localStorage.getItem("selectedSkip"),
- 'piped_sponsorblock': localStorage.getItem("sponsorblock"),
- 'piped_theme': localStorage.getItem("theme"),
- 'piped_volume': localStorage.getItem("volume"),
- 'piped_watchHistory': localStorage.getItem("watchHistory"),
- }
-)
+browser.storage.local.set({
+ piped_bufferGoal: localStorage.getItem("bufferGoal"),
+ piped_comments: localStorage.getItem("comments"),
+ piped_disableLBRY: localStorage.getItem("disableLBRY"),
+ piped_enabledCodecs: localStorage.getItem("enabledCodecs"),
+ piped_hl: localStorage.getItem("hl"),
+ piped_homepage: localStorage.getItem("homepage"),
+ piped_instance: localStorage.getItem("instance"),
+ piped_listen: localStorage.getItem("listen"),
+ piped_minimizeDescription: localStorage.getItem("minimizeDescription"),
+ piped_playerAutoPlay: localStorage.getItem("playerAutoPlay"),
+ piped_proxyLBRY: localStorage.getItem("proxyLBRY"),
+ piped_quality: localStorage.getItem("quality"),
+ piped_region: localStorage.getItem("region"),
+ piped_selectedSkip: localStorage.getItem("selectedSkip"),
+ piped_sponsorblock: localStorage.getItem("sponsorblock"),
+ piped_theme: localStorage.getItem("theme"),
+ piped_volume: localStorage.getItem("volume"),
+ piped_watchHistory: localStorage.getItem("watchHistory"),
+})
diff --git a/src/assets/javascripts/youtube/set_pipedMaterial_preferences.js b/src/assets/javascripts/youtube/set_pipedMaterial_preferences.js
index 7415255a..59d6dcc4 100644
--- a/src/assets/javascripts/youtube/set_pipedMaterial_preferences.js
+++ b/src/assets/javascripts/youtube/set_pipedMaterial_preferences.js
@@ -1,10 +1,7 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-browser.storage.local.get(
- "pipedMaterial_PREFERENCES",
- r => {
- if (r.pipedMaterial_PREFERENCES !== undefined) localStorage.setItem("PREFERENCES", r.pipedMaterial_PREFERENCES)
+browser.storage.local.get("pipedMaterial_PREFERENCES", r => {
+ if (r.pipedMaterial_PREFERENCES !== undefined) localStorage.setItem("PREFERENCES", r.pipedMaterial_PREFERENCES)
- window.close();
- }
-) \ No newline at end of file
+ window.close()
+})
diff --git a/src/assets/javascripts/youtube/set_piped_preferences.js b/src/assets/javascripts/youtube/set_piped_preferences.js
index 346de5c2..374f2d61 100644
--- a/src/assets/javascripts/youtube/set_piped_preferences.js
+++ b/src/assets/javascripts/youtube/set_piped_preferences.js
@@ -1,45 +1,45 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
browser.storage.local.get(
- [
- "piped_bufferGoal",
- "piped_comments",
- "piped_disableLBRY",
- "piped_enabledCodecs",
- "piped_homepage",
- "piped_instance",
- "piped_listen",
- "piped_minimizeDescription",
- "piped_playerAutoPlay",
- "piped_proxyLBRY",
- "piped_quality",
- "piped_region",
- "piped_selectedSkip",
- "piped_sponsorblock",
- "piped_theme",
- "piped_volume",
- "piped_watchHistory",
- ],
- r => {
- if (r.piped_bufferGoal !== undefined) localStorage.setItem("bufferGoal", r.piped_bufferGoal);
- if (r.piped_comments !== undefined) localStorage.setItem("comments", r.piped_comments);
- if (r.piped_disableLBRY !== undefined) localStorage.setItem("disableLBRY", r.piped_disableLBRY);
- if (r.piped_hl !== undefined) localStorage.setItem("hl", r.piped_hl);
- if (r.piped_enabledCodecs !== undefined) localStorage.setItem("enabledCodecs", r.piped_enabledCodecs);
- if (r.piped_homepage !== undefined) localStorage.setItem("homepage", r.piped_homepage);
- if (r.piped_instance !== undefined) localStorage.setItem("instance", r.piped_instance);
- if (r.piped_listen !== undefined) localStorage.setItem("listen", r.piped_listen);
- if (r.piped_minimizeDescription !== undefined) localStorage.setItem("minimizeDescription", r.piped_minimizeDescription);
- if (r.piped_playerAutoPlay !== undefined) localStorage.setItem("playerAutoPlay", r.piped_playerAutoPlay);
- if (r.piped_proxyLBRY !== undefined) localStorage.setItem("proxyLBRY", r.piped_proxyLBRY);
- if (r.piped_quality !== undefined) localStorage.setItem("quality", r.piped_quality);
- if (r.piped_region !== undefined) localStorage.setItem("region", r.piped_region);
- if (r.piped_selectedSkip !== undefined) localStorage.setItem("selectedSkip", r.piped_selectedSkip);
- if (r.piped_sponsorblock !== undefined) localStorage.setItem("sponsorblock", r.piped_sponsorblock);
- if (r.piped_theme !== undefined) localStorage.setItem("theme", r.piped_theme);
- if (r.piped_volume !== undefined) localStorage.setItem("volume", r.piped_volume);
- if (r.piped_watchHistory !== undefined) localStorage.setItem("watchHistory", r.piped_watchHistory);
+ [
+ "piped_bufferGoal",
+ "piped_comments",
+ "piped_disableLBRY",
+ "piped_enabledCodecs",
+ "piped_homepage",
+ "piped_instance",
+ "piped_listen",
+ "piped_minimizeDescription",
+ "piped_playerAutoPlay",
+ "piped_proxyLBRY",
+ "piped_quality",
+ "piped_region",
+ "piped_selectedSkip",
+ "piped_sponsorblock",
+ "piped_theme",
+ "piped_volume",
+ "piped_watchHistory",
+ ],
+ r => {
+ if (r.piped_bufferGoal !== undefined) localStorage.setItem("bufferGoal", r.piped_bufferGoal)
+ if (r.piped_comments !== undefined) localStorage.setItem("comments", r.piped_comments)
+ if (r.piped_disableLBRY !== undefined) localStorage.setItem("disableLBRY", r.piped_disableLBRY)
+ if (r.piped_hl !== undefined) localStorage.setItem("hl", r.piped_hl)
+ if (r.piped_enabledCodecs !== undefined) localStorage.setItem("enabledCodecs", r.piped_enabledCodecs)
+ if (r.piped_homepage !== undefined) localStorage.setItem("homepage", r.piped_homepage)
+ if (r.piped_instance !== undefined) localStorage.setItem("instance", r.piped_instance)
+ if (r.piped_listen !== undefined) localStorage.setItem("listen", r.piped_listen)
+ if (r.piped_minimizeDescription !== undefined) localStorage.setItem("minimizeDescription", r.piped_minimizeDescription)
+ if (r.piped_playerAutoPlay !== undefined) localStorage.setItem("playerAutoPlay", r.piped_playerAutoPlay)
+ if (r.piped_proxyLBRY !== undefined) localStorage.setItem("proxyLBRY", r.piped_proxyLBRY)
+ if (r.piped_quality !== undefined) localStorage.setItem("quality", r.piped_quality)
+ if (r.piped_region !== undefined) localStorage.setItem("region", r.piped_region)
+ if (r.piped_selectedSkip !== undefined) localStorage.setItem("selectedSkip", r.piped_selectedSkip)
+ if (r.piped_sponsorblock !== undefined) localStorage.setItem("sponsorblock", r.piped_sponsorblock)
+ if (r.piped_theme !== undefined) localStorage.setItem("theme", r.piped_theme)
+ if (r.piped_volume !== undefined) localStorage.setItem("volume", r.piped_volume)
+ if (r.piped_watchHistory !== undefined) localStorage.setItem("watchHistory", r.piped_watchHistory)
- window.close();
- }
-) \ No newline at end of file
+ window.close()
+ }
+)
diff --git a/src/assets/javascripts/youtube/youtube.js b/src/assets/javascripts/youtube/youtube.js
index 669b26d5..e8a77ff6 100644
--- a/src/assets/javascripts/youtube/youtube.js
+++ b/src/assets/javascripts/youtube/youtube.js
@@ -1,600 +1,856 @@
-"use strict";
+"use strict"
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from '../utils.js'
+import utils from "../utils.js"
const targets = [
- /^https?:\/{2}(www\.|music\.|m\.|)youtube\.com(\/.*|$)/,
+ /^https?:\/{2}(www\.|music\.|m\.|)youtube\.com(\/.*|$)/,
- /^https?:\/{2}img\.youtube\.com\/vi\/.*\/..*/, // https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api
- /^https?:\/{2}(i|s)\.ytimg\.com\/vi\/.*\/..*/,
+ /^https?:\/{2}img\.youtube\.com\/vi\/.*\/..*/, // https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api
+ /^https?:\/{2}(i|s)\.ytimg\.com\/vi\/.*\/..*/,
- /^https?:\/{2}(www\.|music\.|)youtube\.com\/watch\?v\=..*/,
+ /^https?:\/{2}(www\.|music\.|)youtube\.com\/watch\?v\=..*/,
- /^https?:\/{2}youtu\.be\/..*/,
+ /^https?:\/{2}youtu\.be\/..*/,
- /^https?:\/{2}(www\.|)(youtube|youtube-nocookie)\.com\/embed\/..*/,
-];
+ /^https?:\/{2}(www\.|)(youtube|youtube-nocookie)\.com\/embed\/..*/,
+]
-const frontends = new Array("invidious", "piped", "pipedMaterial")
+const frontends = new Array("invidious", "piped", "pipedMaterial", "cloudtube")
const protocols = new Array("normal", "tor", "i2p", "loki")
-let redirects = {};
+let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.invidious = val.invidious;
- redirects.piped = val.piped;
- redirects.pipedMaterial = val.pipedMaterial
- invidiousNormalRedirectsChecks = [...redirects.invidious.normal];
- pipedNormalRedirectsChecks = [...redirects.piped.normal];
- pipedMaterialNormalRedirectsChecks = [...redirects.pipedMaterial.normal]
- for (const instance of r.cloudflareBlackList) {
- const a = invidiousNormalRedirectsChecks.indexOf(instance);
- if (a > -1) invidiousNormalRedirectsChecks.splice(a, 1);
+ browser.storage.local.get("cloudflareBlackList", r => {
+ for (let i = 0; i < frontends.length; i++) {
+ redirects.frontends = val.frontends
+ }
+ invidiousNormalRedirectsChecks = [...redirects.invidious.normal]
+ pipedNormalRedirectsChecks = [...redirects.piped.normal]
+ pipedMaterialNormalRedirectsChecks = [...redirects.pipedMaterial.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = invidiousNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) invidiousNormalRedirectsChecks.splice(a, 1)
- const b = pipedNormalRedirectsChecks.indexOf(instance);
- if (b > -1) pipedNormalRedirectsChecks.splice(b, 1);
+ const b = pipedNormalRedirectsChecks.indexOf(instance)
+ if (b > -1) pipedNormalRedirectsChecks.splice(b, 1)
- const c = pipedMaterialNormalRedirectsChecks.indexOf(instance);
- if (c > -1) pipedMaterialNormalRedirectsChecks.splice(c, 1);
- }
- browser.storage.local.set({
- youtubeRedirects: redirects,
- invidiousNormalRedirectsChecks,
- invidiousTorRedirectsChecks: redirects.invidious.tor,
- pipedNormalRedirectsChecks,
- pipedTorRedirectsChecks: redirects.piped.tor,
- pipedMaterialNormalRedirectsChecks,
- // pipedMaterialTorRedirectsChecks: redirects.pipedMaterial.tor
- })
- })
+ const c = pipedMaterialNormalRedirectsChecks.indexOf(instance)
+ if (c > -1) pipedMaterialNormalRedirectsChecks.splice(c, 1)
+
+ const d = cloudtubeNormalRedirectsChecks.indexOf(instance)
+ if (c > -1) cloudtubeNormalRedirectsChecks.splice(d, 1)
+ }
+ browser.storage.local.set({
+ youtubeRedirects: redirects,
+ invidiousNormalRedirectsChecks,
+ pipedNormalRedirectsChecks,
+ pipedMaterialNormalRedirectsChecks,
+ cloudtubeNormalRedirectsChecks,
+ })
+ })
}
-let
- disableYoutube,
- onlyEmbeddedVideo,
- youtubeFrontend,
- protocol,
- protocolFallback,
- youtubeEmbedFrontend,
- youtubeRedirects,
- invidiousNormalRedirectsChecks,
- invidiousNormalCustomRedirects,
- invidiousTorRedirectsChecks,
- invidiousTorCustomRedirects,
- invidiousI2pCustomRedirects,
- invidiousLokiCustomRedirects,
- pipedNormalRedirectsChecks,
- pipedNormalCustomRedirects,
- pipedTorRedirectsChecks,
- pipedTorCustomRedirects,
- pipedI2pCustomRedirects,
- pipedLokiCustomRedirects,
- pipedMaterialNormalRedirectsChecks,
- pipedMaterialNormalCustomRedirects,
- pipedMaterialTorRedirectsChecks,
- pipedMaterialTorCustomRedirects,
- pipedMaterialI2pCustomRedirects,
- pipedMaterialLokiCustomRedirects;
+let disableYoutube,
+ onlyEmbeddedVideo,
+ youtubeFrontend,
+ protocol,
+ protocolFallback,
+ youtubeEmbedFrontend,
+ youtubeRedirects,
+ invidiousNormalRedirectsChecks,
+ invidiousNormalCustomRedirects,
+ invidiousTorRedirectsChecks,
+ invidiousTorCustomRedirects,
+ invidiousI2pRedirectsChecks,
+ invidiousI2pCustomRedirects,
+ invidiousLokiRedirectsChecks,
+ invidiousLokiCustomRedirects,
+ pipedNormalRedirectsChecks,
+ pipedNormalCustomRedirects,
+ pipedTorRedirectsChecks,
+ pipedTorCustomRedirects,
+ pipedI2pRedirectsChecks,
+ pipedI2pCustomRedirects,
+ pipedLokiRedirectsChecks,
+ pipedLokiCustomRedirects,
+ pipedMaterialNormalRedirectsChecks,
+ pipedMaterialNormalCustomRedirects,
+ pipedMaterialTorRedirectsChecks,
+ pipedMaterialTorCustomRedirects,
+ pipedMaterialI2pRedirectsChecks,
+ pipedMaterialI2pCustomRedirects,
+ pipedMaterialLokiRedirectsChecks,
+ pipedMaterialLokiCustomRedirects,
+ cloudtubeNormalRedirectsChecks,
+ cloudtubeNormalCustomRedirects,
+ cloudtubeTorRedirectsChecks,
+ cloudtubeTorCustomRedirects,
+ cloudtubeI2pRedirectsChecks,
+ cloudtubeI2pCustomRedirects,
+ cloudtubeLokiRedirectsChecks,
+ cloudtubeLokiCustomRedirects
function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableYoutube",
- "onlyEmbeddedVideo",
- "youtubeFrontend",
- "protocol",
- "protocolFallback",
- "youtubeEmbedFrontend",
- "youtubeRedirects",
- "invidiousNormalRedirectsChecks",
- "invidiousNormalCustomRedirects",
- "invidiousTorRedirectsChecks",
- "invidiousTorCustomRedirects",
- "invidiousI2pCustomRedirects",
- "invidiousLokiCustomRedirects",
- "pipedNormalRedirectsChecks",
- "pipedNormalCustomRedirects",
- "pipedTorRedirectsChecks",
- "pipedTorCustomRedirects",
- "pipedI2pCustomRedirects",
- "pipedLokiCustomRedirects",
- "pipedMaterialNormalRedirectsChecks",
- "pipedMaterialNormalCustomRedirects",
- "pipedMaterialTorRedirectsChecks",
- "pipedMaterialTorCustomRedirects",
- "pipedMaterialI2pCustomRedirects",
- "pipedMaterialLokiCustomRedirects"
- ],
- r => {
- disableYoutube = r.disableYoutube;
- onlyEmbeddedVideo = r.onlyEmbeddedVideo;
- youtubeFrontend = r.youtubeFrontend;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- youtubeEmbedFrontend = r.youtubeEmbedFrontend;
- youtubeRedirects = r.youtubeRedirects;
- invidiousNormalRedirectsChecks = r.invidiousNormalRedirectsChecks;
- invidiousNormalCustomRedirects = r.invidiousNormalCustomRedirects;
- invidiousTorRedirectsChecks = r.invidiousTorRedirectsChecks;
- invidiousTorCustomRedirects = r.invidiousTorCustomRedirects;
- invidiousI2pCustomRedirects = r.invidiousI2pCustomRedirects;
- invidiousLokiCustomRedirects = r.invidiousLokiCustomRedirects;
- pipedNormalRedirectsChecks = r.pipedNormalRedirectsChecks;
- pipedNormalCustomRedirects = r.pipedNormalCustomRedirects;
- pipedTorRedirectsChecks = r.pipedTorRedirectsChecks;
- pipedTorCustomRedirects = r.pipedTorCustomRedirects;
- pipedI2pCustomRedirects = r.pipedI2pCustomRedirects;
- pipedLokiCustomRedirects = r.pipedLokiCustomRedirects;
- pipedMaterialNormalRedirectsChecks = r.pipedMaterialNormalRedirectsChecks;
- pipedMaterialNormalCustomRedirects = r.pipedMaterialNormalCustomRedirects;
- pipedMaterialTorRedirectsChecks = r.pipedMaterialTorRedirectsChecks;
- pipedMaterialTorCustomRedirects = r.pipedMaterialTorCustomRedirects;
- pipedMaterialI2pCustomRedirects - r.pipedMaterialI2pCustomRedirects;
- pipedMaterialLokiCustomRedirects = r.pipedMaterialLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "disableYoutube",
+ "onlyEmbeddedVideo",
+ "youtubeFrontend",
+ "protocol",
+ "protocolFallback",
+ "youtubeEmbedFrontend",
+ "youtubeRedirects",
+ "invidiousNormalRedirectsChecks",
+ "invidiousNormalCustomRedirects",
+ "invidiousTorRedirectsChecks",
+ "invidiousTorCustomRedirects",
+ "invidiousI2pRedirectsChecks",
+ "invidiousI2pCustomRedirects",
+ "invidiousLokiRedirectsChecks",
+ "invidiousLokiCustomRedirects",
+ "pipedNormalRedirectsChecks",
+ "pipedNormalCustomRedirects",
+ "pipedTorRedirectsChecks",
+ "pipedTorCustomRedirects",
+ "pipedI2pRedirectsChecks",
+ "pipedI2pCustomRedirects",
+ "pipedLokiRedirectsChecks",
+ "pipedLokiCustomRedirects",
+ "pipedMaterialNormalRedirectsChecks",
+ "pipedMaterialNormalCustomRedirects",
+ "pipedMaterialTorRedirectsChecks",
+ "pipedMaterialTorCustomRedirects",
+ "pipedMaterialI2pRedirectsChecks",
+ "pipedMaterialI2pCustomRedirects",
+ "pipedMaterialLokiRedirectsChecks",
+ "pipedMaterialLokiCustomRedirects",
+ "cloudtubeNormalRedirectsChecks",
+ "cloudtubeNormalCustomRedirects",
+ "cloudtubeTorRedirectsChecks",
+ "cloudtubeTorCustomRedirects",
+ "cloudtubeI2pRedirectsChecks",
+ "cloudtubeI2pCustomRedirects",
+ "cloudtubeLokiRedirectsChecks",
+ "cloudtubeLokiCustomRedirects",
+ ],
+ r => {
+ disableYoutube = r.disableYoutube
+ onlyEmbeddedVideo = r.onlyEmbeddedVideo
+ youtubeFrontend = r.youtubeFrontend
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ youtubeEmbedFrontend = r.youtubeEmbedFrontend
+ youtubeRedirects = r.youtubeRedirects
+ invidiousNormalRedirectsChecks = r.invidiousNormalRedirectsChecks
+ invidiousNormalCustomRedirects = r.invidiousNormalCustomRedirects
+ invidiousTorRedirectsChecks = r.invidiousTorRedirectsChecks
+ invidiousTorCustomRedirects = r.invidiousTorCustomRedirects
+ invidiousI2pRedirectsChecks = r.invidiousI2pRedirectsChecks
+ invidiousI2pCustomRedirects = r.invidiousI2pCustomRedirects
+ invidiousLokiRedirectsChecks = r.invidiousLokiRedirectsChecks
+ invidiousLokiCustomRedirects = r.invidiousLokiCustomRedirects
+ pipedNormalRedirectsChecks = r.pipedNormalRedirectsChecks
+ pipedNormalCustomRedirects = r.pipedNormalCustomRedirects
+ pipedTorRedirectsChecks = r.pipedTorRedirectsChecks
+ pipedTorCustomRedirects = r.pipedTorCustomRedirects
+ pipedI2pRedirectsChecks = r.pipedI2pRedirectsChecks
+ pipedI2pCustomRedirects = r.pipedI2pCustomRedirects
+ pipedLokiRedirectsChecks = r.pipedLokiRedirectsChecks
+ pipedLokiCustomRedirects = r.pipedLokiCustomRedirects
+ pipedMaterialNormalRedirectsChecks = r.pipedMaterialNormalRedirectsChecks
+ pipedMaterialNormalCustomRedirects = r.pipedMaterialNormalCustomRedirects
+ pipedMaterialTorRedirectsChecks = r.pipedMaterialTorRedirectsChecks
+ pipedMaterialTorCustomRedirects = r.pipedMaterialTorCustomRedirects
+ pipedMaterialI2pRedirectsChecks = r.pipedMaterialI2pRedirectsChecks
+ pipedMaterialI2pCustomRedirects = r.pipedMaterialI2pCustomRedirects
+ pipedMaterialLokiRedirectsChecks = r.pipedMaterialLokiRedirectsChecks
+ pipedMaterialLokiCustomRedirects = r.pipedMaterialLokiCustomRedirects
+ cloudtubeNormalRedirectsChecks = r.cloudtubeNormalRedirectsChecks
+ cloudtubeNormalCustomRedirects = r.cloudtubeNormalCustomRedirects
+ cloudtubeTorRedirectsChecks = r.cloudtubeTorRedirectsChecks
+ cloudtubeTorCustomRedirects = r.cloudtubeTorCustomRedirects
+ cloudtubeI2pRedirectsChecks = r.cloudtubeI2pRedirectsChecks
+ cloudtubeI2pCustomRedirects = r.cloudtubeI2pCustomRedirects
+ cloudtubeLokiRedirectsChecks = r.cloudtubeLokiRedirectsChecks
+ cloudtubeLokiCustomRedirects = r.cloudtubeLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function all() {
- return [
- ...youtubeRedirects.invidious.normal,
- ...youtubeRedirects.invidious.tor,
+ return [
+ ...youtubeRedirects.invidious.normal,
+ ...youtubeRedirects.invidious.tor,
+ ...youtubeRedirects.invidious.i2p,
+ ...youtubeRedirects.invidious.loki,
- ...youtubeRedirects.piped.normal,
- ...youtubeRedirects.piped.tor,
+ ...youtubeRedirects.piped.normal,
+ ...youtubeRedirects.piped.tor,
+ ...youtubeRedirects.piped.i2p,
+ ...youtubeRedirects.piped.loki,
- ...youtubeRedirects.pipedMaterial.normal,
- ...youtubeRedirects.pipedMaterial.tor,
+ ...youtubeRedirects.pipedMaterial.normal,
+ ...youtubeRedirects.pipedMaterial.tor,
+ ...youtubeRedirects.pipedMaterial.i2p,
+ ...youtubeRedirects.pipedMaterial.loki,
- ...invidiousNormalCustomRedirects,
- ...invidiousTorCustomRedirects,
- ...invidiousI2pCustomRedirects,
- ...invidiousLokiCustomRedirects,
+ ...youtubeRedirects.cloudtube.normal,
+ ...youtubeRedirects.cloudtube.tor,
+ ...youtubeRedirects.cloudtube.i2p,
+ ...youtubeRedirects.cloudtube.loki,
- ...pipedNormalCustomRedirects,
- ...pipedTorCustomRedirects,
- ...pipedI2pCustomRedirects,
- ...pipedLokiCustomRedirects,
+ ...invidiousNormalCustomRedirects,
+ ...invidiousTorCustomRedirects,
+ ...invidiousI2pCustomRedirects,
+ ...invidiousLokiCustomRedirects,
- ...pipedMaterialNormalCustomRedirects,
- ...pipedMaterialTorCustomRedirects,
- ...pipedMaterialI2pCustomRedirects,
- ...pipedMaterialLokiCustomRedirects
- ];
-}
+ ...pipedNormalCustomRedirects,
+ ...pipedTorCustomRedirects,
+ ...pipedI2pCustomRedirects,
+ ...pipedLokiCustomRedirects,
-function redirect(url, type, initiator, disableOverride) {
- if (disableYoutube && !disableOverride) return;
- if (!targets.some(rx => rx.test(url.href))) return;
- if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
+ ...pipedMaterialNormalCustomRedirects,
+ ...pipedMaterialTorCustomRedirects,
+ ...pipedMaterialI2pCustomRedirects,
+ ...pipedMaterialLokiCustomRedirects,
- const isInvidious = youtubeFrontend == 'invidious';
- const isPiped = youtubeFrontend == 'piped';
- const isPipedMaterial = youtubeFrontend == 'pipedMaterial'
- const isFreetube = youtubeFrontend == 'freetube';
- const isYatte = youtubeFrontend == 'yatte';
+ ...cloudtubeNormalCustomRedirects,
+ ...cloudtubeTorCustomRedirects,
+ ...cloudtubeI2pCustomRedirects,
+ ...cloudtubeLokiCustomRedirects,
+ ]
+}
- //const isFrontendYoutube = youtubeEmbedFrontend == "youtube";
- const isFrontendInvidious = youtubeEmbedFrontend == 'invidious';
- const isFrontendPiped = youtubeEmbedFrontend == 'piped';
- const isFrontendPipedMaterial = youtubeEmbedFrontend == 'pipedMaterial';
+function calculateFrontend(type) {
+ switch (type) {
+ case "main_frame":
+ return youtubeFrontend
+ case "sub_frame":
+ return youtubeEmbedFrontend
+ }
+}
- const main_frame = type === "main_frame";
- const sub_frame = type === "sub_frame";
+function getInstanceList(type) {
+ let instancesList = []
+ switch (calculateFrontend(type)) {
+ case "invidious":
+ switch (protocol) {
+ case "loki":
+ instancesList = [...invidiousLokiRedirectsChecks, ...invidiousLokiCustomRedirects]
+ break
+ case "i2p":
+ instancesList = [...invidiousI2pRedirectsChecks, ...invidiousI2pCustomRedirects]
+ break
+ case "tor":
+ instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
+ }
+ break
+ case "piped":
+ switch (protocol) {
+ case "loki":
+ instancesList = [...pipedLokiRedirectsChecks, ...pipedLokiCustomRedirects]
+ break
+ case "i2p":
+ instancesList = [...pipedI2pRedirectsChecks, ...pipedI2pCustomRedirects]
+ break
+ case "tor":
+ instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects]
+ }
+ break
+ case "pipedMaterial":
+ switch (protocol) {
+ case "loki":
+ instancesList = [...pipedMaterialLokiRedirectsChecks, ...pipedMaterialLokiCustomRedirects]
+ break
+ case "i2p":
+ instancesList = [...pipedMaterialI2pRedirectsChecks, ...pipedMaterialI2pCustomRedirects]
+ break
+ case "tor":
+ instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
+ }
+ case "cloudtube":
+ switch (protocol) {
+ case "loki":
+ instancesList = [...cloudtubeLokiRedirectsChecks, ...cloudtubeLokiCustomRedirects]
+ break
+ case "i2p":
+ instancesList = [...cloudtubeI2pRedirectsChecks, ...cloudtubeI2pCustomRedirects]
+ break
+ case "tor":
+ instancesList = [...cloudtubeTorRedirectsChecks, ...cloudtubeTorCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...cloudtubeNormalRedirectsChecks, ...cloudtubeNormalCustomRedirects]
+ }
+ }
+ return instancesList
+}
- if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) return; // Don't redirect YouTube Player API.
- if (onlyEmbeddedVideo == 'onlyEmbedded' && main_frame) return;
- if (onlyEmbeddedVideo == 'onlyNotEmbedded' && !main_frame) return;
+function redirect(url, type, initiator, disableOverride) {
+ if (disableYoutube && !disableOverride) return
+ if (!targets.some(rx => rx.test(url.href))) return
+ if (initiator && all().includes(initiator.origin)) return "BYPASSTAB"
- //if ((isFreetube || isYatte) && sub_frame && isFrontendYoutube) return;
+ if (type != ("main_frame" || "sub_frame")) return
+ if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) return // Don't redirect YouTube Player API.
+ if (onlyEmbeddedVideo == "onlyEmbedded" && type == "main_frame") return
+ if (onlyEmbeddedVideo == "onlyNotEmbedded" && type == "sub_frame") return
- if (isYatte && main_frame) return url.href.replace(/^https?:\/{2}/, 'yattee://');
- if (isFreetube && main_frame) return `freetube://https://youtube.com${url.pathname}${url.search}`;
+ if (type == "main_frame") {
+ switch (youtubeFrontend) {
+ case "yatte":
+ return url.href.replace(/^https?:\/{2}/, "yattee://")
+ case "freetube":
+ return `freetube://https://youtube.com${url.pathname}${url.search}`
+ }
+ }
- if (isInvidious || ((isFreetube || isYatte) && sub_frame && isFrontendInvidious)) {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...invidiousLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...invidiousI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`;
- }
- if (isPiped || ((isFreetube || isYatte) && sub_frame && isFrontendPiped)) {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...pipedLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...pipedI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`;
- }
- if (isPipedMaterial || ((isFreetube || isYatte) && sub_frame && isFrontendPipedMaterial)) {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...pipedMaterialLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...pipedMaterialI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...pipedMaterialTorCustomRedirects]; //...pipedMaterialTorRedirectsChecks,
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
- }
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`;
- }
- return 'CANCEL';
+ const instanceList = getInstanceList(type)
+ try {
+ if (instanceList.length >= 1) {
+ const randomInstance = utils.getRandomInstance(instanceList)
+ return `${randomInstance}${url.pathname}${url.search}`
+ }
+ } catch {
+ return
+ }
}
function reverse(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- resolve(`https://youtube.com${url.pathname}${url.search}`);
- })
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ resolve(`https://youtube.com${url.pathname}${url.search}`)
+ })
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutube && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousLokiCustomRedirects]; //...invidiousLokiRedirectsChecks,
- else if (youtubeFrontend == 'piped') instancesList = [...pipedLokiCustomRedirects]; //...pipedLokiRedirectsChecks,
- else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialLokiCustomRedirects]; //...pipedMaterialLokiRedirectsChecks,
- }
- else if (protocol == 'i2p') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousI2pCustomRedirects]; //...invidiousI2pRedirectsChecks,
- else if (youtubeFrontend == 'piped') instancesList = [...pipedI2pCustomRedirects]; //...pipedI2pRedirectsChecks,
- else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialI2pCustomRedirects]; //...pipedMaterialI2pRedirectsChecks,
- }
- else if (protocol == 'tor') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
- else if (youtubeFrontend == 'piped') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
- else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialTorCustomRedirects]; //...pipedMaterialTorRedirectsChecks,
- }
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
- else if (youtubeFrontend == 'piped') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
- else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
- }
+ let instancesList = []
+ switch (protocol) {
+ case "loki":
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousLokiRedirectsChecks, ...invidiousLokiCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedLokiRedirectsChecks, ...pipedLokiCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialLokiRedirectsChecks, ...pipedMaterialLokiCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeLokiRedirectsChecks, ...cloudtubeLokiCustomRedirects]
+ }
+ break
+ case "i2p":
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousI2pRedirectsChecks, ...invidiousI2pCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedI2pRedirectsChecks, ...pipedI2pCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialI2pRedirectsChecks, ...pipedMaterialI2pCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeI2pRedirectsChecks, ...cloudtubeI2pCustomRedirects]
+ }
+ break
+ case "tor":
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeTorRedirectsChecks, ...cloudtubeTorCustomRedirects]
+ }
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeNormalRedirectsChecks, ...cloudtubeNormalCustomRedirects]
+ }
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length == 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length == 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList', async r => {
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ invidiousNormalRedirectsChecks = [...redirects.invidious.normal]
+ pipedNormalRedirectsChecks = [...redirects.piped.normal]
+ pipedMaterialNormalRedirectsChecks = [...redirects.pipedMaterial.normal]
+ cloudtubeNormalRedirectsChecks = [...redirects.cloudtube.normal]
+
+ for (const instance of r.cloudflareBlackList) {
+ const a = invidiousNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) invidiousNormalRedirectsChecks.splice(a, 1)
+
+ const b = pipedNormalRedirectsChecks.indexOf(instance)
+ if (b > -1) pipedNormalRedirectsChecks.splice(b, 1)
- invidiousNormalRedirectsChecks = [...redirects.invidious.normal];
- pipedNormalRedirectsChecks = [...redirects.piped.normal];
- pipedMaterialNormalRedirectsChecks = [...redirects.pipedMaterial.normal];
+ const c = pipedMaterialNormalRedirectsChecks.indexOf(instance)
+ if (c > -1) pipedMaterialNormalRedirectsChecks.splice(c, 1)
- for (const instance of r.cloudflareBlackList) {
- const a = invidiousNormalRedirectsChecks.indexOf(instance);
- if (a > -1) invidiousNormalRedirectsChecks.splice(a, 1);
+ const d = cloudtubeNormalRedirectsChecks.indexOf(instance)
+ if (d > -1) cloudtubeNormalRedirectsChecks.indexOf(instance)
+ }
- const b = pipedNormalRedirectsChecks.indexOf(instance);
- if (b > -1) pipedNormalRedirectsChecks.splice(b, 1);
+ browser.storage.local.set(
+ {
+ disableYoutube: false,
+ enableYoutubeCustomSettings: false,
+ onlyEmbeddedVideo: "both",
+ youtubeRedirects: redirects,
+ youtubeFrontend: "invidious",
- const c = pipedMaterialNormalRedirectsChecks.indexOf(instance);
- if (c > -1) pipedMaterialNormalRedirectsChecks.splice(c, 1);
- }
+ invidiousNormalRedirectsChecks: invidiousNormalRedirectsChecks,
+ invidiousNormalCustomRedirects: [],
- browser.storage.local.set({
- disableYoutube: false,
- enableYoutubeCustomSettings: false,
- onlyEmbeddedVideo: 'both',
- youtubeRedirects: redirects,
- youtubeFrontend: 'invidious',
+ invidiousTorRedirectsChecks: [...redirects.invidious.tor],
+ invidiousTorCustomRedirects: [],
- invidiousNormalRedirectsChecks: invidiousNormalRedirectsChecks,
- invidiousNormalCustomRedirects: [],
+ invidiousI2pRedirectsChecks: [...redirects.invidious.i2p],
+ invidiousI2pCustomRedirects: [],
- invidiousTorRedirectsChecks: [...redirects.invidious.tor],
- invidiousTorCustomRedirects: [],
+ invidiousLokiRedirectsChecks: [...redirects.invidious.loki],
+ invidiousLokiCustomRedirects: [],
- invidiousI2pRedirectsChecks: [...redirects.invidious.i2p],
- invidiousI2pCustomRedirects: [],
+ pipedNormalRedirectsChecks: pipedNormalRedirectsChecks,
+ pipedNormalCustomRedirects: [],
- invidiousLokiRedirectsChecks: [...redirects.invidious.loki],
- invidiousLokiCustomRedirects: [],
+ pipedTorRedirectsChecks: [...redirects.piped.tor],
+ pipedTorCustomRedirects: [],
- pipedNormalRedirectsChecks: pipedNormalRedirectsChecks,
- pipedNormalCustomRedirects: [],
+ pipedI2pRedirectsChecks: [...redirects.piped.i2p],
+ pipedI2pCustomRedirects: [],
- pipedTorRedirectsChecks: [...redirects.piped.tor],
- pipedTorCustomRedirects: [],
+ pipedLokiRedirectsChecks: [...redirects.piped.loki],
+ pipedLokiCustomRedirects: [],
- pipedI2pRedirectsChecks: [...redirects.piped.i2p],
- pipedI2pCustomRedirects: [],
+ pipedMaterialNormalRedirectsChecks: pipedMaterialNormalRedirectsChecks,
+ pipedMaterialNormalCustomRedirects: [],
- pipedLokiRedirectsChecks: [...redirects.piped.loki],
- pipedLokiCustomRedirects: [],
+ pipedMaterialTorRedirectsChecks: [...redirects.pipedMaterial.tor],
+ pipedMaterialTorCustomRedirects: [],
- pipedMaterialNormalRedirectsChecks: pipedMaterialNormalRedirectsChecks,
- pipedMaterialNormalCustomRedirects: [],
+ pipedMaterialI2pRedirectsChecks: [...redirects.pipedMaterial.i2p],
+ pipedMaterialI2pCustomRedirects: [],
- pipedMaterialTorRedirectsChecks: [...redirects.pipedMaterial.tor],
- pipedMaterialTorCustomRedirects: [],
+ pipedMaterialLokiRedirectsChecks: [...redirects.pipedMaterial.loki],
+ pipedMaterialLokiCustomRedirects: [],
- pipedMaterialI2pRedirectsChecks: [...redirects.pipedMaterial.i2p],
- pipedMaterialI2pCustomRedirects: [],
+ cloudtubeNormalRedirectsChecks: cloudtubeNormalRedirectsChecks,
+ cloudtubeNormalCustomRedirects: [],
- pipedMaterialLokiRedirectsChecks: [...redirects.pipedMaterial.loki],
- pipedMaterialLokiCustomRedirects: [],
+ cloudtubeTorRedirectsChecks: [...redirects.cloudtube.tor],
+ cloudtubeTorCustomRedirects: [],
- youtubeEmbedFrontend: 'invidious'
- }, () => resolve())
- })
- })
- })
+ cloudtubeI2pRedirectsChecks: [...redirects.cloudtube.i2p],
+ cloudtubeI2pCustomRedirects: [],
+
+ cloudtubeLokiRedirectsChecks: [...redirects.cloudtube.loki],
+ cloudtubeLokiCustomRedirects: [],
+
+ youtubeEmbedFrontend: "invidious",
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
function copyPasteInvidiousCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'invidious') { resolve(); return; }
- const protocolHost = utils.protocolHost(from);
- if (![
- ...invidiousNormalRedirectsChecks,
- ...invidiousTorRedirectsChecks,
- ...invidiousNormalCustomRedirects,
- ...invidiousTorCustomRedirects,
- ...invidiousI2pCustomRedirects,
- ...invidiousLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
- if (!test) {
- let checkedInstances = [];
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutube || youtubeFrontend != "invidious") {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(from)
+ if (
+ ![
+ ...invidiousNormalRedirectsChecks,
+ ...invidiousTorRedirectsChecks,
+ ...invidiousNormalCustomRedirects,
+ ...invidiousTorCustomRedirects,
+ ...invidiousI2pCustomRedirects,
+ ...invidiousLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
+ if (!test) {
+ let checkedInstances = []
- if (protocol == 'loki') checkedInstances = [...invidiousLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...invidiousI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
- }
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- await utils.copyCookie('invidious', from, checkedInstances, 'PREFS');
- }
- resolve(true);
- })
+ if (protocol == "loki") checkedInstances = [...invidiousLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...invidiousI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
+ }
+ const i = checkedInstances.indexOf(protocolHost)
+ if (i !== -1) checkedInstances.splice(i, 1)
+ await utils.copyCookie("invidious", from, checkedInstances, "PREFS")
+ }
+ resolve(true)
+ })
}
function pasteInvidiousCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'invidious') { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...invidiousLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...invidiousI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
- }
- utils.getCookiesFromStorage('invidious', checkedInstances, 'PREFS');
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutube || youtubeFrontend != "invidious") {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...invidiousLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...invidiousI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("invidious", checkedInstances, "PREFS")
+ resolve()
+ })
}
function copyPastePipedLocalStorage(test, url, tabId) {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'piped') { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...pipedNormalCustomRedirects,
- ...pipedNormalRedirectsChecks,
- ...pipedTorRedirectsChecks,
- ...pipedTorCustomRedirects,
- ...pipedI2pCustomRedirects,
- ...pipedLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutube || youtubeFrontend != "piped") {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (
+ ![...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks, ...pipedTorRedirectsChecks, ...pipedTorCustomRedirects, ...pipedI2pCustomRedirects, ...pipedLokiCustomRedirects].includes(
+ protocolHost
+ )
+ ) {
+ resolve()
+ return
+ }
- if (!test) {
- browser.tabs.executeScript(tabId, { file: "/assets/javascripts/youtube/get_piped_preferences.js", runAt: "document_start" });
+ if (!test) {
+ browser.tabs.executeScript(tabId, {
+ file: "/assets/javascripts/youtube/get_piped_preferences.js",
+ runAt: "document_start",
+ })
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...pipedLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...pipedI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks]
- }
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- for (const to of checkedInstances) {
- browser.tabs.create({ url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/youtube/set_piped_preferences.js", runAt: "document_start" }))
- }
- }
- resolve(true);
- })
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...pipedLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...pipedI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks]
+ }
+ const i = checkedInstances.indexOf(protocolHost)
+ if (i !== -1) checkedInstances.splice(i, 1)
+ for (const to of checkedInstances) {
+ browser.tabs.create({ url: to }, tab =>
+ browser.tabs.executeScript(tab.id, {
+ file: "/assets/javascripts/youtube/set_piped_preferences.js",
+ runAt: "document_start",
+ })
+ )
+ }
+ }
+ resolve(true)
+ })
}
function pastePipedLocalStorage() {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'piped') { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...pipedLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...pipedI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks]
- }
- for (const to of checkedInstances) {
- browser.tabs.create({ url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/youtube/set_piped_preferences.js", runAt: "document_start" }))
- }
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutube || youtubeFrontend != "piped") {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...pipedLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...pipedI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks]
+ }
+ for (const to of checkedInstances) {
+ browser.tabs.create({ url: to }, tab =>
+ browser.tabs.executeScript(tab.id, {
+ file: "/assets/javascripts/youtube/set_piped_preferences.js",
+ runAt: "document_start",
+ })
+ )
+ }
+ resolve()
+ })
}
-function copyPastePipedMaterialLocalStorage(test, url, tabId,) {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'pipedMaterial') { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...pipedMaterialNormalRedirectsChecks,
- ...pipedMaterialNormalCustomRedirects,
- //...pipedMaterialTorRedirectsChecks,
- ...pipedMaterialTorCustomRedirects,
- ...pipedMaterialI2pCustomRedirects,
- ...pipedMaterialLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+function copyPastePipedMaterialLocalStorage(test, url, tabId) {
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutube || youtubeFrontend != "pipedMaterial") {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (
+ ![
+ ...pipedMaterialNormalRedirectsChecks,
+ ...pipedMaterialNormalCustomRedirects,
+ //...pipedMaterialTorRedirectsChecks,
+ ...pipedMaterialTorCustomRedirects,
+ ...pipedMaterialI2pCustomRedirects,
+ ...pipedMaterialLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
- if (!test) {
- browser.tabs.executeScript(tabId, { file: "/assets/javascripts/youtube/get_pipedMaterial_preferences.js", runAt: "document_start" });
+ if (!test) {
+ browser.tabs.executeScript(tabId, {
+ file: "/assets/javascripts/youtube/get_pipedMaterial_preferences.js",
+ runAt: "document_start",
+ })
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...pipedMaterialLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...pipedMaterialI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...pipedMaterialTorCustomRedirects]; //...pipedMaterialTorRedirectsChecks,
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
- }
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- for (const to of checkedInstances)
- browser.tabs.create(
- { url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/youtube/set_pipedMaterial_preferences.js", runAt: "document_start" })
- );
- }
- resolve(true);
- })
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...pipedMaterialLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...pipedMaterialI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...pipedMaterialTorCustomRedirects] //...pipedMaterialTorRedirectsChecks,
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
+ }
+ const i = checkedInstances.indexOf(protocolHost)
+ if (i !== -1) checkedInstances.splice(i, 1)
+ for (const to of checkedInstances)
+ browser.tabs.create({ url: to }, tab =>
+ browser.tabs.executeScript(tab.id, {
+ file: "/assets/javascripts/youtube/set_pipedMaterial_preferences.js",
+ runAt: "document_start",
+ })
+ )
+ }
+ resolve(true)
+ })
}
function pastePipedMaterialLocalStorage() {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'pipedMaterial') { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...pipedMaterialLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...pipedMaterialI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...pipedMaterialTorCustomRedirects]; //...pipedMaterialTorRedirectsChecks,
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
- }
- for (const to of checkedInstances) {
- browser.tabs.create({ url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/youtube/set_pipedMaterial_preferences.js", runAt: "document_start" }))
- }
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutube || youtubeFrontend != "pipedMaterial") {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...pipedMaterialLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...pipedMaterialI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...pipedMaterialTorCustomRedirects] //...pipedMaterialTorRedirectsChecks,
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
+ }
+ for (const to of checkedInstances) {
+ browser.tabs.create({ url: to }, tab =>
+ browser.tabs.executeScript(tab.id, {
+ file: "/assets/javascripts/youtube/set_pipedMaterial_preferences.js",
+ runAt: "document_start",
+ })
+ )
+ }
+ resolve()
+ })
}
function removeXFrameOptions(e) {
- let isChanged = false;
+ let isChanged = false
- if (e.type == 'main_frame') {
- for (const i in e.responseHeaders) {
- if (e.responseHeaders[i].name == 'content-security-policy') {
- let instancesList = [];
- if (protocol == 'loki') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousLokiCustomRedirects]; //...invidiousLokiRedirectsChecks,
- if (youtubeFrontend == 'piped') instancesList = [...pipedLokiCustomRedirects]; //...pipedLokiRedirectsChecks,
- if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialLokiCustomRedirects]; //...pipedMaterialLokiRedirectsChecks,
- }
- else if (protocol == 'i2p') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousI2pCustomRedirects]; //...invidiousI2pRedirectsChecks,
- if (youtubeFrontend == 'piped') instancesList = [...pipedI2pCustomRedirects]; //...pipedI2pRedirectsChecks,
- if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialI2pCustomRedirects]; //...pipedMaterialI2pRedirectsChecks,
- }
- else if (protocol == 'tor') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
- if (youtubeFrontend == 'piped') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
- if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialTorCustomRedirects]; //...pipedMaterialTorRedirectsChecks,
- }
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
- if (youtubeFrontend == 'piped') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
- if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
- }
- let securityPolicyList = e.responseHeaders[i].value.split(';');
- for (const i in securityPolicyList) securityPolicyList[i] = securityPolicyList[i].trim();
+ if (e.type == "main_frame") {
+ for (const i in e.responseHeaders) {
+ if (e.responseHeaders[i].name == "content-security-policy") {
+ let instancesList = []
+ switch (protocol) {
+ case "loki":
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousLokiRedirectsChecks, ...invidiousLokiCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedLokiRedirectsChecks, ...pipedLokiCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialLokiRedirectsChecks, ...pipedMaterialLokiCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeLokiRedirectsChecks, ...cloudtubeLokiCustomRedirects]
+ }
+ break
+ case "i2p":
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousI2pRedirectsChecks, ...invidiousI2pCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedI2pRedirectsChecks, ...pipedI2pCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialI2pRedirectsChecks, ...pipedMaterialI2pCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeI2pRedirectsChecks, ...cloudtubeI2pCustomRedirects]
+ }
+ break
+ case "tor":
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeTorRedirectsChecks, ...cloudtubeTorCustomRedirects]
+ }
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeNormalRedirectsChecks, ...cloudtubeNormalCustomRedirects]
+ }
+ }
+ let securityPolicyList = e.responseHeaders[i].value.split(";")
+ for (const i in securityPolicyList) securityPolicyList[i] = securityPolicyList[i].trim()
- let newSecurity = '';
- for (const item of securityPolicyList) {
- if (item.trim() == '') continue
- let regex = item.match(/([a-z-]{0,}) (.*)/)
- if (regex == null) continue
- let [, key, vals] = regex;
- if (key == 'frame-src') vals = vals + ' ' + instancesList.join(' ');
- newSecurity += key + ' ' + vals + '; ';
- }
+ let newSecurity = ""
+ for (const item of securityPolicyList) {
+ if (item.trim() == "") continue
+ let regex = item.match(/([a-z-]{0,}) (.*)/)
+ if (regex == null) continue
+ let [, key, vals] = regex
+ if (key == "frame-src") vals = vals + " " + instancesList.join(" ")
+ newSecurity += key + " " + vals + "; "
+ }
- e.responseHeaders[i].value = newSecurity;
- isChanged = true;
- }
- }
- }
- else if (e.type == 'sub_frame') {
- const url = new URL(e.url);
- const protocolHost = utils.protocolHost(url);
- if (all().includes(protocolHost)) {
- for (const i in e.responseHeaders) {
- if (e.responseHeaders[i].name == 'x-frame-options') {
- e.responseHeaders.splice(i, 1);
- isChanged = true;
- }
- else if (e.responseHeaders[i].name == 'content-security-policy') {
- e.responseHeaders.splice(i, 1);
- isChanged = true;
- }
- }
- }
- }
- if (isChanged) return { responseHeaders: e.responseHeaders };
+ e.responseHeaders[i].value = newSecurity
+ isChanged = true
+ }
+ }
+ } else if (e.type == "sub_frame") {
+ const url = new URL(e.url)
+ const protocolHost = utils.protocolHost(url)
+ if (all().includes(protocolHost)) {
+ for (const i in e.responseHeaders) {
+ if (e.responseHeaders[i].name == "x-frame-options") {
+ e.responseHeaders.splice(i, 1)
+ isChanged = true
+ } else if (e.responseHeaders[i].name == "content-security-policy") {
+ e.responseHeaders.splice(i, 1)
+ isChanged = true
+ }
+ }
+ }
+ }
+ if (isChanged) return { responseHeaders: e.responseHeaders }
}
export default {
- setRedirects,
- copyPastePipedLocalStorage,
- pastePipedLocalStorage,
- copyPastePipedMaterialLocalStorage,
- pastePipedMaterialLocalStorage,
- copyPasteInvidiousCookies,
- pasteInvidiousCookies,
- redirect,
- reverse,
- switchInstance,
- initDefaults,
- removeXFrameOptions,
-};
+ setRedirects,
+ copyPastePipedLocalStorage,
+ pastePipedLocalStorage,
+ copyPastePipedMaterialLocalStorage,
+ pastePipedMaterialLocalStorage,
+ copyPasteInvidiousCookies,
+ pasteInvidiousCookies,
+ redirect,
+ reverse,
+ switchInstance,
+ initDefaults,
+ removeXFrameOptions,
+}
diff --git a/src/assets/javascripts/youtubeMusic.js b/src/assets/javascripts/youtubeMusic.js
index 46caf60e..3ff9a174 100644
--- a/src/assets/javascripts/youtubeMusic.js
+++ b/src/assets/javascripts/youtubeMusic.js
@@ -1,61 +1,192 @@
-"use strict";
+"use strict"
-import utils from './utils.js'
+import utils from "./utils.js"
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-const targets = [
- /^https?:\/{2}music\.youtube\.com(\/.*|$)/,
-];
-let redirects = {
- "beatbump": {
- "normal": [
- "https://beatbump.ml"
- ],
- "tor": [],
- "i2p": [],
- "loki": []
- },
-};
+const targets = [/^https?:\/{2}music\.youtube\.com(\/.*|$)/]
-let
- disableYoutubeMusic,
- protocol,
- protocolFallback,
- beatbumpNormalRedirectsChecks,
- beatbumpNormalCustomRedirects,
- beatbumpTorCustomRedirects,
- beatbumpI2pCustomRedirects,
- beatbumpLokiCustomRedirects;
+const frontends = new Array("beatbump", "hyperpipe")
+const protocols = new Array("normal", "tor", "i2p", "loki")
+
+let redirects = {}
+
+for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
+}
+
+function setRedirects(val) {
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects = val
+ beatbumpNormalRedirectsChecks = [...redirects.beatbump.normal]
+ hyperpipeNormalRedirectsChecks = [...redirects.hyperpipe.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = beatbumpNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) beatbumpNormalRedirectsChecks.splice(a, 1)
+
+ const b = hyperpipeNormalRedirectsChecks.indexOf(instance)
+ if (b > -1) hyperpipeNormalRedirectsChecks.splice(b, 1)
+ }
+ browser.storage.local.set({
+ youtubeMusicRedirects: redirects,
+ beatbumpNormalRedirectsChecks,
+ hyperpipeNormalRedirectsChecks,
+ })
+ })
+}
+
+let disableYoutubeMusic,
+ youtubeMusicFrontend,
+ youtubeMusicRedirects,
+ protocol,
+ protocolFallback,
+ beatbumpNormalRedirectsChecks,
+ beatbumpNormalCustomRedirects,
+ beatbumpTorRedirectsChecks,
+ beatbumpTorCustomRedirects,
+ beatbumpI2pRedirectsChecks,
+ beatbumpI2pCustomRedirects,
+ beatbumpLokiRedirectsChecks,
+ beatbumpLokiCustomRedirects,
+ hyperpipeNormalRedirectsChecks,
+ hyperpipeNormalCustomRedirects,
+ hyperpipeTorRedirectsChecks,
+ hyperpipeTorCustomRedirects,
+ hyperpipeI2pRedirectsChecks,
+ hyperpipeI2pCustomRedirects,
+ hyperpipeLokiRedirectsChecks,
+ hyperpipeLokiCustomRedirects
function init() {
- browser.storage.local.get(
- [
- "disableYoutubeMusic",
- "protocol",
- "protocolFallback",
- "beatbumpNormalRedirectsChecks",
- "beatbumpNormalCustomRedirects",
- "beatbumpTorCustomRedirects",
- "beatbumpI2pCustomRedirects",
- "beatbumpLokiCustomRedirects"
- ],
- r => {
- disableYoutubeMusic = r.disableYoutubeMusic;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- beatbumpNormalRedirectsChecks = r.beatbumpNormalRedirectsChecks;
- beatbumpNormalCustomRedirects = r.beatbumpNormalCustomRedirects;
- beatbumpTorCustomRedirects = r.beatbumpTorCustomRedirects;
- beatbumpI2pCustomRedirects = r.beatbumpI2pCustomRedirects;
- beatbumpLokiCustomRedirects = r.beatbumpLokiCustomRedirects;
- }
- )
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableYoutubeMusic",
+ "youtubeMusicFrontend",
+ "youtubeMusicRedirects",
+ "protocol",
+ "protocolFallback",
+ "beatbumpNormalRedirectsChecks",
+ "beatbumpNormalCustomRedirects",
+ "beatbumpTorRedirectsChecks",
+ "beatbumpTorCustomRedirects",
+ "beatbumpI2pRedirectsChecks",
+ "beatbumpI2pCustomRedirects",
+ "beatbumpLokiRedirectsChecks",
+ "beatbumpLokiCustomRedirects",
+ "hyperpipeNormalRedirectsChecks",
+ "hyperpipeNormalCustomRedirects",
+ "hyperpipeTorRedirectsChecks",
+ "hyperpipeTorCustomRedirects",
+ "hyperpipeI2pRedirectsChecks",
+ "hyperpipeI2pCustomRedirects",
+ "hyperpipeLokiRedirectsChecks",
+ "hyperpipeLokiCustomRedirects",
+ ],
+ r => {
+ disableYoutubeMusic = r.disableYoutubeMusic
+ youtubeMusicFrontend = r.youtubeMusicFrontend
+ youtubeMusicRedirects = r.youtubeMusicRedirects
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ beatbumpNormalRedirectsChecks = r.beatbumpNormalRedirectsChecks
+ beatbumpNormalCustomRedirects = r.beatbumpNormalCustomRedirects
+ beatbumpTorRedirectsChecks = r.beatbumpTorRedirectsChecks
+ beatbumpTorCustomRedirects = r.beatbumpTorCustomRedirects
+ beatbumpI2pRedirectsChecks = r.beatbumpI2pRedirectsChecks
+ beatbumpI2pCustomRedirects = r.beatbumpI2pCustomRedirects
+ beatbumpLokiRedirectsChecks = r.beatbumpLokiRedirectsChecks
+ beatbumpLokiCustomRedirects = r.beatbumpLokiCustomRedirects
+ hyperpipeNormalRedirectsChecks = r.hyperpipeNormalRedirectsChecks
+ hyperpipeNormalCustomRedirects = r.hyperpipeNormalCustomRedirects
+ hyperpipeTorRedirectsChecks = r.hyperpipeTorRedirectsChecks
+ hyperpipeTorCustomRedirects = r.hyperpipeTorCustomRedirects
+ hyperpipeI2pRedirectsChecks = r.hyperpipeI2pRedirectsChecks
+ hyperpipeI2pCustomRedirects = r.hyperpipeI2pCustomRedirects
+ hyperpipeLokiRedirectsChecks = r.hyperpipeLokiRedirectsChecks
+ hyperpipeLokiCustomRedirects = r.hyperpipeLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
+function all() {
+ return [
+ ...beatbumpNormalRedirectsChecks,
+ ...beatbumpNormalCustomRedirects,
+ ...beatbumpTorRedirectsChecks,
+ ...beatbumpTorCustomRedirects,
+ ...beatbumpI2pRedirectsChecks,
+ ...beatbumpI2pCustomRedirects,
+ ...beatbumpLokiRedirectsChecks,
+ ...beatbumpLokiCustomRedirects,
+ ...hyperpipeNormalRedirectsChecks,
+ ...hyperpipeNormalCustomRedirects,
+ ...hyperpipeTorRedirectsChecks,
+ ...hyperpipeTorCustomRedirects,
+ ...hyperpipeI2pRedirectsChecks,
+ ...hyperpipeI2pCustomRedirects,
+ ...hyperpipeLokiRedirectsChecks,
+ ...hyperpipeLokiCustomRedirects,
+ ]
+}
+
+function getInstanceList() {
+ let tmpList = []
+ switch (youtubeMusicFrontend) {
+ case "beatbump":
+ switch (protocol) {
+ case "loki":
+ tmpList = [...beatbumpLokiRedirectsChecks, ...beatbumpLokiCustomRedirects]
+ break
+ case "i2p":
+ tmpList = [...beatbumpI2pRedirectsChecks, ...beatbumpI2pCustomRedirects]
+ break
+ case "tor":
+ tmpList = [...beatbumpTorRedirectsChecks, ...beatbumpTorCustomRedirects]
+ }
+ if ((tmpList.length === 0 && protocolFallback) || protocol == "normal") {
+ tmpList = [...beatbumpNormalRedirectsChecks, ...beatbumpNormalCustomRedirects]
+ }
+ break
+ case "hyperpipe":
+ switch (protocol) {
+ case "loki":
+ tmpList = [...hyperpipeLokiRedirectsChecks, ...hyperpipeLokiCustomRedirects]
+ break
+ case "i2p":
+ tmpList = [...hyperpipeI2pRedirectsChecks, ...hyperpipeI2pCustomRedirects]
+ break
+ case "tor":
+ tmpList = [...hyperpipeTorRedirectsChecks, ...hyperpipeTorCustomRedirects]
+ }
+ if ((tmpList.length === 0 && protocolFallback) || protocol == "normal") {
+ tmpList = [...hyperpipeNormalRedirectsChecks, ...hyperpipeNormalCustomRedirects]
+ }
+ }
+ return tmpList
+}
+
+function getUrl(randomInstance, url) {
+ switch (youtubeMusicFrontend) {
+ case "beatbump":
+ return `${randomInstance}${url.pathname}${url.search}`
+ .replace("/watch?v=", "/listen?id=")
+ .replace("/channel/", "/artist/")
+ .replace("/playlist?list=", "/playlist/VL")
+ .replace(/\/search\?q=.*/, searchQuery => searchQuery.replace("?q=", "/") + "?filter=EgWKAQIIAWoKEAMQBBAKEAkQBQ%3D%3D")
+ case "hyperpipe":
+ return `${randomInstance}${url.pathname}${url.search}`.replace(/\/search\?q=.*/, searchQuery => searchQuery.replace("?q=", "/"))
+ }
+}
+
/*
Video
https://music.youtube.com/watch?v=_PkGiKBW-DA&list=RDAMVM_PkGiKBW-DA
@@ -88,48 +219,105 @@ https://music.youtube.com/search?q=test
https://beatbump.ml/search/test?filter=EgWKAQIIAWoKEAMQBBAKEAkQBQ%3D%3D
*/
-function redirect(url, disableOverride) {
- if (disableYoutubeMusic && !disableOverride) return;
- if (!targets.some(rx => rx.test(url.href))) return;
+function redirect(url, type, initiator, disableOverride) {
+ if (disableYoutubeMusic && !disableOverride) return
+ if (!targets.some(rx => rx.test(url.href))) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...beatbumpLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...beatbumpI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...beatbumpTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...beatbumpNormalRedirectsChecks, ...beatbumpNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`
- .replace("/watch?v=", "/listen?id=")
- .replace("/channel/", "/artist/")
- .replace("/playlist?list=", "/playlist/VL")
- .replace(/\/search\?q=.*/, searchQuery => searchQuery.replace("?q=", "/") + "?filter=EgWKAQIIAWoKEAMQBBAKEAkQBQ%3D%3D");
+ let instancesList = getInstanceList()
+
+ if (instancesList.length === 0) return
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return getUrl(randomInstance, url)
}
-async function initDefaults() {
- return new Promise(resolve =>
- browser.storage.local.set({
- disableYoutubeMusic: true,
- youtubeMusicRedirects: redirects,
+function switchInstance(url, disableOverride) {
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutubeMusic && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+
+ let instancesList = getInstanceList()
+
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
+
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return getUrl(randomInstance, url)
+ })
+}
+
+function initDefaults() {
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ beatbumpNormalRedirectsChecks = [...redirects.beatbump.normal]
+ hyperpipeNormalRedirectsChecks = [...redirects.hyperpipe.normal]
+ for (const instance of r.cloudflareBlackList) {
+ let i
+
+ i = beatbumpNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) beatbumpNormalRedirectsChecks.splice(i, 1)
- beatbumpNormalRedirectsChecks: [...redirects.beatbump.normal],
- beatbumpNormalCustomRedirects: [],
+ i = hyperpipeNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) hyperpipeNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableYoutubeMusic: false,
+ youtubeMusicFrontend: "hyperpipe",
+ youtubeMusicRedirects: redirects,
- beatbumpTorRedirectsChecks: [...redirects.beatbump.tor],
- beatbumpTorCustomRedirects: [],
+ beatbumpNormalRedirectsChecks: beatbumpNormalRedirectsChecks,
+ beatbumpNormalCustomRedirects: [],
- beatbumpI2pRedirectsChecks: [...redirects.beatbump.i2p],
- beatbumpI2pCustomRedirects: [],
+ beatbumpTorRedirectsChecks: [...redirects.beatbump.tor],
+ beatbumpTorCustomRedirects: [],
- beatbumpLokiRedirectsChecks: [...redirects.beatbump.loki],
- beatbumpLokiCustomRedirects: []
- }, () => resolve())
- )
+ beatbumpI2pRedirectsChecks: [...redirects.beatbump.i2p],
+ beatbumpI2pCustomRedirects: [],
+
+ beatbumpLokiRedirectsChecks: [...redirects.beatbump.loki],
+ beatbumpLokiCustomRedirects: [],
+
+ hyperpipeNormalRedirectsChecks: hyperpipeNormalRedirectsChecks,
+ hyperpipeNormalCustomRedirects: [],
+
+ hyperpipeTorRedirectsChecks: [...redirects.hyperpipe.tor],
+ hyperpipeTorCustomRedirects: [],
+
+ hyperpipeI2pRedirectsChecks: [...redirects.hyperpipe.i2p],
+ hyperpipeI2pCustomRedirects: [],
+
+ hyperpipeLokiRedirectsChecks: [...redirects.hyperpipe.loki],
+ hyperpipeLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- redirect,
- initDefaults,
-};
+ setRedirects,
+ switchInstance,
+ redirect,
+ initDefaults,
+}
diff --git a/src/instances/beatbump.json b/src/instances/beatbump.json
new file mode 100644
index 00000000..4c7f65a6
--- /dev/null
+++ b/src/instances/beatbump.json
@@ -0,0 +1,6 @@
+{
+ "normal": ["https://beatbump.ml"],
+ "tor": [],
+ "i2p": [],
+ "loki": []
+}
diff --git a/src/instances/cloudtube.json b/src/instances/cloudtube.json
new file mode 100644
index 00000000..402adc39
--- /dev/null
+++ b/src/instances/cloudtube.json
@@ -0,0 +1,6 @@
+{
+ "normal": ["https://tube.cadence.moe", "https://yt.beparanoid.de"],
+ "tor": ["http://yt.prnoid54e44a4bduq5due64jkk7wcnkxcp5kv3juncm7veptjcqudgyd.onion"],
+ "i2p": [],
+ "loki": []
+}
diff --git a/src/instances/facil.json b/src/instances/facil.json
new file mode 100644
index 00000000..798a9cfb
--- /dev/null
+++ b/src/instances/facil.json
@@ -0,0 +1,6 @@
+{
+ "normal": ["https://facilmap.org"],
+ "tor": [],
+ "i2p": [],
+ "loki": []
+}
diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py
index b8970ee8..5edbfb68 100644
--- a/src/instances/get_instances.py
+++ b/src/instances/get_instances.py
@@ -12,6 +12,12 @@ import subprocess
mightyList = {}
+startRegex = "https?:\/{2}(?:[^\s\/]+\.)+"
+endRegex = "(?:\/[^\s\/]+)*\/?"
+torRegex = startRegex + "onion" + endRegex
+i2pRegex = startRegex + "i2p" + endRegex
+lokiRegex = startRegex + "loki" + endRegex
+authRegex = "https?:\/{2}\S+:\S+@(?:[^\s\/]+\.)+[a-zA-Z0-9]+" + endRegex
def filterLastSlash(urlList):
tmp = {}
@@ -65,16 +71,19 @@ def is_cloudflare(url):
instance_bin_masked = instance_bin[:mask]
if cloudflare_bin_masked == instance_bin_masked:
- print(url + ' is ' + Fore.RED + 'cloudflare' + Style.RESET_ALL)
+ print(url + ' is behind ' + Fore.RED + 'cloudflare' + Style.RESET_ALL)
return True
return False
def is_authenticate(url):
try:
+ if re.match(authRegex, url):
+ print(url + ' requires ' + Fore.RED + 'authentication' + Style.RESET_ALL)
+ return True
r = requests.get(url, timeout=5)
if 'www-authenticate' in r.headers:
- print(url + ' is ' + Fore.RED + 'authenticate' + Style.RESET_ALL)
+ print(url + ' requires ' + Fore.RED + 'authentication' + Style.RESET_ALL)
return True
except:
return False
@@ -99,9 +108,26 @@ def invidious():
def piped():
- json_object = json.dumps(mightyList, ensure_ascii=False, indent=2)
- with open('./src/instances/piped.json') as file:
- mightyList['piped'] = json.load(file)
+ r = requests.get(
+ 'https://raw.githubusercontent.com/wiki/TeamPiped/Piped/Instances.md')
+
+ tmp = re.findall(
+ '(?:[^\s\/]+\.)+[a-zA-Z]+ (?:\(Official\) )?\| (https:\/{2}(?:[^\s\/]+\.)+[a-zA-Z]+) \| ', r.text)
+ _list = {}
+ _list['normal'] = []
+ _list['tor'] = []
+ _list['i2p'] = []
+ _list['loki'] = []
+ for item in tmp:
+ try:
+ url = requests.get(item, timeout=5).url
+ if url.strip("/") == item:
+ continue
+ else:
+ _list['normal'].append(url)
+ except:
+ continue
+ mightyList['piped'] = _list
print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Piped')
@@ -110,7 +136,7 @@ def pipedMaterial():
'https://raw.githubusercontent.com/mmjee/Piped-Material/master/README.md')
tmp = re.findall(
- r"\| (https?:\/{2}(?:.+\.)+[a-zA-Z0-9]*) +\|", r.text)
+ r"\| (https?:\/{2}(?:\S+\.)+[a-zA-Z0-9]*) +\|", r.text)
pipedMaterialList = {}
pipedMaterialList['normal'] = []
pipedMaterialList['tor'] = []
@@ -122,6 +148,13 @@ def pipedMaterial():
print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'pipedMaterial')
+def cloudtube():
+ json_object = json.dumps(mightyList, ensure_ascii=False, indent=2)
+ with open('./src/instances/cloudtube.json') as file:
+ mightyList['cloudtube'] = json.load(file)
+ print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'CloudTube')
+
+
def proxitok():
r = requests.get(
'https://raw.githubusercontent.com/wiki/pablouser1/ProxiTok/Public-instances.md')
@@ -156,30 +189,29 @@ def send():
def nitter():
- r = requests.get('https://github.com/zedeus/nitter/wiki/Instances')
- soup = BeautifulSoup(r.text, 'html.parser')
- markdownBody = soup.find(class_='markdown-body')
- tables = markdownBody.find_all('table')
- tables.pop(3)
- tables.pop(3)
+ r = requests.get('https://raw.githubusercontent.com/wiki/zedeus/nitter/Instances.md')
+ tmp = re.findall(
+ r"(?:(?:\| \[(?:\S+\.)+[a-zA-Z]+\]\((https?:\/{2}(?:\S+\.)+[a-zA-Z]+)\/?\) (?:\((?:\S+ ?\S*)\) )? *\| (?:✅|🇩đŸ‡Ē) +\|(?:(?:\n)|(?: (?:❌)|(?: ✅)|(?: ❓)|(?: \[))))|(?:- \[(?:\S+\.)+(?:(?:i2p)|(?:loki))\]\((https?:\/{2}(?:\S+\.)(?:(?:i2p)|(?:loki)))\/?\)))", r.text)
+
nitterList = {}
nitterList['normal'] = []
nitterList['tor'] = []
nitterList['i2p'] = []
nitterList['loki'] = []
- for table in tables:
- tbody = table.find('tbody')
- trs = tbody.find_all('tr')
- for tr in trs:
- td = tr.find('td')
- a = td.find('a')
- url = a.contents[0]
- if url.endswith('.onion'):
- url = 'http://' + url
- nitterList['tor'].append(url)
+ for item in tmp:
+ for i in item:
+ if i == '':
+ continue
else:
- url = 'https://' + url
- nitterList['normal'].append(url)
+ item = i
+ if re.search(torRegex, item):
+ nitterList['tor'].append(item)
+ elif re.search(i2pRegex, item):
+ nitterList['i2p'].append(item)
+ elif re.search(lokiRegex, item):
+ nitterList['loki'].append(item)
+ else:
+ nitterList['normal'].append(item)
mightyList['nitter'] = nitterList
print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Nitter')
@@ -211,7 +243,7 @@ def libreddit():
r"\| \[.*\]\(([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)\)*\|*[A-Z]{0,}.*\|.*\|", r.text)
for item in tmp:
- if re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", item):
+ if re.search(torRegex, item):
libredditList['tor'].append(item)
else:
libredditList['normal'].append(item)
@@ -292,7 +324,7 @@ def quetre():
for item in tmp:
- if re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", item):
+ if re.search(torRegex, item):
_list['tor'].append(item)
else:
_list['normal'].append(item)
@@ -316,7 +348,7 @@ def libremdb():
for item in tmp:
if item.strip() == "":
continue
- if re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", item):
+ if re.search(torRegex, item):
_list['tor'].append(item)
else:
_list['normal'].append(item)
@@ -324,6 +356,19 @@ def libremdb():
mightyList['libremdb'] = _list
print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Libremdb')
+def simpleertube():
+ r = requests.get('https://simple-web.org/instances/simpleertube')
+ _list = {}
+ _list['normal'] = []
+ _list['tor'] = []
+ _list['i2p'] = []
+ _list['loki'] = []
+ for item in r.text.strip().split('\n'):
+ _list['normal'].append('https://' + item)
+
+ mightyList['simpleertube'] = _list
+ print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'SimpleerTube')
+
def simplytranslate():
r = requests.get('https://simple-web.org/instances/simplytranslate')
@@ -381,12 +426,12 @@ def searx_searxng():
searxngList['i2p'] = []
searxngList['loki'] = []
for item in rJson['instances']:
- if re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", item[:-1]):
+ if re.search(torRegex, item[:-1]):
if (rJson['instances'][item].get('generator') == 'searxng'):
searxngList['tor'].append(item[:-1])
else:
searxList['tor'].append(item[:-1])
- elif re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+i2p(?:\/[a-zA-Z0-9]+)*\/?", item[:-1]):
+ elif re.search(torRegex, item[:-1]):
if (rJson['instances'][item].get('generator') == 'searxng'):
searxngList['i2p'].append(item[:-1])
else:
@@ -412,9 +457,9 @@ def whoogle():
whoogleList['i2p'] = []
whoogleList['loki'] = []
for item in tmpList:
- if re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", item):
+ if re.search(torRegex, item):
whoogleList['tor'].append(item)
- elif re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+i2p(?:\/[a-zA-Z0-9]+)*\/?", item):
+ elif re.search(torRegex, item):
whoogleList['i2p'].append(item)
else:
whoogleList['normal'].append(item)
@@ -437,9 +482,9 @@ def librex():
for item in tmp:
if item.strip() == "":
continue
- elif re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", item):
+ elif re.search(torRegex, item):
_list['tor'].append(item)
- elif re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+i2p(?:\/[a-zA-Z0-9]+)*\/?", item):
+ elif re.search(i2pRegex, item):
_list['i2p'].append(item)
else:
_list['normal'].append(item)
@@ -481,16 +526,64 @@ def librarian():
url = item['url']
if url.strip() == "":
continue
- elif re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", url):
+ elif re.search(torRegex, url):
librarianList['tor'].append(url)
- elif re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+i2p(?:\/[a-zA-Z0-9]+)*\/?", url):
+ elif re.search(i2pRegex, url):
librarianList['i2p'].append(url)
+ elif re.search(lokiRegex, url):
+ librarianList['loki'].append(url)
else:
librarianList['normal'].append(url)
mightyList['librarian'] = librarianList
print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Librarian')
+def neuters():
+ json_object = json.dumps(mightyList, ensure_ascii=False, indent=2)
+ with open('./src/instances/neuters.json') as file:
+ mightyList['neuters'] = json.load(file)
+ print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Neuters')
+
+
+def beatbump():
+ json_object = json.dumps(mightyList, ensure_ascii=False, indent=2)
+ with open('./src/instances/beatbump.json') as file:
+ mightyList['beatbump'] = json.load(file)
+ print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Beatbump')
+
+
+def hyperpipe():
+ r = requests.get(
+ 'https://codeberg.org/Hyperpipe/pages/raw/branch/main/api/frontend.json')
+ rJson = json.loads(r.text)
+ hyperpipeList = {}
+ hyperpipeList['normal'] = []
+ hyperpipeList['tor'] = []
+ hyperpipeList['i2p'] = []
+ hyperpipeList['loki'] = []
+ for item in rJson:
+ url = item['url']
+ if url.strip() == "":
+ continue
+ elif re.search(torRegex, url):
+ hyperpipeList['tor'].append(url)
+ elif re.search(i2pRegex, url):
+ hyperpipeList['i2p'].append(url)
+ elif re.search(lokiRegex, url):
+ hyperpipeList['loki'].append(url)
+ else:
+ hyperpipeList['normal'].append(url)
+ mightyList['hyperpipe'] = hyperpipeList
+ print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Hyperpipe')
+
+
+def facil():
+ json_object = json.dumps(mightyList, ensure_ascii=False, indent=2)
+ with open('./src/instances/facil.json') as file:
+ mightyList['facil'] = json.load(file)
+ print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'FacilMap')
+
+
def peertube():
r = requests.get(
'https://instances.joinpeertube.org/api/v1/instances?start=0&count=1045&sort=-createdAt')
@@ -515,6 +608,7 @@ def isValid(url): # This code is contributed by avanitrachhadiya2155
invidious()
piped()
pipedMaterial()
+cloudtube()
proxitok()
send()
nitter()
@@ -532,6 +626,11 @@ whoogle()
librex()
rimgo()
librarian()
+neuters()
+beatbump()
+hyperpipe()
+facil()
+simpleertube()
mightyList = filterLastSlash(mightyList)
cloudflare = []
diff --git a/src/instances/neuters.json b/src/instances/neuters.json
new file mode 100644
index 00000000..9e224a52
--- /dev/null
+++ b/src/instances/neuters.json
@@ -0,0 +1,6 @@
+{
+ "normal": ["https://neuters.de"],
+ "tor": [],
+ "i2p": [],
+ "loki": []
+}
diff --git a/src/instances/piped.json b/src/instances/piped.json
deleted file mode 100644
index 2f742ff9..00000000
--- a/src/instances/piped.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "normal": [
- "https://piped.kavin.rocks",
- "https://piped.tokhmi.xyz",
- "https://piped.moomoo.me",
- "https://il.ax",
- "https://piped.syncpundit.com",
- "https://piped.mha.fi",
- "https://piped.shimul.me",
- "https://pipedus.palash.dev/",
- "https://yt.jae.fi",
- "https://piped.mint.lgbt",
- "https://piped.privacy.com.de",
- "https://piped.esmailelbob.xyz"
- ],
- "tor": [
- "http://piped2bbch4xslbl2ckr6k62q56kon56ffowxaqzy42ai22a4sash3ad.onion"
- ],
- "i2p": [],
- "loki": []
-} \ No newline at end of file
diff --git a/src/manifest.json b/src/manifest.json
index 68515525..cc804f9d 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -1,81 +1,72 @@
{
- "name": "__MSG_extensionName__",
- "description": "__MSG_extensionDescription__",
- "version": "2.2.1",
- "manifest_version": 2,
- "browser_specific_settings": {
- "gecko": {
- "id": "7esoorv3@alefvanoon.anonaddy.me",
- "strict_min_version": "67.0"
- }
- },
- "background": {
- "page": "pages/background/background.html",
- "persistent": true
- },
- "icons": {
- "16": "assets/images/libredirect-16.png",
- "32": "assets/images/libredirect-32.png",
- "48": "assets/images/libredirect-48.png",
- "128": "assets/images/libredirect-128.png"
- },
- "permissions": [
- "webRequest",
- "webRequestBlocking",
- "storage",
- "unlimitedStorage",
- "cookies",
- "clipboardWrite",
- "contextMenus",
- "<all_urls>"
- ],
- "browser_action": {
- "default_title": "__MSG_extensionName__",
- "browser_style": false,
- "default_popup": "pages/popup/popup.html",
- "default_icon": {
- "16": "assets/images/libredirect-16.png",
- "32": "assets/images/libredirect-32.png",
- "48": "assets/images/libredirect-48.png",
- "128": "assets/images/libredirect-128.png"
- }
- },
- "options_ui": {
- "page": "pages/options/index.html",
- "browser_style": false,
- "open_in_tab": true
- },
- "chrome_settings_overrides": {
- "search_provider": {
- "name": "__MSG_extensionName__",
- "keyword": "libredirect",
- "favicon_url": "https://raw.githubusercontent.com/libredirect/libredirect/master/src/assets/images/libredirect-16.png",
- "search_url": "https://search.libredirect.invalid/?q={searchTerms}",
- "encoding": "UTF-8",
- "is_default": false
- }
- },
- "commands": {
- "switchInstance": {
- "suggested_key": {
- "default": "Alt+Shift+L"
- },
- "description": "__MSG_switchInstance__"
- },
- "copyRaw": {
- "suggested_key": {
- "default": "Alt+Shift+C"
- },
- "description": "Copies the original link. Ex: Copies the original twitter link while in the nitter website"
- },
- "unify": {
- "suggested_key": {
- "default": "Alt+Shift+U"
- },
- "description": "Copies the preferences (cookies, localStorage) from the current opened instance and copy them to all the other selected instances"
- }
- },
- "default_locale": "en",
- "update_url": "https://raw.githubusercontent.com/libredirect/libredirect/master/src/updates/updates.xml",
- "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAroWDSoSRZ1scj+eJRrvnhJbrqXTKnhQuxs6+AJg16sqr0bsMdFV+MSY4i4xnK+K5WOYkBliWXgUyk/wzicoAjOnSJddrL/Md4FuWHI2NVIkrlsLOrYkygi5OLqGPajRH/w8Cdmg7KzEpXe/OnYV0/qS8li8huEdTzdeLdhfbiVl1j3DOr4OJALQ7mPeeNFHFo/oVQ+OkSezWLezA5jUGfhtzPYV6u1TXzX7lCi8E/BbDbwkvvXOMcjXCv08kjdLOY2djCA2a6zr0xAb3q8DlexAMZ8vMof7AQRFtBKhLc9n9VFoipMMdBOVQQj/eIcRILBrmkcZNnJxFKiHNJ+NcZQIDAQAB"
-} \ No newline at end of file
+ "name": "__MSG_extensionName__",
+ "description": "__MSG_extensionDescription__",
+ "version": "2.2.1",
+ "manifest_version": 2,
+ "browser_specific_settings": {
+ "gecko": {
+ "id": "7esoorv3@alefvanoon.anonaddy.me",
+ "strict_min_version": "67.0"
+ }
+ },
+ "background": {
+ "page": "pages/background/background.html",
+ "persistent": true
+ },
+ "icons": {
+ "16": "assets/images/libredirect-16.png",
+ "32": "assets/images/libredirect-32.png",
+ "48": "assets/images/libredirect-48.png",
+ "128": "assets/images/libredirect-128.png"
+ },
+ "permissions": ["webRequest", "webRequestBlocking", "storage", "unlimitedStorage", "cookies", "clipboardWrite", "contextMenus", "<all_urls>"],
+ "browser_action": {
+ "default_title": "__MSG_extensionName__",
+ "browser_style": false,
+ "default_popup": "pages/popup/popup.html",
+ "default_icon": {
+ "16": "assets/images/libredirect-16.png",
+ "32": "assets/images/libredirect-32.png",
+ "48": "assets/images/libredirect-48.png",
+ "128": "assets/images/libredirect-128.png"
+ }
+ },
+ "options_ui": {
+ "page": "pages/options/index.html",
+ "browser_style": false,
+ "open_in_tab": true
+ },
+ "chrome_settings_overrides": {
+ "search_provider": {
+ "name": "__MSG_extensionName__",
+ "keyword": "libredirect",
+ "favicon_url": "https://raw.githubusercontent.com/libredirect/libredirect/master/src/assets/images/libredirect-16.png",
+ "search_url": "https://search.libredirect.invalid/?q={searchTerms}",
+ "encoding": "UTF-8",
+ "is_default": false
+ }
+ },
+ "commands": {
+ "switchInstance": {
+ "suggested_key": {
+ "default": "Alt+Shift+L"
+ },
+ "description": "__MSG_switchInstance__"
+ },
+ "copyRaw": {
+ "suggested_key": {
+ "default": "Alt+Shift+C"
+ },
+ "description": "Copies the original link. Ex: Copies the original twitter link while in the nitter website"
+ },
+ "unify": {
+ "suggested_key": {
+ "default": "Alt+Shift+U"
+ },
+ "description": "Copies the preferences (cookies, localStorage) from the current opened instance and copy them to all the other selected instances"
+ }
+ },
+ "default_locale": "en",
+ "update_url": "https://raw.githubusercontent.com/libredirect/libredirect/master/src/updates/updates.xml",
+ "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAroWDSoSRZ1scj+eJRrvnhJbrqXTKnhQuxs6+AJg16sqr0bsMdFV+MSY4i4xnK+K5WOYkBliWXgUyk/wzicoAjOnSJddrL/Md4FuWHI2NVIkrlsLOrYkygi5OLqGPajRH/w8Cdmg7KzEpXe/OnYV0/qS8li8huEdTzdeLdhfbiVl1j3DOr4OJALQ7mPeeNFHFo/oVQ+OkSezWLezA5jUGfhtzPYV6u1TXzX7lCi8E/BbDbwkvvXOMcjXCv08kjdLOY2djCA2a6zr0xAb3q8DlexAMZ8vMof7AQRFtBKhLc9n9VFoipMMdBOVQQj/eIcRILBrmkcZNnJxFKiHNJ+NcZQIDAQAB"
+}
diff --git a/src/pages/background/background.html b/src/pages/background/background.html
index c9ae2a81..542df18b 100644
--- a/src/pages/background/background.html
+++ b/src/pages/background/background.html
@@ -1,9 +1,7 @@
<!DOCTYPE html>
<html>
-
-<head>
- <meta charset="utf-8" />
- <script type="module" src="background.js"></script>
-</head>
-
-</html> \ No newline at end of file
+ <head>
+ <meta charset="utf-8" />
+ <script type="module" src="background.js"></script>
+ </head>
+</html>
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 293a2c84..359a912d 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -1,263 +1,252 @@
-"use strict";
+"use strict"
-import generalHelper from "../../assets/javascripts/general.js";
-import utils from "../../assets/javascripts/utils.js";
+import generalHelper from "../../assets/javascripts/general.js"
+import utils from "../../assets/javascripts/utils.js"
-import youtubeHelper from "../../assets/javascripts/youtube/youtube.js";
-import youtubeMusicHelper from "../../assets/javascripts/youtubeMusic.js";
-import twitterHelper from "../../assets/javascripts/twitter.js";
-import instagramHelper from "../../assets/javascripts/instagram.js";
-import redditHelper from "../../assets/javascripts/reddit.js";
-import searchHelper from "../../assets/javascripts/search.js";
-import translateHelper from "../../assets/javascripts/translate/translate.js";
-import mapsHelper from "../../assets/javascripts/maps.js";
-import wikipediaHelper from "../../assets/javascripts/wikipedia.js";
-import mediumHelper from "../../assets/javascripts/medium.js";
-import quoraHelper from "../../assets/javascripts/quora.js";
-import libremdbHelper from "../../assets/javascripts/imdb.js";
-import reutersHelper from "../../assets/javascripts/reuters.js";
-import imgurHelper from "../../assets/javascripts/imgur.js";
-import tiktokHelper from "../../assets/javascripts/tiktok.js";
-import sendTargetsHelper from "../../assets/javascripts/sendTargets.js";
-import peertubeHelper from "../../assets/javascripts/peertube.js";
-import lbryHelper from "../../assets/javascripts/lbry.js";
+import youtubeHelper from "../../assets/javascripts/youtube/youtube.js"
+import youtubeMusicHelper from "../../assets/javascripts/youtubeMusic.js"
+import twitterHelper from "../../assets/javascripts/twitter.js"
+import instagramHelper from "../../assets/javascripts/instagram.js"
+import redditHelper from "../../assets/javascripts/reddit.js"
+import searchHelper from "../../assets/javascripts/search.js"
+import translateHelper from "../../assets/javascripts/translate/translate.js"
+import mapsHelper from "../../assets/javascripts/maps.js"
+import wikipediaHelper from "../../assets/javascripts/wikipedia.js"
+import mediumHelper from "../../assets/javascripts/medium.js"
+import quoraHelper from "../../assets/javascripts/quora.js"
+import libremdbHelper from "../../assets/javascripts/imdb.js"
+import reutersHelper from "../../assets/javascripts/reuters.js"
+import imgurHelper from "../../assets/javascripts/imgur.js"
+import tiktokHelper from "../../assets/javascripts/tiktok.js"
+import sendTargetsHelper from "../../assets/javascripts/sendTargets.js"
+import peertubeHelper from "../../assets/javascripts/peertube.js"
+import lbryHelper from "../../assets/javascripts/lbry.js"
+window.browser = window.browser || window.chrome
-window.browser = window.browser || window.chrome;
+browser.runtime.onInstalled.addListener(details => {
+ function initDefaults() {
+ fetch("/instances/blacklist.json")
+ .then(response => response.text())
+ .then(async data => {
+ browser.storage.local.clear(() => {
+ browser.storage.local.set({ cloudflareBlackList: JSON.parse(data).cloudflare }, () => {
+ browser.storage.local.set({ authenticateBlackList: JSON.parse(data).authenticate }, () => {
+ generalHelper.initDefaults()
+ youtubeHelper.initDefaults()
+ youtubeMusicHelper.initDefaults()
+ twitterHelper.initDefaults()
+ instagramHelper.initDefaults()
+ mapsHelper.initDefaults()
+ searchHelper.initDefaults()
+ translateHelper.initDefaults()
+ mediumHelper.initDefaults()
+ quoraHelper.initDefaults()
+ libremdbHelper.initDefaults()
+ reutersHelper.initDefaults()
+ redditHelper.initDefaults()
+ wikipediaHelper.initDefaults()
+ imgurHelper.initDefaults()
+ tiktokHelper.initDefaults()
+ sendTargetsHelper.initDefaults()
+ peertubeHelper.initDefaults()
+ lbryHelper.initDefaults()
+ })
+ })
+ })
+ })
+ }
+ if (details.reason == "install") initDefaults()
-browser.runtime.onInstalled.addListener(
- details => {
- function initDefaults() {
- fetch('/instances/blacklist.json').then(response => response.text()).then(async data => {
- browser.storage.local.clear(
- () => {
- browser.storage.local.set({ cloudflareBlackList: JSON.parse(data).cloudflare },
- () => {
- browser.storage.local.set({ authenticateBlackList: JSON.parse(data).authenticate },
- () => {
- generalHelper.initDefaults();
- youtubeHelper.initDefaults();
- youtubeMusicHelper.initDefaults();
- twitterHelper.initDefaults();
- instagramHelper.initDefaults();
- mapsHelper.initDefaults();
- searchHelper.initDefaults();
- translateHelper.initDefaults();
- mediumHelper.initDefaults();
- quoraHelper.initDefaults();
- libremdbHelper.initDefaults();
- reutersHelper.initDefaults();
- redditHelper.initDefaults();
- wikipediaHelper.initDefaults();
- imgurHelper.initDefaults();
- tiktokHelper.initDefaults();
- sendTargetsHelper.initDefaults();
- peertubeHelper.initDefaults();
- lbryHelper.initDefaults();
- })
- })
- });
- })
- };
- if (details.reason == 'install') initDefaults();
+ // if (details.reason == 'install' || (details.reason == "update" && details.previousVersion != browser.runtime.getManifest().version)) {
+ // if (details.reason == "update")
+ // browser.storage.local.get(null, r => {
+ // if (r.theme) {
+ // const old = encodeURIComponent(JSON.stringify(r))
+ // browser.tabs.create({ url: browser.runtime.getURL(`/pages/background/reset_warning.html?data=${old}`) });
+ // }
+ // initDefaults();
+ // })
+ // else initDefaults();
+ // }
+})
- // if (details.reason == 'install' || (details.reason == "update" && details.previousVersion != browser.runtime.getManifest().version)) {
- // if (details.reason == "update")
- // browser.storage.local.get(null, r => {
- // if (r.theme) {
- // const old = encodeURIComponent(JSON.stringify(r))
- // browser.tabs.create({ url: browser.runtime.getURL(`/pages/background/reset_warning.html?data=${old}`) });
- // }
- // initDefaults();
- // })
- // else initDefaults();
- // }
- }
-)
-
-youtubeHelper.pasteInvidiousCookies();
-translateHelper.pasteSimplyTranslateCookies();
-twitterHelper.pasteNitterCookies();
-wikipediaHelper.pasteWikilessCookies();
-searchHelper.pasteSearxCookies();
-searchHelper.pasteSearxngCookies();
-searchHelper.pasteLibrexCookies();
-redditHelper.pasteLibredditCookies();
-redditHelper.pasteTedditCookies();
-tiktokHelper.pasteProxiTokCookies();
+youtubeHelper.pasteInvidiousCookies()
+translateHelper.pasteSimplyTranslateCookies()
+twitterHelper.pasteNitterCookies()
+wikipediaHelper.pasteWikilessCookies()
+searchHelper.pasteSearxCookies()
+searchHelper.pasteSearxngCookies()
+searchHelper.pasteLibrexCookies()
+redditHelper.pasteLibredditCookies()
+redditHelper.pasteTedditCookies()
+tiktokHelper.pasteProxiTokCookies()
-
-let BYPASSTABs = [];
+let BYPASSTABs = []
browser.webRequest.onBeforeRequest.addListener(
- details => {
- const url = new URL(details.url);
- if (new RegExp(/^chrome-extension:\/{2}.*\/instances\/.*.json$/).test(url.href) && details.type == 'xmlhttprequest') return;
- let initiator;
- try {
- if (details.originUrl) initiator = new URL(details.originUrl);
- else if (details.initiator) initiator = new URL(details.initiator);
- }
- catch { return null; }
+ details => {
+ const url = new URL(details.url)
+ if (new RegExp(/^chrome-extension:\/{2}.*\/instances\/.*.json$/).test(url.href) && details.type == "xmlhttprequest") return
+ let initiator
+ try {
+ if (details.originUrl) initiator = new URL(details.originUrl)
+ else if (details.initiator) initiator = new URL(details.initiator)
+ } catch {
+ return null
+ }
- let newUrl = youtubeMusicHelper.redirect(url, details.type)
- if (!newUrl) newUrl = youtubeHelper.redirect(url, details.type, initiator)
- if (!newUrl) newUrl = twitterHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = instagramHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = mapsHelper.redirect(url, initiator);
- if (!newUrl) newUrl = redditHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = mediumHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = quoraHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = libremdbHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = reutersHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = imgurHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = tiktokHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = sendTargetsHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = peertubeHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = lbryHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = translateHelper.redirect(url);
- if (!newUrl) newUrl = searchHelper.redirect(url)
- if (!newUrl) newUrl = wikipediaHelper.redirect(url);
+ let newUrl = youtubeMusicHelper.redirect(url, details.type)
+ if (!newUrl) newUrl = youtubeHelper.redirect(url, details.type, initiator)
+ if (!newUrl) newUrl = twitterHelper.redirect(url, details.type, initiator)
+ if (!newUrl) newUrl = instagramHelper.redirect(url, details.type, initiator)
+ if (!newUrl) newUrl = mapsHelper.redirect(url, initiator)
+ if (!newUrl) newUrl = redditHelper.redirect(url, details.type, initiator)
+ if (!newUrl) newUrl = mediumHelper.redirect(url, details.type, initiator)
+ if (!newUrl) newUrl = quoraHelper.redirect(url, details.type, initiator)
+ if (!newUrl) newUrl = libremdbHelper.redirect(url, details.type, initiator)
+ if (!newUrl) newUrl = reutersHelper.redirect(url, details.type, initiator)
+ if (!newUrl) newUrl = imgurHelper.redirect(url, details.type, initiator)
+ if (!newUrl) newUrl = tiktokHelper.redirect(url, details.type, initiator)
+ if (!newUrl) newUrl = sendTargetsHelper.redirect(url, details.type, initiator)
+ if (!newUrl) newUrl = peertubeHelper.redirect(url, details.type, initiator)
+ if (!newUrl) newUrl = lbryHelper.redirect(url, details.type, initiator)
+ if (!newUrl) newUrl = translateHelper.redirect(url)
+ if (!newUrl) newUrl = searchHelper.redirect(url)
+ if (!newUrl) newUrl = wikipediaHelper.redirect(url)
- if (
- details.frameAncestors && details.frameAncestors.length > 0 &&
- generalHelper.isException(new URL(details.frameAncestors[0].url))
- ) newUrl = null;
+ if (details.frameAncestors && details.frameAncestors.length > 0 && generalHelper.isException(new URL(details.frameAncestors[0].url))) newUrl = null
- if (generalHelper.isException(url)) newUrl = 'BYPASSTAB';
- if (BYPASSTABs.includes(details.tabId)) newUrl = null;
+ if (generalHelper.isException(url)) newUrl = "BYPASSTAB"
+ if (BYPASSTABs.includes(details.tabId)) newUrl = null
- if (newUrl) {
- if (newUrl === 'CANCEL') {
- console.log(`Canceled ${url}`);
- return { cancel: true };
- }
- if (newUrl === 'BYPASSTAB') {
- console.log(`Bypassed ${details.tabId} ${url}`);
- if (!BYPASSTABs.includes(details.tabId)) BYPASSTABs.push(details.tabId);
- return null;
- }
- console.info("Redirecting", url.href, "=>", newUrl);
- return { redirectUrl: newUrl };
- }
- return null;
- },
- { urls: ["<all_urls>"], },
- ["blocking"]
-);
+ if (newUrl) {
+ if (newUrl === "CANCEL") {
+ console.log(`Canceled ${url}`)
+ return { cancel: true }
+ }
+ if (newUrl === "BYPASSTAB") {
+ console.log(`Bypassed ${details.tabId} ${url}`)
+ if (!BYPASSTABs.includes(details.tabId)) BYPASSTABs.push(details.tabId)
+ return null
+ }
+ console.info("Redirecting", url.href, "=>", newUrl)
+ return { redirectUrl: newUrl }
+ }
+ return null
+ },
+ { urls: ["<all_urls>"] },
+ ["blocking"]
+)
-browser.tabs.onRemoved.addListener(
- tabId => {
- const i = BYPASSTABs.indexOf(tabId);
- if (i > -1) {
- BYPASSTABs.splice(i, 1);
- console.log("Removed BYPASSTABs", tabId);
- }
- }
-);
+browser.tabs.onRemoved.addListener(tabId => {
+ const i = BYPASSTABs.indexOf(tabId)
+ if (i > -1) {
+ BYPASSTABs.splice(i, 1)
+ console.log("Removed BYPASSTABs", tabId)
+ }
+})
browser.webRequest.onHeadersReceived.addListener(
- e => {
- let response = youtubeHelper.removeXFrameOptions(e);
- if (!response) response = twitterHelper.removeXFrameOptions(e);
- return response;
- },
- { urls: ["<all_urls>"] },
- ["blocking", "responseHeaders"]
-);
+ e => {
+ let response = youtubeHelper.removeXFrameOptions(e)
+ if (!response) response = twitterHelper.removeXFrameOptions(e)
+ return response
+ },
+ { urls: ["<all_urls>"] },
+ ["blocking", "responseHeaders"]
+)
async function redirectOfflineInstance(url, tabId) {
- let newUrl = await youtubeHelper.switchInstance(url);
- if (!newUrl) newUrl = await twitterHelper.switchInstance(url);
- if (!newUrl) newUrl = await instagramHelper.switchInstance(url);
- if (!newUrl) newUrl = await redditHelper.switchInstance(url);
- if (!newUrl) newUrl = await searchHelper.switchInstance(url);
- if (!newUrl) newUrl = await translateHelper.switchInstance(url);
- if (!newUrl) newUrl = await mediumHelper.switchInstance(url);
- if (!newUrl) newUrl = await quoraHelper.switchInstance(url);
- if (!newUrl) newUrl = await libremdbHelper.switchInstance(url);
- if (!newUrl) newUrl = await tiktokHelper.switchInstance(url);
- if (!newUrl) newUrl = await imgurHelper.switchInstance(url);
- if (!newUrl) newUrl = await wikipediaHelper.switchInstance(url);
- if (!newUrl) newUrl = await peertubeHelper.switchInstance(url);
- if (!newUrl) newUrl = await lbryHelper.switchInstance(url);
+ let newUrl = await youtubeHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await twitterHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await instagramHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await redditHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await searchHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await translateHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await mediumHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await quoraHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await libremdbHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await tiktokHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await imgurHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await wikipediaHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await peertubeHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await lbryHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await youtubeMusicHelper.switchInstance(url, true)
- if (newUrl) {
- if (counter >= 5) {
- browser.tabs.update(tabId, { url: `/pages/errors/instance_offline.html?url=${encodeURIComponent(newUrl)}` });
- counter = 0;
- } else {
- browser.tabs.update(tabId, { url: newUrl });
- counter++;
- }
- }
+ if (newUrl) {
+ if (counter >= 5) {
+ browser.tabs.update(tabId, {
+ url: `/pages/errors/instance_offline.html?url=${encodeURIComponent(newUrl)}`,
+ })
+ counter = 0
+ } else {
+ browser.tabs.update(tabId, { url: newUrl })
+ counter++
+ }
+ }
}
-let counter = 0;
+let counter = 0
function isAutoRedirect() {
- return new Promise(resolve => browser.storage.local.get('autoRedirect', r => resolve(r.autoRedirect == true)))
+ return new Promise(resolve => browser.storage.local.get("autoRedirect", r => resolve(r.autoRedirect == true)))
}
browser.webRequest.onResponseStarted.addListener(
- async details => {
- if (!await isAutoRedirect()) return null;
- if (details.type == 'main_frame' && details.statusCode >= 500) redirectOfflineInstance(new URL(details.url), details.tabId);
- },
- { urls: ["<all_urls>"] }
+ async details => {
+ if (!(await isAutoRedirect())) return null
+ if (details.type == "main_frame" && details.statusCode >= 500) redirectOfflineInstance(new URL(details.url), details.tabId)
+ },
+ { urls: ["<all_urls>"] }
)
browser.webRequest.onErrorOccurred.addListener(
- async details => {
- if (!await isAutoRedirect()) return;
- if (details.type == 'main_frame') redirectOfflineInstance(new URL(details.url), details.tabId);
- },
- { urls: ["<all_urls>"] }
+ async details => {
+ if (!(await isAutoRedirect())) return
+ if (details.type == "main_frame") redirectOfflineInstance(new URL(details.url), details.tabId)
+ },
+ { urls: ["<all_urls>"] }
)
-browser.commands.onCommand.addListener(
- command => {
- if (command === 'switchInstance') utils.switchInstance();
- else if (command == 'copyRaw') utils.copyRaw();
- else if (command == 'unify') utils.unify();
- }
-)
+browser.commands.onCommand.addListener(command => {
+ if (command === "switchInstance") utils.switchInstance()
+ else if (command == "copyRaw") utils.copyRaw()
+ else if (command == "unify") utils.unify()
+})
browser.contextMenus.create({
- id: "settings",
- title: browser.i18n.getMessage("Settings"),
- contexts: ["browser_action"]
-});
+ id: "settings",
+ title: browser.i18n.getMessage("Settings"),
+ contexts: ["browser_action"],
+})
browser.contextMenus.create({
- id: "switchInstance",
- title: browser.i18n.getMessage("switchInstance"),
- contexts: ["browser_action"]
-});
+ id: "switchInstance",
+ title: browser.i18n.getMessage("switchInstance"),
+ contexts: ["browser_action"],
+})
browser.contextMenus.create({
- id: "copyRaw",
- title: browser.i18n.getMessage("copyRaw"),
- contexts: ["browser_action"]
-});
+ id: "copyRaw",
+ title: browser.i18n.getMessage("copyRaw"),
+ contexts: ["browser_action"],
+})
browser.contextMenus.create({
- id: "unify",
- title: browser.i18n.getMessage("unifySettings"),
- contexts: ["browser_action"]
-});
-
+ id: "unify",
+ title: browser.i18n.getMessage("unifySettings"),
+ contexts: ["browser_action"],
+})
-browser.contextMenus.onClicked.addListener(
- (info) => {
- if (info.menuItemId == 'switchInstance') utils.switchInstance();
- else if (info.menuItemId == 'settings') browser.runtime.openOptionsPage()
- else if (info.menuItemId == 'copyRaw') utils.copyRaw();
- else if (info.menuItemId == 'unify') utils.unify();
- }
-);
+browser.contextMenus.onClicked.addListener(info => {
+ if (info.menuItemId == "switchInstance") utils.switchInstance()
+ else if (info.menuItemId == "settings") browser.runtime.openOptionsPage()
+ else if (info.menuItemId == "copyRaw") utils.copyRaw()
+ else if (info.menuItemId == "unify") utils.unify()
+})
browser.runtime.onMessage.addListener((message, sender, sendResponse) => {
- if (message.function === 'unify') utils.unify(false).then(r => sendResponse({ response: r }))
- return true;
-});
+ if (message.function === "unify") utils.unify(false).then(r => sendResponse({ response: r }))
+ return true
+})
-browser.storage.local.set({"version": browser.runtime.getManifest().version})
+browser.storage.local.set({ version: browser.runtime.getManifest().version })
diff --git a/src/pages/background/incognito.html b/src/pages/background/incognito.html
index 7b1c0ee1..227d99e4 100644
--- a/src/pages/background/incognito.html
+++ b/src/pages/background/incognito.html
@@ -1,37 +1,35 @@
<!DOCTYPE html>
<html>
+ <head>
+ <meta charset="utf-8" />
+ <meta charset="UTF-8" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+ <title data-localise="__MSG_instanceIsOff__">Initializing Cookies</title>
+ <link href="../stylesheets/styles.css" rel="stylesheet" />
+ <style>
+ body {
+ margin: 0;
+ padding: 0;
+ height: 100vh;
+ width: 100vw;
+ flex-wrap: wrap;
+ justify-content: center;
+ align-items: center;
+ font-size: 30px;
+ display: flex;
+ }
-<head>
- <meta charset="utf-8" />
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- <title data-localise="__MSG_instanceIsOff__">Initializing Cookies</title>
- <link href="../stylesheets/styles.css" rel="stylesheet" />
- <style>
- body {
- margin: 0;
- padding: 0;
- height: 100vh;
- width: 100vw;
- flex-wrap: wrap;
- justify-content: center;
- align-items: center;
- font-size: 30px;
- display: flex;
- }
+ div {
+ text-align: center;
+ }
+ </style>
+ </head>
- div {
- text-align: center;
- }
- </style>
-</head>
-
-<body>
- <div>
- <p>Initializing Cookies...</p>
- </div>
- <script type="module" src="incognito.js"></script>
-</body>
-
-</html> \ No newline at end of file
+ <body>
+ <div>
+ <p>Initializing Cookies...</p>
+ </div>
+ <script type="module" src="incognito.js"></script>
+ </body>
+</html>
diff --git a/src/pages/background/incognito.js b/src/pages/background/incognito.js
index f42eadcf..c7ed2b7d 100644
--- a/src/pages/background/incognito.js
+++ b/src/pages/background/incognito.js
@@ -1,22 +1,22 @@
-import youtubeHelper from "../../assets/javascripts/youtube/youtube.js";
-import twitterHelper from "../../assets/javascripts/twitter.js";
-import redditHelper from "../../assets/javascripts/reddit.js";
-import searchHelper from "../../assets/javascripts/search.js";
-import translateHelper from "../../assets/javascripts/translate/translate.js";
-import wikipediaHelper from "../../assets/javascripts/wikipedia.js";
-import tiktokHelper from "../../assets/javascripts/tiktok.js";
+import youtubeHelper from "../../assets/javascripts/youtube/youtube.js"
+import twitterHelper from "../../assets/javascripts/twitter.js"
+import redditHelper from "../../assets/javascripts/reddit.js"
+import searchHelper from "../../assets/javascripts/search.js"
+import translateHelper from "../../assets/javascripts/translate/translate.js"
+import wikipediaHelper from "../../assets/javascripts/wikipedia.js"
+import tiktokHelper from "../../assets/javascripts/tiktok.js"
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-await youtubeHelper.pasteInvidiousCookies();
-await translateHelper.pasteSimplyTranslateCookies();
-await twitterHelper.pasteNitterCookies();
-await wikipediaHelper.pasteWikilessCookies();
-await searchHelper.pasteSearxCookies();
-await searchHelper.pasteSearxngCookies();
-await searchHelper.pasteLibrexCookies();
-await redditHelper.pasteLibredditCookies();
-await redditHelper.pasteTedditCookies();
-await tiktokHelper.pasteProxiTokCookies();
+await youtubeHelper.pasteInvidiousCookies()
+await translateHelper.pasteSimplyTranslateCookies()
+await twitterHelper.pasteNitterCookies()
+await wikipediaHelper.pasteWikilessCookies()
+await searchHelper.pasteSearxCookies()
+await searchHelper.pasteSearxngCookies()
+await searchHelper.pasteLibrexCookies()
+await redditHelper.pasteLibredditCookies()
+await redditHelper.pasteTedditCookies()
+await tiktokHelper.pasteProxiTokCookies()
window.close()
diff --git a/src/pages/background/reset_warning.html b/src/pages/background/reset_warning.html
index d2d493e0..f1881ed8 100644
--- a/src/pages/background/reset_warning.html
+++ b/src/pages/background/reset_warning.html
@@ -1,66 +1,59 @@
<!DOCTYPE html>
<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+ <title data-localise="__MSG_instanceIsOff__">Reset Warning</title>
+ <link href="../stylesheets/styles.css" rel="stylesheet" />
+ <style>
+ body {
+ margin: 0;
+ padding: 0;
+ height: 100vh;
+ width: 100vw;
+ flex-wrap: wrap;
+ justify-content: center;
+ align-items: center;
+ font-size: 30px;
+ display: flex;
+ }
-<head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- <title data-localise="__MSG_instanceIsOff__">Reset Warning</title>
- <link href="../stylesheets/styles.css" rel="stylesheet" />
- <style>
- body {
- margin: 0;
- padding: 0;
- height: 100vh;
- width: 100vw;
- flex-wrap: wrap;
- justify-content: center;
- align-items: center;
- font-size: 30px;
- display: flex;
- }
+ div {
+ width: 80%;
+ }
- div {
- width: 80%;
- }
+ div.logo {
+ display: flex;
+ }
- div.logo {
- display: flex;
- }
+ img {
+ width: 90px;
+ height: auto;
+ }
+ </style>
+ </head>
- img {
- width: 90px;
- height: auto;
- }
- </style>
+ <body>
+ <div>
+ <div class="logo">
+ <img src="/assets/images/libredirect.svg" alt="LibRedirect icon" />
+ <h1>LibRedirect</h1>
+ </div>
-</head>
+ <p data-localise="__MSG_instanceOffline__">All settings have been reset as they're incompatible with the previous version.</p>
+ <p>Sorry for the inconvenience, but we're going in a fast development process and can't support nor convert older settings. It will reach a stable plateau though.</p>
-<body>
- <div>
- <div class="logo">
- <img src="/assets/images/libredirect.svg" alt="LibRedirect icon">
- <h1>LibRedirect</h1>
- </div>
-
- <p data-localise="__MSG_instanceOffline__">All settings have been reset as they're incompatible with the
- previous version.</p>
- <p>Sorry for the inconvenience, but we're going in a fast development process and can't
- support nor convert older settings. It will reach a stable plateau though.</p>
-
-
- <a id="export-settings" class="button button-inline">
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px"
- fill="currentColor">
- <path
- d="M10.09 15.59L11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z">
- </path>
- </svg>
- &nbsp;
- <x data-localise="__MSG_exportSettings__">Export Settings</x>
- </a>
- </div>
-</body>
-<script src="reset_warning.js"></script>
-
-</html> \ No newline at end of file
+ <a id="export-settings" class="button button-inline">
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
+ <path
+ d="M10.09 15.59L11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
+ ></path>
+ </svg>
+ &nbsp;
+ <x data-localise="__MSG_exportSettings__">Export Settings</x>
+ </a>
+ </div>
+ </body>
+ <script src="reset_warning.js"></script>
+</html>
diff --git a/src/pages/background/reset_warning.js b/src/pages/background/reset_warning.js
index 15e3a594..9ce49c9a 100644
--- a/src/pages/background/reset_warning.js
+++ b/src/pages/background/reset_warning.js
@@ -1,11 +1,7 @@
-let params = new URLSearchParams(location.search);
+let params = new URLSearchParams(location.search)
-const resultString = JSON.stringify(
- JSON.parse(params.get('data')),
- null,
- ' '
-);
+const resultString = JSON.stringify(JSON.parse(params.get("data")), null, " ")
-let exportSettingsElement = document.getElementById("export-settings");
-exportSettingsElement.href = 'data:application/json;base64,' + btoa(resultString);
-exportSettingsElement.download = 'libredirect-settings.json';
+let exportSettingsElement = document.getElementById("export-settings")
+exportSettingsElement.href = "data:application/json;base64," + btoa(resultString)
+exportSettingsElement.download = "libredirect-settings.json"
diff --git a/src/pages/errors/instance_offline.html b/src/pages/errors/instance_offline.html
index 3b7e46d5..4f27445c 100644
--- a/src/pages/errors/instance_offline.html
+++ b/src/pages/errors/instance_offline.html
@@ -1,41 +1,38 @@
<!DOCTYPE html>
<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+ <title data-localise="__MSG_instanceIsOff__">Instance is offline</title>
+ <link href="../stylesheets/styles.css" rel="stylesheet" />
+ <style>
+ body {
+ margin: 0;
+ padding: 0;
+ height: 100vh;
+ width: 100vw;
+ flex-wrap: wrap;
+ justify-content: center;
+ align-items: center;
+ font-size: 30px;
+ display: flex;
+ }
-<head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- <title data-localise="__MSG_instanceIsOff__">Instance is offline</title>
- <link href="../stylesheets/styles.css" rel="stylesheet" />
- <style>
- body {
- margin: 0;
- padding: 0;
- height: 100vh;
- width: 100vw;
- flex-wrap: wrap;
- justify-content: center;
- align-items: center;
- font-size: 30px;
- display: flex;
- }
+ div {
+ text-align: center;
+ }
+ </style>
+ </head>
- div {
- text-align: center;
- }
- </style>
+ <body>
+ <div>
+ <p id="message" data-localise="__MSG_instanceOffline__">
+ This instance is offline, you'll be redirected after&nbsp;<span id="number">2</span>&nbsp;<x data-localise="__MSG_sec__">seconds</x>
+ </p>
+ <button id="cancel" data-localise="__MSG_cancel__">Cancel</button>
+ </div>
-</head>
-
-<body>
- <div>
- <p id="message" data-localise="__MSG_instanceOffline__">This instance is offline, you'll be redirected
- after&nbsp;<span id="number">2</span>&nbsp;<x data-localise="__MSG_sec__">seconds</x>
- </p>
- <button id="cancel" data-localise="__MSG_cancel__">Cancel</button>
- </div>
-
- <script src="instance_offline.js" type="module"></script>
-</body>
-
-</html> \ No newline at end of file
+ <script src="instance_offline.js" type="module"></script>
+ </body>
+</html>
diff --git a/src/pages/errors/instance_offline.js b/src/pages/errors/instance_offline.js
index 8137ccd0..fadb7681 100644
--- a/src/pages/errors/instance_offline.js
+++ b/src/pages/errors/instance_offline.js
@@ -1,25 +1,20 @@
-import localise from "../../assets/javascripts/localise.js";
+import localise from "../../assets/javascripts/localise.js"
+const params = new Proxy(new URLSearchParams(window.location.search), {
+ get: (searchParams, prop) => searchParams.get(prop),
+})
-const params = new Proxy(
- new URLSearchParams(window.location.search),
- { get: (searchParams, prop) => searchParams.get(prop) }
-);
-
-let number = document.getElementById("number");
-setTimeout(() => number.innerHTML = '1', 1000);
-setTimeout(
- () => {
- number.innerHTML = '0'
- if (!isCanceled) window.location = params.url;
- },
- 2000
-);
+let number = document.getElementById("number")
+setTimeout(() => (number.innerHTML = "1"), 1000)
+setTimeout(() => {
+ number.innerHTML = "0"
+ if (!isCanceled) window.location = params.url
+}, 2000)
-let isCanceled = false;
+let isCanceled = false
document.getElementById("cancel").addEventListener("click", () => {
- isCanceled = true;
- document.getElementById("message").innerHTML = browser.i18n.getMessage('redirectionCanceled');
+ isCanceled = true
+ document.getElementById("message").innerHTML = browser.i18n.getMessage("redirectionCanceled")
})
-localise.localisePage(); \ No newline at end of file
+localise.localisePage()
diff --git a/src/pages/options/index.html b/src/pages/options/index.html
index 29e454bf..84955339 100644
--- a/src/pages/options/index.html
+++ b/src/pages/options/index.html
@@ -285,6 +285,7 @@
<option value="invidious">Invidious</option>
<option value="piped">Piped</option>
<option value="pipedMaterial">Piped-Material</option>
+ <option value="cloudtube">CloudTube</option>
<option value="freetube">FreeTube</option>
<option value="yatte">Yattee</option>
</select>
@@ -296,6 +297,7 @@
<option value="invidious">Invidious</option>
<option value="piped">Piped</option>
<option value="pipedMaterial">Piped-Material</option>
+ <option value="cloudtube">CloudTube</option>
</select>
</div>
</div>
@@ -595,6 +597,102 @@
<div class="checklist custom-checklist"></div>
</div>
</div>
+ <div id="cloudtube">
+ <hr>
+ <div class="normal">
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4>
+ </div>
+ <div class="checklist"></div>
+ <hr>
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_customInstances__">Custom Instances</h4>
+ </div>
+ <form class="custom-instance-form">
+ <div class="some-block option-block">
+ <input class="custom-instance" placeholder="https://cloudtube.com" type="url">
+ <button class="add add-instance" type="submit">
+ <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
+ <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path>
+ </svg>
+ </button>
+ </div>
+ </form>
+ <div class="checklist custom-checklist"></div>
+ <div class="buttons buttons-inline">
+ <label class="button button-inline" id="latency-cloudtube-label" for="latency-cloudtube">
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
+ <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"></path>
+ </svg>&nbsp;
+ <x data-localise="__MSG_testInstancesLatency__">Test Instances Latency</x>
+ </label>
+ <input class="button button-inline" id="latency-cloudtube" style="display:none;">
+ </div>
+ </div>
+ <div class="tor">
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4>
+ </div>
+ <div class="checklist"></div>
+ <hr>
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_customInstances__">Custom Instances</h4>
+ </div>
+ <form class="custom-instance-form">
+ <div class="some-block option-block">
+ <input class="custom-instance" placeholder="http://cloudtube.onion" type="url">
+ <button class="add add-instance" type="submit">
+ <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
+ <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path>
+ </svg>
+ </button>
+ </div>
+ </form>
+ <div class="checklist custom-checklist"></div>
+ </div>
+ <div class="i2p">
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4>
+ </div>
+ <div class="checklist"></div>
+ <hr>
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_customInstances__">Custom Instances</h4>
+ </div>
+ <form class="custom-instance-form">
+ <div class="some-block option-block">
+ <input class="custom-instance" placeholder="http://cloudtube.i2p" type="url">
+ <button class="add add-instance" type="submit">
+ <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
+ <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path>
+ </svg>
+ </button>
+ </div>
+ </form>
+ <div class="checklist custom-checklist"></div>
+ </div>
+ <div class="loki">
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4>
+ </div>
+ <div class="checklist"></div>
+ <hr>
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_customInstances__">Custom Instances</h4>
+ </div>
+ <form class="custom-instance-form">
+ <div class="some-block option-block">
+ <input class="custom-instance" placeholder="http://cloudtube.loki" type="url">
+ <button class="add add-instance" type="submit">
+ <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
+ <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path>
+ </svg>
+ </button>
+ </div>
+ </form>
+ <div class="checklist custom-checklist"></div>
+ </div>
+ </div>
<script type="module" src="./widgets/youtube.js"></script>
</section>
<section class="option-block" id="youtubeMusic_page">
@@ -606,6 +704,13 @@
<h4 data-localise="__MSG_enable__">Enable</h4>
<input id="youtubeMusic-enable" type="checkbox">
</div>
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_frontend__">Frontend</h4>
+ <select id="youtubeMusic-frontend">
+ <option value="beatbump">Beatbump</option>
+ <option value="hyperpipe">Hyperpipe</option>
+ </select>
+ </div>
<div id="beatbump">
<hr>
<div class="normal">
@@ -619,7 +724,7 @@
</div>
<form class="custom-instance-form">
<div class="some-block option-block">
- <input class="custom-instance" placeholder="https://beatbump.wewe" type="url">
+ <input class="custom-instance" placeholder="https://beatbump.org" type="url">
<button class="add add-instance" type="submit">
<svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path>
@@ -702,6 +807,102 @@
<div class="checklist custom-checklist"></div>
</div>
</div>
+ <div id="hyperpipe">
+ <hr>
+ <div class="normal">
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4>
+ </div>
+ <div class="checklist"></div>
+ <hr>
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_customInstances__">Custom Instances</h4>
+ </div>
+ <form class="custom-instance-form">
+ <div class="some-block option-block">
+ <input class="custom-instance" placeholder="https://hyperpipe.org" type="url">
+ <button class="add add-instance" type="submit">
+ <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
+ <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path>
+ </svg>
+ </button>
+ </div>
+ </form>
+ <div class="checklist custom-checklist"></div>
+ <div class="buttons buttons-inline">
+ <label class="button button-inline" id="latency-hyperpipe-label" for="latency-hyperpipe">
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
+ <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"></path>
+ </svg>&nbsp;
+ <x data-localise="__MSG_testInstancesLatency__">Test Instances Latency</x>
+ </label>
+ <input class="button button-inline" id="latency-hyperpipe" style="display:none;">
+ </div>
+ </div>
+ <div class="tor">
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4>
+ </div>
+ <div class="checklist"></div>
+ <hr>
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_customInstances__">Custom Instances</h4>
+ </div>
+ <form class="custom-instance-form">
+ <div class="some-block option-block">
+ <input class="custom-instance" placeholder="http://hyperpipe.onion" type="url">
+ <button class="add add-instance" type="submit">
+ <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
+ <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path>
+ </svg>
+ </button>
+ </div>
+ </form>
+ <div class="checklist custom-checklist"></div>
+ </div>
+ <div class="i2p">
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4>
+ </div>
+ <div class="checklist"></div>
+ <hr>
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_customInstances__">Custom Instances</h4>
+ </div>
+ <form class="custom-instance-form">
+ <div class="some-block option-block">
+ <input class="custom-instance" placeholder="http://hyperpipe.i2p" type="url">
+ <button class="add add-instance" type="submit">
+ <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
+ <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path>
+ </svg>
+ </button>
+ </div>
+ </form>
+ <div class="checklist custom-checklist"></div>
+ </div>
+ <div class="loki">
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4>
+ </div>
+ <div class="checklist"></div>
+ <hr>
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_customInstances__">Custom Instances</h4>
+ </div>
+ <form class="custom-instance-form">
+ <div class="some-block option-block">
+ <input class="custom-instance" placeholder="http://hyperpipe.loki" type="url">
+ <button class="add add-instance" type="submit">
+ <svg xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
+ <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path>
+ </svg>
+ </button>
+ </div>
+ </form>
+ <div class="checklist custom-checklist"></div>
+ </div>
+ </div>
<script type="module" src="./widgets/youtubeMusic.js"></script>
</section>
<section class="option-block" id="twitter_page">
@@ -1994,13 +2195,20 @@
</section>
<section class="option-block" id="lbry_page">
<div class="some-block option-block">
- <h1 data-localise="__MSG_lbry__">LBRY/Odysee</h1>
+ <h1 data-localise="__MSG_lbry__">LBRY</h1>
</div>
<hr>
<div class="some-block option-block">
<h4 data-localise="__MSG_enable__">Enable</h4>
<input id="lbry-enable" type="checkbox">
</div>
+ <div class="some-block option-block">
+ <h4 data-localise="__MSG_frontend__">Frontend</h4>
+ <select id="lbry-frontend">
+ <option value="librarian">Librarian</option>
+ <option value="lbryDesktop" data-localise="__MSG_lbryDesktop__">LBRY Desktop</option>
+ </select>
+ </div>
<div id="librarian">
<hr>
<div class="normal">
diff --git a/src/pages/options/index.js b/src/pages/options/index.js
index 39f9c8f3..409fa5b5 100644
--- a/src/pages/options/index.js
+++ b/src/pages/options/index.js
@@ -1,24 +1,23 @@
-for (const a of document.getElementById('links').getElementsByTagName('a')) {
- a.addEventListener('click', e => {
- const path = a.getAttribute('href').replace('#', '');
- loadPage(path);
- e.preventDefault();
- })
+for (const a of document.getElementById("links").getElementsByTagName("a")) {
+ a.addEventListener("click", e => {
+ const path = a.getAttribute("href").replace("#", "")
+ loadPage(path)
+ e.preventDefault()
+ })
}
function loadPage(path) {
- for (const section of document.getElementById('pages').getElementsByTagName('section'))
- section.style.display = 'none';
- document.getElementById(`${path}_page`).style.display = 'block';
+ for (const section of document.getElementById("pages").getElementsByTagName("section")) section.style.display = "none"
+ document.getElementById(`${path}_page`).style.display = "block"
- for (const a of document.getElementById('links').getElementsByTagName('a'))
- if (a.getAttribute('href') == `#${path}`) a.classList.add('selected')
- else a.classList.remove('selected')
+ for (const a of document.getElementById("links").getElementsByTagName("a"))
+ if (a.getAttribute("href") == `#${path}`) a.classList.add("selected")
+ else a.classList.remove("selected")
- let stateObj = { id: "100" };
- window.history.pushState(stateObj, "Page 2", `/pages/options/index.html#${path}`);
+ let stateObj = { id: "100" }
+ window.history.pushState(stateObj, "Page 2", `/pages/options/index.html#${path}`)
}
const r = window.location.href.match(/#(.*)/)
-if (r) loadPage(r[1]);
-else loadPage('general'); \ No newline at end of file
+if (r) loadPage(r[1])
+else loadPage("general")
diff --git a/src/pages/options/init.js b/src/pages/options/init.js
index daea2963..5b679da4 100644
--- a/src/pages/options/init.js
+++ b/src/pages/options/init.js
@@ -1,38 +1,35 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import localise from "../../assets/javascripts/localise.js";
+import localise from "../../assets/javascripts/localise.js"
function changeTheme() {
- return new Promise(resolve => {
- browser.storage.local.get(
- "theme",
- r => {
- switch (r.theme) {
- case "dark":
- document.body.classList.add("dark-theme");
- document.body.classList.remove("light-theme");
- break;
- case "light":
- document.body.classList.add("light-theme");
- document.body.classList.remove("dark-theme");
- break;
- default:
- if (matchMedia("(prefers-color-scheme: light)").matches) {
- document.body.classList.add("light-theme");
- document.body.classList.remove("dark-theme");
- } else {
- document.body.classList.add("dark-theme");
- document.body.classList.remove("light-theme");
- }
- }
- resolve();
- }
- )
- })
+ return new Promise(resolve => {
+ browser.storage.local.get("theme", r => {
+ switch (r.theme) {
+ case "dark":
+ document.body.classList.add("dark-theme")
+ document.body.classList.remove("light-theme")
+ break
+ case "light":
+ document.body.classList.add("light-theme")
+ document.body.classList.remove("dark-theme")
+ break
+ default:
+ if (matchMedia("(prefers-color-scheme: light)").matches) {
+ document.body.classList.add("light-theme")
+ document.body.classList.remove("dark-theme")
+ } else {
+ document.body.classList.add("dark-theme")
+ document.body.classList.remove("light-theme")
+ }
+ }
+ resolve()
+ })
+ })
}
-changeTheme();
-if (["ar", "iw", "ku", "fa", "ur"].includes(browser.i18n.getUILanguage())) document.getElementsByTagName("body")[0].classList.add("rtl");
-localise.localisePage();
+changeTheme()
+if (["ar", "iw", "ku", "fa", "ur"].includes(browser.i18n.getUILanguage())) document.getElementsByTagName("body")[0].classList.add("rtl")
+localise.localisePage()
-window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", changeTheme) \ No newline at end of file
+window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", changeTheme)
diff --git a/src/pages/options/widgets/general.js b/src/pages/options/widgets/general.js
index 352e4b76..5407159d 100644
--- a/src/pages/options/widgets/general.js
+++ b/src/pages/options/widgets/general.js
@@ -1,242 +1,217 @@
-"use strict";
-window.browser = window.browser || window.chrome;
+"use strict"
+window.browser = window.browser || window.chrome
-import utils from "../../../assets/javascripts/utils.js";
-import generalHelper from "../../../assets/javascripts/general.js";
+import utils from "../../../assets/javascripts/utils.js"
+import generalHelper from "../../../assets/javascripts/general.js"
-import youtubeHelper from "../../../assets/javascripts/youtube/youtube.js";
-import youtubeMusicHelper from "../../../assets/javascripts/youtubeMusic.js";
-import twitterHelper from "../../../assets/javascripts/twitter.js";
-import instagramHelper from "../../../assets/javascripts/instagram.js";
-import redditHelper from "../../../assets/javascripts/reddit.js";
-import searchHelper from "../../../assets/javascripts/search.js";
-import translateHelper from "../../../assets/javascripts/translate/translate.js";
-import mapsHelper from "../../../assets/javascripts/maps.js";
-import wikipediaHelper from "../../../assets/javascripts/wikipedia.js";
-import mediumHelper from "../../../assets/javascripts/medium.js";
-import quoraHelper from "../../../assets/javascripts/quora.js";
-import libremdbHelper from "../../../assets/javascripts/imdb.js";
-import reutersHelper from "../../../assets/javascripts/reuters.js";
-import imgurHelper from "../../../assets/javascripts/imgur.js";
-import tiktokHelper from "../../../assets/javascripts/tiktok.js";
-import sendTargetsHelper from "../../../assets/javascripts/sendTargets.js";
-import peertubeHelper from "../../../assets/javascripts/peertube.js";
-import lbryHelper from "../../../assets/javascripts/lbry.js";
+import youtubeHelper from "../../../assets/javascripts/youtube/youtube.js"
+import youtubeMusicHelper from "../../../assets/javascripts/youtubeMusic.js"
+import twitterHelper from "../../../assets/javascripts/twitter.js"
+import instagramHelper from "../../../assets/javascripts/instagram.js"
+import redditHelper from "../../../assets/javascripts/reddit.js"
+import searchHelper from "../../../assets/javascripts/search.js"
+import translateHelper from "../../../assets/javascripts/translate/translate.js"
+import mapsHelper from "../../../assets/javascripts/maps.js"
+import wikipediaHelper from "../../../assets/javascripts/wikipedia.js"
+import mediumHelper from "../../../assets/javascripts/medium.js"
+import quoraHelper from "../../../assets/javascripts/quora.js"
+import libremdbHelper from "../../../assets/javascripts/imdb.js"
+import reutersHelper from "../../../assets/javascripts/reuters.js"
+import imgurHelper from "../../../assets/javascripts/imgur.js"
+import tiktokHelper from "../../../assets/javascripts/tiktok.js"
+import sendTargetsHelper from "../../../assets/javascripts/sendTargets.js"
+import peertubeHelper from "../../../assets/javascripts/peertube.js"
+import lbryHelper from "../../../assets/javascripts/lbry.js"
-let updateInstancesElement = document.getElementById("update-instances");
+let updateInstancesElement = document.getElementById("update-instances")
updateInstancesElement.addEventListener("click", async () => {
- let oldHtml = updateInstancesElement.innerHTML
- updateInstancesElement.innerHTML = '...';
- if (await utils.updateInstances()) {
- updateInstancesElement.innerHTML = oldHtml;
- location.reload();
- }
- else
- updateInstancesElement.innerHTML = 'Failed Miserabely';
-});
+ let oldHtml = updateInstancesElement.innerHTML
+ updateInstancesElement.innerHTML = "..."
+ if (await utils.updateInstances()) {
+ updateInstancesElement.innerHTML = oldHtml
+ location.reload()
+ } else updateInstancesElement.innerHTML = "Failed Miserabely"
+})
-let exportSettingsElement = document.getElementById("export-settings");
+let exportSettingsElement = document.getElementById("export-settings")
function exportSettings() {
- browser.storage.local.get(
- null,
- result => {
- let resultString = JSON.stringify(result, null, ' ');
- exportSettingsElement.href = 'data:application/json;base64,' + btoa(encodeURI(resultString));
- exportSettingsElement.download = 'libredirect-settings.json';
- }
- );
+ browser.storage.local.get(null, result => {
+ let resultString = JSON.stringify(result, null, " ")
+ exportSettingsElement.href = "data:application/json;base64," + btoa(encodeURI(resultString))
+ exportSettingsElement.download = "libredirect-settings.json"
+ })
}
-exportSettings();
-
-document.getElementById('general_page').addEventListener('click', exportSettings)
+exportSettings()
-let importSettingsElement = document.getElementById("import-settings");
-let importSettingsElementText = document.getElementById('import_settings_text');
-importSettingsElement.addEventListener("change",
- () => {
- importSettingsElementText.innerHTML = '...';
- let file = importSettingsElement.files[0];
- const reader = new FileReader();
- reader.readAsText(file);
- reader.onload = async () => {
- const data = JSON.parse(reader.result)
- if (
- "theme" in data &&
- "disableImgur" in data &&
- "imgurRedirects" in data
- ) {
- browser.storage.local.clear(
- () => {
- browser.storage.local.set({ ...data },
- async () => {
- await youtubeHelper.pasteInvidiousCookies();
- await youtubeHelper.pastePipedLocalStorage();
- await youtubeHelper.pastePipedMaterialLocalStorage();
+document.getElementById("general_page").addEventListener("click", exportSettings)
- await translateHelper.pasteSimplyTranslateCookies();
- await translateHelper.pasteLingvaLocalStorage();
+let importSettingsElement = document.getElementById("import-settings")
+let importSettingsElementText = document.getElementById("import_settings_text")
+importSettingsElement.addEventListener("change", () => {
+ importSettingsElementText.innerHTML = "..."
+ let file = importSettingsElement.files[0]
+ const reader = new FileReader()
+ reader.readAsText(file)
+ reader.onload = async () => {
+ const data = JSON.parse(reader.result)
+ if ("theme" in data && "disableImgur" in data && "imgurRedirects" in data) {
+ browser.storage.local.clear(() => {
+ browser.storage.local.set({ ...data }, async () => {
+ await youtubeHelper.pasteInvidiousCookies()
+ await youtubeHelper.pastePipedLocalStorage()
+ await youtubeHelper.pastePipedMaterialLocalStorage()
- await twitterHelper.pasteNitterCookies();
+ await translateHelper.pasteSimplyTranslateCookies()
+ await translateHelper.pasteLingvaLocalStorage()
- await wikipediaHelper.pasteWikilessCookies();
+ await twitterHelper.pasteNitterCookies()
- await searchHelper.pasteSearxCookies();
- await searchHelper.pasteSearxngCookies();
- await searchHelper.pasteLibrexCookies();
+ await wikipediaHelper.pasteWikilessCookies()
- await redditHelper.pasteLibredditCookies();
- await redditHelper.pasteTedditCookies();
+ await searchHelper.pasteSearxCookies()
+ await searchHelper.pasteSearxngCookies()
+ await searchHelper.pasteLibrexCookies()
- await tiktokHelper.pasteProxiTokCookies();
+ await redditHelper.pasteLibredditCookies()
+ await redditHelper.pasteTedditCookies()
- location.reload();
- })
+ await tiktokHelper.pasteProxiTokCookies()
- });
- } else {
- console.log('incompatible settings');
- importError()
- }
- }
- reader.onerror = error => {
- console.log('error', error);
- importError()
- };
- }
-);
+ location.reload()
+ })
+ })
+ } else {
+ console.log("incompatible settings")
+ importError()
+ }
+ }
+ reader.onerror = error => {
+ console.log("error", error)
+ importError()
+ }
+})
function importError() {
- const oldHTML = importSettingsElementText.innerHTML;
- importSettingsElementText.innerHTML = '<span style="color:red;">Error!</span>';
- setTimeout(() => importSettingsElementText.innerHTML = oldHTML, 1000);
+ const oldHTML = importSettingsElementText.innerHTML
+ importSettingsElementText.innerHTML = '<span style="color:red;">Error!</span>'
+ setTimeout(() => (importSettingsElementText.innerHTML = oldHTML), 1000)
}
-const resetSettings = document.getElementById("reset-settings");
-resetSettings.addEventListener("click",
- async () => {
- resetSettings.innerHTML = '...'
- browser.storage.local.clear(
- () => {
- fetch('/instances/blacklist.json').then(response => response.text()).then(async data => {
- browser.storage.local.set({ cloudflareBlackList: JSON.parse(data).cloudflare },
- () => {
- browser.storage.local.set({ authenticateBlackList: JSON.parse(data).authenticate },
- async () => {
- await generalHelper.initDefaults();
- await youtubeHelper.initDefaults();
- await youtubeMusicHelper.initDefaults();
- await twitterHelper.initDefaults();
- await instagramHelper.initDefaults();
- await mapsHelper.initDefaults();
- await searchHelper.initDefaults();
- await translateHelper.initDefaults();
- await mediumHelper.initDefaults();
- await quoraHelper.initDefaults();
- await libremdbHelper.initDefaults();
- await reutersHelper.initDefaults();
- await redditHelper.initDefaults();
- await wikipediaHelper.initDefaults();
- await imgurHelper.initDefaults();
- await tiktokHelper.initDefaults();
- await sendTargetsHelper.initDefaults();
- await peertubeHelper.initDefaults();
- await lbryHelper.initDefaults();
- location.reload();
- })
- })
- })
- });
-
- }
-);
+const resetSettings = document.getElementById("reset-settings")
+resetSettings.addEventListener("click", async () => {
+ resetSettings.innerHTML = "..."
+ browser.storage.local.clear(() => {
+ fetch("/instances/blacklist.json")
+ .then(response => response.text())
+ .then(async data => {
+ browser.storage.local.set({ cloudflareBlackList: JSON.parse(data).cloudflare }, () => {
+ browser.storage.local.set({ authenticateBlackList: JSON.parse(data).authenticate }, async () => {
+ await generalHelper.initDefaults()
+ await youtubeHelper.initDefaults()
+ await youtubeMusicHelper.initDefaults()
+ await twitterHelper.initDefaults()
+ await instagramHelper.initDefaults()
+ await mapsHelper.initDefaults()
+ await searchHelper.initDefaults()
+ await translateHelper.initDefaults()
+ await mediumHelper.initDefaults()
+ await quoraHelper.initDefaults()
+ await libremdbHelper.initDefaults()
+ await reutersHelper.initDefaults()
+ await redditHelper.initDefaults()
+ await wikipediaHelper.initDefaults()
+ await imgurHelper.initDefaults()
+ await tiktokHelper.initDefaults()
+ await sendTargetsHelper.initDefaults()
+ await peertubeHelper.initDefaults()
+ await lbryHelper.initDefaults()
+ location.reload()
+ })
+ })
+ })
+ })
+})
let autoRedirectElement = document.getElementById("auto-redirect")
autoRedirectElement.addEventListener("change", event => {
- browser.storage.local.set({ autoRedirect: event.target.checked })
-});
+ browser.storage.local.set({ autoRedirect: event.target.checked })
+})
-let themeElement = document.getElementById("theme");
+let themeElement = document.getElementById("theme")
themeElement.addEventListener("change", event => {
- const value = event.target.options[theme.selectedIndex].value;
- browser.storage.local.set({ theme: value });
- location.reload();
+ const value = event.target.options[theme.selectedIndex].value
+ browser.storage.local.set({ theme: value })
+ location.reload()
})
-let protocolElement = document.getElementById("protocol");
+let protocolElement = document.getElementById("protocol")
protocolElement.addEventListener("change", event => {
- const value = event.target.options[protocol.selectedIndex].value;
- browser.storage.local.set({ protocol: value });
- location.reload();
+ const value = event.target.options[protocol.selectedIndex].value
+ browser.storage.local.set({ protocol: value })
+ location.reload()
})
let protocolFallbackCheckbox = document.getElementById("protocol-fallback-checkbox")
protocolFallbackCheckbox.addEventListener("change", event => {
- browser.storage.local.set({ protocolFallback: event.target.checked });
+ browser.storage.local.set({ protocolFallback: event.target.checked })
})
-let nameCustomInstanceInput = document.getElementById("exceptions-custom-instance");
-let instanceTypeElement = document.getElementById("exceptions-custom-instance-type");
+let nameCustomInstanceInput = document.getElementById("exceptions-custom-instance")
+let instanceTypeElement = document.getElementById("exceptions-custom-instance-type")
let instanceType = "url"
-let popupFrontends;
+let popupFrontends
for (const frontend of generalHelper.allPopupFrontends)
- document.getElementById(frontend).addEventListener("change",
- event => {
- if (event.target.checked && !popupFrontends.includes(frontend))
- popupFrontends.push(frontend)
- else if (popupFrontends.includes(frontend)) {
- var index = popupFrontends.indexOf(frontend);
- if (index !== -1) popupFrontends.splice(index, 1);
- }
- browser.storage.local.set({ popupFrontends })
- }
- )
+ document.getElementById(frontend).addEventListener("change", event => {
+ if (event.target.checked && !popupFrontends.includes(frontend)) popupFrontends.push(frontend)
+ else if (popupFrontends.includes(frontend)) {
+ var index = popupFrontends.indexOf(frontend)
+ if (index !== -1) popupFrontends.splice(index, 1)
+ }
+ browser.storage.local.set({ popupFrontends })
+ })
// const firstPartyIsolate = document.getElementById('firstPartyIsolate');
// firstPartyIsolate.addEventListener("change", () => browser.storage.local.set({ firstPartyIsolate: firstPartyIsolate.checked }))
browser.storage.local.get(
- [
- 'theme',
- 'autoRedirect',
- 'exceptions',
- 'protocol',
- 'protocolFallback'
- // 'firstPartyIsolate'
- ],
- r => {
- autoRedirectElement.checked = r.autoRedirect;
- themeElement.value = r.theme;
- protocolElement.value = r.protocol;
- protocolFallbackCheckbox.checked = r.protocolFallback;
- // firstPartyIsolate.checked = r.firstPartyIsolate;
-
- let protocolFallbackElement = document.getElementById('protocol-fallback')
- if (protocolElement.value == "normal") {
- protocolFallbackElement.style.display = 'none';
- } else {
- protocolFallbackElement.style.display = 'block';
- }
+ [
+ "theme",
+ "autoRedirect",
+ "exceptions",
+ "protocol",
+ "protocolFallback",
+ // 'firstPartyIsolate'
+ ],
+ r => {
+ autoRedirectElement.checked = r.autoRedirect
+ themeElement.value = r.theme
+ protocolElement.value = r.protocol
+ protocolFallbackCheckbox.checked = r.protocolFallback
+ // firstPartyIsolate.checked = r.firstPartyIsolate;
+ let protocolFallbackElement = document.getElementById("protocol-fallback")
+ if (protocolElement.value == "normal") {
+ protocolFallbackElement.style.display = "none"
+ } else {
+ protocolFallbackElement.style.display = "block"
+ }
- instanceTypeElement.addEventListener("change",
- event => {
- instanceType = event.target.options[instanceTypeElement.selectedIndex].value
- if (instanceType == 'url') {
- nameCustomInstanceInput.setAttribute("type", "url");
- nameCustomInstanceInput.setAttribute("placeholder", "https://www.google.com");
- }
- else if (instanceType == 'regex') {
- nameCustomInstanceInput.setAttribute("type", "text");
- nameCustomInstanceInput.setAttribute("placeholder", "https?:\/\/(www\.|)youtube\.com\/");
- }
- }
- )
- let exceptionsCustomInstances = r.exceptions;
- function calcExceptionsCustomInstances() {
- document.getElementById("exceptions-custom-checklist").innerHTML =
- [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex].map(
- (x) => `<div>
+ instanceTypeElement.addEventListener("change", event => {
+ instanceType = event.target.options[instanceTypeElement.selectedIndex].value
+ if (instanceType == "url") {
+ nameCustomInstanceInput.setAttribute("type", "url")
+ nameCustomInstanceInput.setAttribute("placeholder", "https://www.google.com")
+ } else if (instanceType == "regex") {
+ nameCustomInstanceInput.setAttribute("type", "text")
+ nameCustomInstanceInput.setAttribute("placeholder", "https?://(www.|)youtube.com/")
+ }
+ })
+ let exceptionsCustomInstances = r.exceptions
+ function calcExceptionsCustomInstances() {
+ document.getElementById("exceptions-custom-checklist").innerHTML = [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex]
+ .map(
+ x => `<div>
${x}
<button class="add" id="clear-${x}">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"
@@ -246,53 +221,49 @@ browser.storage.local.get(
</button>
</div>
<hr>`
- ).join('\n');
+ )
+ .join("\n")
- for (const x of [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex]) {
- document.getElementById(`clear-${x}`).addEventListener("click",
- () => {
- console.log(x);
- let index;
- index = exceptionsCustomInstances.url.indexOf(x);
- if (index > -1)
- exceptionsCustomInstances.url.splice(index, 1);
- else {
- index = exceptionsCustomInstances.regex.indexOf(x);
- if (index > -1)
- exceptionsCustomInstances.regex.splice(index, 1);
- }
- browser.storage.local.set({ exceptions: exceptionsCustomInstances })
- calcExceptionsCustomInstances();
- });
- }
- }
- calcExceptionsCustomInstances();
- document.getElementById("custom-exceptions-instance-form").addEventListener("submit", (event) => {
- event.preventDefault();
+ for (const x of [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex]) {
+ document.getElementById(`clear-${x}`).addEventListener("click", () => {
+ console.log(x)
+ let index
+ index = exceptionsCustomInstances.url.indexOf(x)
+ if (index > -1) exceptionsCustomInstances.url.splice(index, 1)
+ else {
+ index = exceptionsCustomInstances.regex.indexOf(x)
+ if (index > -1) exceptionsCustomInstances.regex.splice(index, 1)
+ }
+ browser.storage.local.set({ exceptions: exceptionsCustomInstances })
+ calcExceptionsCustomInstances()
+ })
+ }
+ }
+ calcExceptionsCustomInstances()
+ document.getElementById("custom-exceptions-instance-form").addEventListener("submit", event => {
+ event.preventDefault()
- let val
- if (instanceType == 'url') {
- if (nameCustomInstanceInput.validity.valid) {
- let url = new URL(nameCustomInstanceInput.value);
- val = `${url.protocol}//${url.host}`
- if (!exceptionsCustomInstances.url.includes(val)) exceptionsCustomInstances.url.push(val)
- }
- } else if (instanceType == 'regex') {
- val = nameCustomInstanceInput.value
- if (val.trim() != '' && !exceptionsCustomInstances.regex.includes(val)) exceptionsCustomInstances.regex.push(val)
- }
- if (val) {
- browser.storage.local.set({ exceptions: exceptionsCustomInstances })
- nameCustomInstanceInput.value = '';
- }
- calcExceptionsCustomInstances();
- })
+ let val
+ if (instanceType == "url") {
+ if (nameCustomInstanceInput.validity.valid) {
+ let url = new URL(nameCustomInstanceInput.value)
+ val = `${url.protocol}//${url.host}`
+ if (!exceptionsCustomInstances.url.includes(val)) exceptionsCustomInstances.url.push(val)
+ }
+ } else if (instanceType == "regex") {
+ val = nameCustomInstanceInput.value
+ if (val.trim() != "" && !exceptionsCustomInstances.regex.includes(val)) exceptionsCustomInstances.regex.push(val)
+ }
+ if (val) {
+ browser.storage.local.set({ exceptions: exceptionsCustomInstances })
+ nameCustomInstanceInput.value = ""
+ }
+ calcExceptionsCustomInstances()
+ })
- browser.storage.local.get('popupFrontends',
- r => {
- popupFrontends = r.popupFrontends;
- for (const frontend of generalHelper.allPopupFrontends)
- document.getElementById(frontend).checked = popupFrontends.includes(frontend);
- }
- )
- })
+ browser.storage.local.get("popupFrontends", r => {
+ popupFrontends = r.popupFrontends
+ for (const frontend of generalHelper.allPopupFrontends) document.getElementById(frontend).checked = popupFrontends.includes(frontend)
+ })
+ }
+)
diff --git a/src/pages/options/widgets/imdb.js b/src/pages/options/widgets/imdb.js
index ad115e93..094c5672 100644
--- a/src/pages/options/widgets/imdb.js
+++ b/src/pages/options/widgets/imdb.js
@@ -1,12 +1,12 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
// UNCOMMENT ALL COMMENTS ONCE OTHER FRONTENDS EXIST
const frontends = new Array("libremdb")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("imdb-enable");
-const imdb = document.getElementById('imdb_page');
+const enable = document.getElementById("imdb-enable")
+const imdb = document.getElementById("imdb_page")
//const frontend = document.getElementById("imdb-frontend");
let protocol
@@ -24,38 +24,32 @@ function changeFrontendsSettings() {
*/
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "disableImdb",
- "protocol"
- ],
- r => {
- enable.checked = !r.disableImdb;
- protocol = r.protocol;
- changeProtocolSettings();
- }
-)
+browser.storage.local.get(["disableImdb", "protocol"], r => {
+ enable.checked = !r.disableImdb
+ protocol = r.protocol
+ changeProtocolSettings()
+})
imdb.addEventListener("change", () => {
- browser.storage.local.set({ disableImdb: !enable.checked })
+ browser.storage.local.set({ disableImdb: !enable.checked })
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++){
- utils.processDefaultCustomInstances('imdb', frontends[i], protocols[x], document)
- }
- utils.latency('imdb', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("imdb", frontends[i], protocols[x], document)
+ }
+ utils.latency("imdb", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/imgur.js b/src/pages/options/widgets/imgur.js
index 475bf472..236e809d 100644
--- a/src/pages/options/widgets/imgur.js
+++ b/src/pages/options/widgets/imgur.js
@@ -1,12 +1,12 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
// UNCOMMENT ALL COMMENTS ONCE OTHER FRONTENDS EXIST
const frontends = new Array("rimgo")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("imgur-enable");
-const imgur = document.getElementById('imgur_page');
+const enable = document.getElementById("imgur-enable")
+const imgur = document.getElementById("imgur_page")
//const frontend = document.getElementById("imgur-frontend");
let protocol
@@ -24,38 +24,32 @@ function changeFrontendsSettings() {
*/
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "disableImgur",
- "protocol"
- ],
- r => {
- enable.checked = !r.disableImgur;
- protocol = r.protocol;
- changeProtocolSettings();
- }
-);
+browser.storage.local.get(["disableImgur", "protocol"], r => {
+ enable.checked = !r.disableImgur
+ protocol = r.protocol
+ changeProtocolSettings()
+})
imgur.addEventListener("change", () => {
- browser.storage.local.set({ disableImgur: !enable.checked });
+ browser.storage.local.set({ disableImgur: !enable.checked })
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++){
- utils.processDefaultCustomInstances('imgur', frontends[i], protocols[x], document)
- }
- utils.latency('imgur', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("imgur", frontends[i], protocols[x], document)
+ }
+ utils.latency("imgur", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/instagram.js b/src/pages/options/widgets/instagram.js
index 84456845..e22f720f 100644
--- a/src/pages/options/widgets/instagram.js
+++ b/src/pages/options/widgets/instagram.js
@@ -1,12 +1,12 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
// UNCOMMENT ALL COMMENTS ONCE OTHER FRONTENDS EXIST
const frontends = new Array("bibliogram")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("instagram-enable");
-const instagram = document.getElementById('instagram_page')
+const enable = document.getElementById("instagram-enable")
+const instagram = document.getElementById("instagram_page")
//const frontend = document.getElementById("instagram-frontend");
let protocol
@@ -24,38 +24,32 @@ function changeFrontendsSettings() {
*/
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "disableInstagram",
- "protocol"
- ],
- r => {
- enable.checked = !r.disableInstagram;
- protocol = r.protocol;
- changeProtocolSettings();
- }
-)
+browser.storage.local.get(["disableInstagram", "protocol"], r => {
+ enable.checked = !r.disableInstagram
+ protocol = r.protocol
+ changeProtocolSettings()
+})
instagram.addEventListener("change", () => {
- browser.storage.local.set({ disableInstagram: !enable.checked })
+ browser.storage.local.set({ disableInstagram: !enable.checked })
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++){
- utils.processDefaultCustomInstances('instagram', frontends[i], protocols[x], document)
- }
- utils.latency('instagram', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("instagram", frontends[i], protocols[x], document)
+ }
+ utils.latency("instagram", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/lbry.js b/src/pages/options/widgets/lbry.js
index 645017ff..76e212cb 100644
--- a/src/pages/options/widgets/lbry.js
+++ b/src/pages/options/widgets/lbry.js
@@ -1,61 +1,57 @@
-import utils from "../../../assets/javascripts/utils.js";
-
-// UNCOMMENT ALL COMMENTS ONCE OTHER FRONTENDS EXIST
+import utils from "../../../assets/javascripts/utils.js"
const frontends = new Array("librarian")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("lbry-enable");
-const lbry = document.getElementById('lbry_page');
-//const frontend = document.getElementById("lbry-frontend");
+const enable = document.getElementById("lbry-enable")
+const lbry = document.getElementById("lbry_page")
+const frontend = document.getElementById("lbry-frontend")
let protocol
-/*
function changeFrontendsSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- if (frontends[i] == frontend.value) {
- frontendDiv.style.display = 'block'
- } else {
- frontendDiv.style.display = 'none'
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ if (frontends[i] == frontend.value) {
+ frontendDiv.style.display = "block"
+ } else {
+ frontendDiv.style.display = "none"
+ }
+ }
}
-*/
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "disableLbryTargets",
- "protocol"
- ],
- r => {
- enable.checked = !r.disableLbryTargets;
- protocol = r.protocol;
- changeProtocolSettings();
- }
-)
+browser.storage.local.get(["disableLbryTargets", "protocol", "lbryFrontend"], r => {
+ enable.checked = !r.disableLbryTargets
+ protocol = r.protocol
+ frontend.value = r.lbryFrontend
+ changeFrontendsSettings()
+ changeProtocolSettings()
+})
lbry.addEventListener("change", () => {
- browser.storage.local.set({ disableLbryTargets: !enable.checked });
+ browser.storage.local.set({
+ disableLbryTargets: !enable.checked,
+ lbryFrontend: frontend.value,
+ })
+ changeFrontendsSettings()
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++){
- utils.processDefaultCustomInstances('lbryTargets', frontends[i], protocols[x], document)
- }
- utils.latency('lbryTargets', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("lbryTargets", frontends[i], protocols[x], document)
+ }
+ utils.latency("lbryTargets", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/lbry.pug b/src/pages/options/widgets/lbry.pug
index 2bdccb5a..678b87d9 100644
--- a/src/pages/options/widgets/lbry.pug
+++ b/src/pages/options/widgets/lbry.pug
@@ -1,11 +1,17 @@
section#lbry_page.option-block
.some-block.option-block
- h1(data-localise="__MSG_lbry__") LBRY/Odysee
+ h1(data-localise="__MSG_lbry__") LBRY
hr
.some-block.option-block
h4(data-localise="__MSG_enable__") Enable
input#lbry-enable(type="checkbox")
+ .some-block.option-block
+ h4(data-localise="__MSG_frontend__") Frontend
+ select#lbry-frontend
+ option(value="librarian") Librarian
+ option(value="lbryDesktop" data-localise="__MSG_lbryDesktop__") LBRY Desktop
+
#librarian
hr
.normal
diff --git a/src/pages/options/widgets/maps.js b/src/pages/options/widgets/maps.js
index 9e4be6d3..acc8aca8 100644
--- a/src/pages/options/widgets/maps.js
+++ b/src/pages/options/widgets/maps.js
@@ -1,64 +1,57 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
const frontends = new Array("facil")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("maps-enable");
-const maps = document.getElementById('maps_page');
-const frontend = document.getElementById("maps-frontend");
+const enable = document.getElementById("maps-enable")
+const maps = document.getElementById("maps_page")
+const frontend = document.getElementById("maps-frontend")
let protocol
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
function changeFrontendsSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- if (frontends[i] == frontend.value) {
- frontendDiv.style.display = 'block'
- } else {
- frontendDiv.style.display = 'none'
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ if (frontends[i] == frontend.value) {
+ frontendDiv.style.display = "block"
+ } else {
+ frontendDiv.style.display = "none"
+ }
+ }
}
-browser.storage.local.get(
- [
- "disableMaps",
- "protocol",
- "mapsFrontend"
- ],
- r => {
- enable.checked = !r.disableMaps;
- protocol = r.protocol;
- frontend.value = r.mapsFrontend;
- changeFrontendsSettings();
- changeProtocolSettings();
- }
-)
+browser.storage.local.get(["disableMaps", "protocol", "mapsFrontend"], r => {
+ enable.checked = !r.disableMaps
+ protocol = r.protocol
+ frontend.value = r.mapsFrontend
+ changeFrontendsSettings()
+ changeProtocolSettings()
+})
maps.addEventListener("change", () => {
- browser.storage.local.set({
- disableMaps: !enable.checked,
- mapsFrontend: frontend.value
- });
- changeFrontendsSettings();
+ browser.storage.local.set({
+ disableMaps: !enable.checked,
+ mapsFrontend: frontend.value,
+ })
+ changeFrontendsSettings()
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++) {
- utils.processDefaultCustomInstances('maps', frontends[i], protocols[x], document)
- }
- utils.latency('maps', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("maps", frontends[i], protocols[x], document)
+ }
+ utils.latency("maps", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/medium.js b/src/pages/options/widgets/medium.js
index 765a956c..8db5c0f0 100644
--- a/src/pages/options/widgets/medium.js
+++ b/src/pages/options/widgets/medium.js
@@ -1,12 +1,12 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
// UNCOMMENT ALL COMMENTS ONCE OTHER FRONTENDS EXIST
const frontends = new Array("scribe")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("medium-enable");
-const medium = document.getElementById('medium_page');
+const enable = document.getElementById("medium-enable")
+const medium = document.getElementById("medium_page")
//const frontend = document.getElementById("medium-frontend");
let protocol
@@ -24,38 +24,32 @@ function changeFrontendsSettings() {
*/
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "disableMedium",
- "protocol"
- ],
- r => {
- enable.checked = !r.disableMedium;
- protocol = r.protocol;
- changeProtocolSettings();
- }
-)
+browser.storage.local.get(["disableMedium", "protocol"], r => {
+ enable.checked = !r.disableMedium
+ protocol = r.protocol
+ changeProtocolSettings()
+})
medium.addEventListener("change", () => {
- browser.storage.local.set({ disableMedium: !enable.checked })
+ browser.storage.local.set({ disableMedium: !enable.checked })
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++){
- utils.processDefaultCustomInstances('medium', frontends[i], protocols[x], document)
- }
- utils.latency('medium', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("medium", frontends[i], protocols[x], document)
+ }
+ utils.latency("medium", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/peertube.js b/src/pages/options/widgets/peertube.js
index 9e994119..e3b8dcc5 100644
--- a/src/pages/options/widgets/peertube.js
+++ b/src/pages/options/widgets/peertube.js
@@ -1,12 +1,12 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
// UNCOMMENT ALL COMMENTS ONCE OTHER FRONTENDS EXIST
const frontends = new Array("simpleertube")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("peertube-enable");
-const peertube = document.getElementById('peertube_page');
+const enable = document.getElementById("peertube-enable")
+const peertube = document.getElementById("peertube_page")
//const frontend = document.getElementById("peertube-frontend");
let protocol
@@ -24,38 +24,32 @@ function changeFrontendsSettings() {
*/
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "disablePeertubeTargets",
- "protocol"
- ],
- r => {
- enable.checked = !r.disablePeertubeTargets;
- protocol = r.protocol;
- changeProtocolSettings();
- }
-)
+browser.storage.local.get(["disablePeertubeTargets", "protocol"], r => {
+ enable.checked = !r.disablePeertubeTargets
+ protocol = r.protocol
+ changeProtocolSettings()
+})
peertube.addEventListener("change", () => {
- browser.storage.local.set({ disablePeertubeTargets: !enable.checked })
+ browser.storage.local.set({ disablePeertubeTargets: !enable.checked })
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++){
- utils.processDefaultCustomInstances('peertube', frontends[i], protocols[x], document)
- }
- utils.latency('peertube', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("peertube", frontends[i], protocols[x], document)
+ }
+ utils.latency("peertube", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/quora.js b/src/pages/options/widgets/quora.js
index ded21e57..f3e361c3 100644
--- a/src/pages/options/widgets/quora.js
+++ b/src/pages/options/widgets/quora.js
@@ -1,12 +1,12 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
// UNCOMMENT ALL COMMENTS ONCE OTHER FRONTENDS EXIST
const frontends = new Array("quetre")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("quora-enable");
-const quora = document.getElementById('quora_page');
+const enable = document.getElementById("quora-enable")
+const quora = document.getElementById("quora_page")
//const frontend = document.getElementById("quora-frontend");
let protocol
@@ -24,38 +24,32 @@ function changeFrontendsSettings() {
*/
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "disableQuora",
- "protocol"
- ],
- r => {
- enable.checked = !r.disableQuora;
- protocol = r.protocol;
- changeProtocolSettings();
- }
-)
+browser.storage.local.get(["disableQuora", "protocol"], r => {
+ enable.checked = !r.disableQuora
+ protocol = r.protocol
+ changeProtocolSettings()
+})
quora.addEventListener("change", () => {
- browser.storage.local.set({ disableQuora: !enable.checked })
+ browser.storage.local.set({ disableQuora: !enable.checked })
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++){
- utils.processDefaultCustomInstances('quora', frontends[i], protocols[x], document)
- }
- utils.latency('quora', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("quora", frontends[i], protocols[x], document)
+ }
+ utils.latency("quora", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/reddit.js b/src/pages/options/widgets/reddit.js
index a32632d2..c2d16fa3 100644
--- a/src/pages/options/widgets/reddit.js
+++ b/src/pages/options/widgets/reddit.js
@@ -1,64 +1,57 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
const frontends = new Array("libreddit", "teddit")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("reddit-enable");
-const reddit = document.getElementById('reddit_page');
-const frontend = document.getElementById("reddit-frontend");
+const enable = document.getElementById("reddit-enable")
+const reddit = document.getElementById("reddit_page")
+const frontend = document.getElementById("reddit-frontend")
let protocol
function changeFrontendsSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- if (frontends[i] == frontend.value) {
- frontendDiv.style.display = 'block'
- } else {
- frontendDiv.style.display = 'none'
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ if (frontends[i] == frontend.value) {
+ frontendDiv.style.display = "block"
+ } else {
+ frontendDiv.style.display = "none"
+ }
+ }
}
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "disableReddit",
- "protocol",
- "redditFrontend",
- ],
- r => {
- enable.checked = !r.disableReddit
- protocol = r.protocol
- frontend.value = r.redditFrontend
- changeFrontendsSettings();
- changeProtocolSettings();
- }
-)
+browser.storage.local.get(["disableReddit", "protocol", "redditFrontend"], r => {
+ enable.checked = !r.disableReddit
+ protocol = r.protocol
+ frontend.value = r.redditFrontend
+ changeFrontendsSettings()
+ changeProtocolSettings()
+})
reddit.addEventListener("change", () => {
- browser.storage.local.set({
- disableReddit: !enable.checked,
- redditFrontend: frontend.value
- });
- changeFrontendsSettings();
+ browser.storage.local.set({
+ disableReddit: !enable.checked,
+ redditFrontend: frontend.value,
+ })
+ changeFrontendsSettings()
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++){
- utils.processDefaultCustomInstances('reddit', frontends[i], protocols[x], document)
- }
- utils.latency('reddit', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("reddit", frontends[i], protocols[x], document)
+ }
+ utils.latency("reddit", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/reuters.js b/src/pages/options/widgets/reuters.js
index 297e3e70..d8c937e4 100644
--- a/src/pages/options/widgets/reuters.js
+++ b/src/pages/options/widgets/reuters.js
@@ -1,12 +1,12 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
// UNCOMMENT ALL COMMENTS ONCE OTHER FRONTENDS EXIST
const frontends = new Array("neuters")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("reuters-enable");
-const reuters = document.getElementById('reuters_page');
+const enable = document.getElementById("reuters-enable")
+const reuters = document.getElementById("reuters_page")
//const frontend = document.getElementById("reuters-frontend");
let protocol
@@ -24,38 +24,32 @@ function changeFrontendsSettings() {
*/
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "disableReuters",
- "protocol"
- ],
- r => {
- enable.checked = !r.disableReuters;
- protocol = r.protocol;
- changeProtocolSettings();
- }
-)
+browser.storage.local.get(["disableReuters", "protocol"], r => {
+ enable.checked = !r.disableReuters
+ protocol = r.protocol
+ changeProtocolSettings()
+})
reuters.addEventListener("change", () => {
- browser.storage.local.set({ disableReuters: !enable.checked })
+ browser.storage.local.set({ disableReuters: !enable.checked })
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++){
- utils.processDefaultCustomInstances('reuters', frontends[i], protocols[x], document)
- }
- utils.latency('reuters', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("reuters", frontends[i], protocols[x], document)
+ }
+ utils.latency("reuters", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/search.js b/src/pages/options/widgets/search.js
index 7cadf143..3301cd70 100644
--- a/src/pages/options/widgets/search.js
+++ b/src/pages/options/widgets/search.js
@@ -1,4 +1,4 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
// GOAL: to never mention frontends/protocls outside these two arrays, so that adding a new frontend/protocol is as easy as adding it here.
// This may be expanded across the whole project, where almost everything becomes a template, and the frontend/protocol parts just become a JSON file.
@@ -15,8 +15,8 @@ for (let i = 0; i < frontends.length; i++) {
this.frontends[i] = frontends[i].getElementsByClassName(protocol)
}
*/
- // There was a class here, but I deleted a bit of it
- /*
+// There was a class here, but I deleted a bit of it
+/*
this.searxDiv = searxDiv.getElementsByClassName(protocol)[0];
this.searxngDiv = searxngDiv.getElementsByClassName(protocol)[0];
this.librexDiv = librexDiv.getElementsByClassName(protocol)[0];
@@ -35,23 +35,22 @@ const searxngDiv = document.getElementById("searxng");
const whoogleDiv = document.getElementById("whoogle");
*/
-const enable = document.getElementById("search-enable");
-const search = document.getElementById('search_page');
-const frontend = document.getElementById("search-frontend");
+const enable = document.getElementById("search-enable")
+const search = document.getElementById("search_page")
+const frontend = document.getElementById("search-frontend")
let protocol
function changeFrontendsSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- if (frontends[i] == frontend.value) {
- frontendDiv.style.display = 'block'
- } else {
- frontendDiv.style.display = 'none'
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ if (frontends[i] == frontend.value) {
+ frontendDiv.style.display = "block"
+ } else {
+ frontendDiv.style.display = "none"
+ }
+ }
-
- /*
+ /*
if (frontend.value == 'searx') {
searxDiv.style.display = 'block';
searxngDiv.style.display = 'none';
@@ -79,32 +78,27 @@ function changeFrontendsSettings() {
*/
}
-
-
function changeProtocolSettings() {
-
-
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- //if (frontends[i] == frontend.value) { // Here we are checking if the frontend matches the current one. This skips the protocol checking for that frontend, speeding things up. I no longer do this as protocol setting is only set once in the ui so every frontend needs to get their protocols setup immidiately.
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) { //if the frontend value equals the selected one, it will show. Otherwise, it will be hidden
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- /*
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ //if (frontends[i] == frontend.value) { // Here we are checking if the frontend matches the current one. This skips the protocol checking for that frontend, speeding things up. I no longer do this as protocol setting is only set once in the ui so every frontend needs to get their protocols setup immidiately.
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ //if the frontend value equals the selected one, it will show. Otherwise, it will be hidden
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ /*
} else {
continue
}
*/
- }
-
-
+ }
-/*
+ /*
* "Legacy" code
const normalsearxDiv = searxDiv.getElementsByClassName("normal")[0];
const torsearxDiv = searxDiv.getElementsByClassName("tor")[0];
@@ -168,35 +162,28 @@ function changeProtocolSettings() {
*/
}
-browser.storage.local.get(
- [
- "disableSearch",
- "searchFrontend",
- "protocol",
- ],
- r => {
- enable.checked = !r.disableSearch;
- frontend.value = r.searchFrontend;
- protocol = r.protocol;
+browser.storage.local.get(["disableSearch", "searchFrontend", "protocol"], r => {
+ enable.checked = !r.disableSearch
+ frontend.value = r.searchFrontend
+ protocol = r.protocol
- changeFrontendsSettings();
- changeProtocolSettings();
- }
-);
+ changeFrontendsSettings()
+ changeProtocolSettings()
+})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++){
- utils.processDefaultCustomInstances('search', frontends[i], protocols[x], document)
- }
- utils.latency('search', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("search", frontends[i], protocols[x], document)
+ }
+ utils.latency("search", frontends[i], document, location)
}
search.addEventListener("change", () => {
- browser.storage.local.set({
- disableSearch: !enable.checked,
- searchFrontend: frontend.value,
- });
- changeFrontendsSettings();
+ browser.storage.local.set({
+ disableSearch: !enable.checked,
+ searchFrontend: frontend.value,
+ })
+ changeFrontendsSettings()
})
/*
diff --git a/src/pages/options/widgets/sendTargets.js b/src/pages/options/widgets/sendTargets.js
index 27c90d4e..9380a72f 100644
--- a/src/pages/options/widgets/sendTargets.js
+++ b/src/pages/options/widgets/sendTargets.js
@@ -1,12 +1,12 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
// UNCOMMENT ALL COMMENTS ONCE OTHER FRONTENDS EXIST
const frontends = new Array("send")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("sendTargets-enable");
-const sendTargets = document.getElementById('sendTargets_page');
+const enable = document.getElementById("sendTargets-enable")
+const sendTargets = document.getElementById("sendTargets_page")
//const frontend = document.getElementById("sendTargets-frontend");
let protocol
@@ -24,38 +24,32 @@ function changeFrontendsSettings() {
*/
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "disableSendTarget",
- "protocol"
- ],
- r => {
- enable.checked = !r.disableSendTarget;
- protocol = r.protocol;
- changeProtocolSettings();
- }
-)
+browser.storage.local.get(["disableSendTarget", "protocol"], r => {
+ enable.checked = !r.disableSendTarget
+ protocol = r.protocol
+ changeProtocolSettings()
+})
sendTargets.addEventListener("change", () => {
- browser.storage.local.set({ disableSendTarget: !enable.checked })
+ browser.storage.local.set({ disableSendTarget: !enable.checked })
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++){
- utils.processDefaultCustomInstances('sendTargets', frontends[i], protocols[x], document)
- }
- utils.latency('sendTargets', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("sendTargets", frontends[i], protocols[x], document)
+ }
+ utils.latency("sendTargets", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/tiktok.js b/src/pages/options/widgets/tiktok.js
index 37c36366..38ec9ea0 100644
--- a/src/pages/options/widgets/tiktok.js
+++ b/src/pages/options/widgets/tiktok.js
@@ -1,12 +1,12 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
// UNCOMMENT ALL COMMENTS ONCE OTHER FRONTENDS EXIST
const frontends = new Array("proxiTok")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("tiktok-enable");
-const tiktok = document.getElementById('tiktok_page');
+const enable = document.getElementById("tiktok-enable")
+const tiktok = document.getElementById("tiktok_page")
//const frontend = document.getElementById("tiktok-frontend");
let protocol
@@ -24,38 +24,32 @@ function changeFrontendsSettings() {
*/
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "disableTiktok",
- "protocol"
- ],
- r => {
- enable.checked = !r.disableTiktok;
- protocol = r.protocol;
- changeProtocolSettings();
- }
-)
+browser.storage.local.get(["disableTiktok", "protocol"], r => {
+ enable.checked = !r.disableTiktok
+ protocol = r.protocol
+ changeProtocolSettings()
+})
tiktok.addEventListener("change", () => {
- browser.storage.local.set({ disableTiktok: !enable.checked });
+ browser.storage.local.set({ disableTiktok: !enable.checked })
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++){
- utils.processDefaultCustomInstances('tiktok', frontends[i], protocols[x], document)
- }
- utils.latency('tiktok', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("tiktok", frontends[i], protocols[x], document)
+ }
+ utils.latency("tiktok", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/translate.js b/src/pages/options/widgets/translate.js
index 87b8bb8d..e1008139 100644
--- a/src/pages/options/widgets/translate.js
+++ b/src/pages/options/widgets/translate.js
@@ -1,64 +1,57 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
const frontends = new Array("simplyTranslate", "lingva")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("translate-enable");
-const translate = document.getElementById('translate_page');
-const frontend = document.getElementById("translate-frontend");
+const enable = document.getElementById("translate-enable")
+const translate = document.getElementById("translate_page")
+const frontend = document.getElementById("translate-frontend")
let protocol
function changeFrontendsSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- if (frontends[i] == frontend.value) {
- frontendDiv.style.display = 'block'
- } else {
- frontendDiv.style.display = 'none'
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ if (frontends[i] == frontend.value) {
+ frontendDiv.style.display = "block"
+ } else {
+ frontendDiv.style.display = "none"
+ }
+ }
}
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "translateDisable",
- "translateFrontend",
- "protocol"
- ],
- r => {
- enable.checked = !r.translateDisable;
- frontend.value = r.translateFrontend;
- protocol = r.protocol;
- changeFrontendsSettings();
- changeProtocolSettings();
- }
-);
+browser.storage.local.get(["translateDisable", "translateFrontend", "protocol"], r => {
+ enable.checked = !r.translateDisable
+ frontend.value = r.translateFrontend
+ protocol = r.protocol
+ changeFrontendsSettings()
+ changeProtocolSettings()
+})
translate.addEventListener("change", () => {
- browser.storage.local.set({
- translateDisable: !enable.checked,
- translateFrontend: frontend.value,
- })
- changeFrontendsSettings();
+ browser.storage.local.set({
+ translateDisable: !enable.checked,
+ translateFrontend: frontend.value,
+ })
+ changeFrontendsSettings()
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++){
- utils.processDefaultCustomInstances('translate', frontends[i], protocols[x], document)
- }
- utils.latency('translate', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("translate", frontends[i], protocols[x], document)
+ }
+ utils.latency("translate", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/twitter.js b/src/pages/options/widgets/twitter.js
index d54fc928..5ad760b3 100644
--- a/src/pages/options/widgets/twitter.js
+++ b/src/pages/options/widgets/twitter.js
@@ -1,13 +1,13 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
// UNCOMMENT ALL COMMENTS ONCE OTHER FRONTENDS EXIST
const frontends = new Array("nitter")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("twitter-enable");
-const twitter = document.getElementById('twitter_page');
-const redirectType = document.getElementById("twitter-redirect_type");
+const enable = document.getElementById("twitter-enable")
+const twitter = document.getElementById("twitter_page")
+const redirectType = document.getElementById("twitter-redirect_type")
//const frontend = document.getElementById("twitter-frontend");
let protocol
@@ -25,43 +25,36 @@ function changeFrontendsSettings() {
*/
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "disableTwitter",
- "protocol",
- "twitterRedirectType"
- ],
- r => {
- enable.checked = !r.disableTwitter;
- protocol = r.protocol;
- redirectType.value = r.twitterRedirectType;
- changeProtocolSettings();
- }
-)
+browser.storage.local.get(["disableTwitter", "protocol", "twitterRedirectType"], r => {
+ enable.checked = !r.disableTwitter
+ protocol = r.protocol
+ redirectType.value = r.twitterRedirectType
+ changeProtocolSettings()
+})
twitter.addEventListener("change", () => {
- browser.storage.local.set({
- disableTwitter: !enable.checked,
- twitterRedirectType: redirectType.value,
- });
+ browser.storage.local.set({
+ disableTwitter: !enable.checked,
+ twitterRedirectType: redirectType.value,
+ })
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++){
- utils.processDefaultCustomInstances('twitter', frontends[i], protocols[x], document)
- }
- utils.latency('twitter', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("twitter", frontends[i], protocols[x], document)
+ }
+ utils.latency("twitter", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/wikipedia.js b/src/pages/options/widgets/wikipedia.js
index 09b21d02..9d06488b 100644
--- a/src/pages/options/widgets/wikipedia.js
+++ b/src/pages/options/widgets/wikipedia.js
@@ -1,12 +1,12 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
// UNCOMMENT ALL COMMENTS ONCE OTHER FRONTENDS EXIST
const frontends = new Array("wikiless")
const protocols = new Array("normal", "tor", "i2p", "loki")
-const enable = document.getElementById("wikipedia-enable");
-const wikipedia = document.getElementById('wikipedia_page');
+const enable = document.getElementById("wikipedia-enable")
+const wikipedia = document.getElementById("wikipedia_page")
//const frontend = document.getElementById("wikipedia-frontend");
let protocol
@@ -24,38 +24,32 @@ function changeFrontendsSettings() {
*/
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "disableWikipedia",
- "protocol"
- ],
- r => {
- enable.checked = !r.disableWikipedia;
- protocol = r.protocol;
- changeProtocolSettings();
- }
-)
+browser.storage.local.get(["disableWikipedia", "protocol"], r => {
+ enable.checked = !r.disableWikipedia
+ protocol = r.protocol
+ changeProtocolSettings()
+})
wikipedia.addEventListener("change", () => {
- browser.storage.local.set({ disableWikipedia: !enable.checked })
+ browser.storage.local.set({ disableWikipedia: !enable.checked })
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++) {
- utils.processDefaultCustomInstances('wikipedia', frontends[i], protocols[x], document)
- }
- utils.latency('wikipedia', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("wikipedia", frontends[i], protocols[x], document)
+ }
+ utils.latency("wikipedia", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/youtube.js b/src/pages/options/widgets/youtube.js
index 76b673bd..065a195b 100644
--- a/src/pages/options/widgets/youtube.js
+++ b/src/pages/options/widgets/youtube.js
@@ -1,101 +1,92 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
-const frontends = new Array("invidious", "piped", "pipedMaterial")
+const frontends = new Array("invidious", "piped", "pipedMaterial", "cloudtube")
const protocols = new Array("normal", "tor", "i2p", "loki")
const singleInstanceFrontends = new Array("freetube", "yatte")
-const enable = document.getElementById("youtube-enable");
-const youtube = document.getElementById('youtube_page');
-const youtubeEmbedFrontend = document.getElementById("youtube-embed_frontend");
-const onlyEmbeddedVideo = document.getElementById("youtube-redirect_type");
-const embeddedFrontendDiv = document.getElementById("youtube-embedded_frontend");
-const frontend = document.getElementById("youtube-frontend");
+const enable = document.getElementById("youtube-enable")
+const youtube = document.getElementById("youtube_page")
+const youtubeEmbedFrontend = document.getElementById("youtube-embed_frontend")
+const onlyEmbeddedVideo = document.getElementById("youtube-redirect_type")
+const embeddedFrontendDiv = document.getElementById("youtube-embedded_frontend")
+const frontend = document.getElementById("youtube-frontend")
let protocol
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
function changeEmbedFrontendsSettings() {
- if (embeddedFrontendDiv.style.display == 'block') {
- for (let i = 0; i < frontends.length; i++) {
- const embeddedFrontendDiv = document.getElementById(frontends[i])
- if (frontends[i] == youtubeEmbedFrontend.value) {
- embeddedFrontendDiv.style.display = 'block'
- } else {
- embeddedFrontendDiv.style.display = 'none'
- }
- }
- }
+ if (embeddedFrontendDiv.style.display == "block") {
+ for (let i = 0; i < frontends.length; i++) {
+ const embeddedFrontendDiv = document.getElementById(frontends[i])
+ if (frontends[i] == youtubeEmbedFrontend.value) {
+ embeddedFrontendDiv.style.display = "block"
+ } else {
+ embeddedFrontendDiv.style.display = "none"
+ }
+ }
+ }
}
function changeFrontendsSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- if (frontends[i] == frontend.value) {
- frontendDiv.style.display = 'block'
- } else {
- frontendDiv.style.display = 'none'
- }
- }
- let singleInstanceFrontend = false
- for (let i = 0; i < singleInstanceFrontends.length; i++) {
- if (singleInstanceFrontends[i] == frontend.value) {
- singleInstanceFrontend = true
- }
- }
- if (singleInstanceFrontend == true) {
- embeddedFrontendDiv.style.display = 'block'
- } else {
- embeddedFrontendDiv.style.display = 'none'
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ if (frontends[i] == frontend.value) {
+ frontendDiv.style.display = "block"
+ } else {
+ frontendDiv.style.display = "none"
+ }
+ }
+ let singleInstanceFrontend = false
+ for (let i = 0; i < singleInstanceFrontends.length; i++) {
+ if (singleInstanceFrontends[i] == frontend.value) {
+ singleInstanceFrontend = true
+ }
+ }
+ if (singleInstanceFrontend == true) {
+ embeddedFrontendDiv.style.display = "block"
+ } else {
+ embeddedFrontendDiv.style.display = "none"
+ }
}
-browser.storage.local.get(
- [
- "disableYoutube",
- "onlyEmbeddedVideo",
- "youtubeRedirects",
- "youtubeFrontend",
+browser.storage.local.get(["disableYoutube", "onlyEmbeddedVideo", "youtubeRedirects", "youtubeFrontend", "youtubeEmbedFrontend", "protocol"], r => {
+ enable.checked = !r.disableYoutube
+ onlyEmbeddedVideo.value = r.onlyEmbeddedVideo
+ youtubeEmbedFrontend.value = r.youtubeEmbedFrontend
+ frontend.value = r.youtubeFrontend
+ protocol = r.protocol
- "youtubeEmbedFrontend",
- "protocol"
- ],
- r => {
- enable.checked = !r.disableYoutube;
- onlyEmbeddedVideo.value = r.onlyEmbeddedVideo;
- frontend.value = r.youtubeFrontend;
- protocol = r.protocol;
-
- changeFrontendsSettings();
- changeProtocolSettings();
- changeEmbedFrontendsSettings();
- }
-);
+ changeFrontendsSettings()
+ changeProtocolSettings()
+ changeEmbedFrontendsSettings()
+})
youtube.addEventListener("change", () => {
- browser.storage.local.set({
- disableYoutube: !enable.checked,
- youtubeEmbedFrontend: youtubeEmbedFrontend.value,
- onlyEmbeddedVideo: onlyEmbeddedVideo.value
- })
- changeFrontendsSettings();
- changeEmbedFrontendsSettings();
+ browser.storage.local.set({
+ disableYoutube: !enable.checked,
+ youtubeEmbedFrontend: youtubeEmbedFrontend.value,
+ youtubeFrontend: frontend.value,
+ onlyEmbeddedVideo: onlyEmbeddedVideo.value,
+ })
+ changeFrontendsSettings()
+ changeEmbedFrontendsSettings()
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++) {
- utils.processDefaultCustomInstances('youtube', frontends[i], protocols[x], document)
- }
- utils.latency('youtube', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("youtube", frontends[i], protocols[x], document)
+ }
+ utils.latency("youtube", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/youtube.pug b/src/pages/options/widgets/youtube.pug
index a7832d4c..33a43c34 100644
--- a/src/pages/options/widgets/youtube.pug
+++ b/src/pages/options/widgets/youtube.pug
@@ -12,6 +12,7 @@ section#youtube_page.option-block
option(value="invidious") Invidious
option(value="piped") Piped
option(value="pipedMaterial") Piped-Material
+ option(value="cloudtube") CloudTube
option(value="freetube") FreeTube
option(value="yatte") Yattee
@@ -22,6 +23,7 @@ section#youtube_page.option-block
option(value="invidious") Invidious
option(value="piped") Piped
option(value="pipedMaterial") Piped-Material
+ option(value="cloudtube") CloudTube
.some-block.option-block
h4(data-localise="__MSG_redirectType__") Redirect Type
@@ -81,4 +83,21 @@ section#youtube_page.option-block
include ../../widgets/instances.pug
+instances('http://piped-material.loki')
+ #cloudtube
+ hr
+ .normal
+ include ../../widgets/instances.pug
+ +instances('https://cloudtube.com')
+ include ../../widgets/latency.pug
+ +latency('cloudtube')
+ .tor
+ +instances('http://cloudtube.onion')
+ include ../../widgets/instances.pug
+ .i2p
+ include ../../widgets/instances.pug
+ +instances('http://cloudtube.i2p')
+ .loki
+ include ../../widgets/instances.pug
+ +instances('http://cloudtube.loki')
+
script(type="module" src="./widgets/youtube.js")
diff --git a/src/pages/options/widgets/youtubeMusic.js b/src/pages/options/widgets/youtubeMusic.js
index 4d33c1fa..ad51ce7c 100644
--- a/src/pages/options/widgets/youtubeMusic.js
+++ b/src/pages/options/widgets/youtubeMusic.js
@@ -1,61 +1,57 @@
-import utils from "../../../assets/javascripts/utils.js";
+import utils from "../../../assets/javascripts/utils.js"
-// UNCOMMENT ALL COMMENTS ONCE OTHER FRONTENDS EXIST
-
-const frontends = new Array("beatbump")
+const frontends = new Array("beatbump", "hyperpipe")
const protocols = new Array("normal", "tor", "i2p", "loki")
-let enable = document.getElementById("youtubeMusic-enable");
-const youtubeMusic = document.getElementById('youtubeMusic_page');
-//const frontend = document.getElementById("youtubeMusic-frontend");
+let enable = document.getElementById("youtubeMusic-enable")
+const youtubeMusic = document.getElementById("youtubeMusic_page")
+const frontend = document.getElementById("youtubeMusic-frontend")
let protocol
-/*
function changeFrontendsSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- if (frontends[i] == frontend.value) {
- frontendDiv.style.display = 'block'
- } else {
- frontendDiv.style.display = 'none'
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ if (frontends[i] == frontend.value) {
+ frontendDiv.style.display = "block"
+ } else {
+ frontendDiv.style.display = "none"
+ }
+ }
}
-*/
function changeProtocolSettings() {
- for (let i = 0; i < frontends.length; i++) {
- const frontendDiv = document.getElementById(frontends[i])
- for (let x = 0; x < protocols.length; x++) {
- const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
- if (protocols[x] == protocol) {
- protocolDiv.style.display = 'block'
- } else {
- protocolDiv.style.display = 'none'
- }
- }
- }
+ for (let i = 0; i < frontends.length; i++) {
+ const frontendDiv = document.getElementById(frontends[i])
+ for (let x = 0; x < protocols.length; x++) {
+ const protocolDiv = frontendDiv.getElementsByClassName(protocols[x])[0]
+ if (protocols[x] == protocol) {
+ protocolDiv.style.display = "block"
+ } else {
+ protocolDiv.style.display = "none"
+ }
+ }
+ }
}
-browser.storage.local.get(
- [
- "disableYoutubeMusic",
- "protocol"
- ],
- r => {
- enable.checked = !r.disableYoutubeMusic
- protocol = r.protocol
- changeProtocolSettings()
- }
-);
+browser.storage.local.get(["disableYoutubeMusic", "youtubeMusicFrontend", "protocol"], r => {
+ enable.checked = !r.disableYoutubeMusic
+ frontend.value = r.youtubeMusicFrontend
+ protocol = r.protocol
+ changeFrontendsSettings()
+ changeProtocolSettings()
+})
youtubeMusic.addEventListener("change", () => {
- browser.storage.local.set({ disableYoutubeMusic: !enable.checked })
+ browser.storage.local.set({
+ disableYoutubeMusic: !enable.checked,
+ youtubeMusicFrontend: frontend.value,
+ })
+ changeFrontendsSettings()
})
for (let i = 0; i < frontends.length; i++) {
- for (let x = 0; x < protocols.length; x++) {
- utils.processDefaultCustomInstances('youtubeMusic', frontends[i], protocols[x], document)
- }
- utils.latency('youtubeMusic', frontends[i], document, location)
+ for (let x = 0; x < protocols.length; x++) {
+ utils.processDefaultCustomInstances("youtubeMusic", frontends[i], protocols[x], document)
+ }
+ utils.latency("youtubeMusic", frontends[i], document, location)
}
diff --git a/src/pages/options/widgets/youtubeMusic.pug b/src/pages/options/widgets/youtubeMusic.pug
index f307ae9a..bcba3d2d 100644
--- a/src/pages/options/widgets/youtubeMusic.pug
+++ b/src/pages/options/widgets/youtubeMusic.pug
@@ -6,11 +6,17 @@ section#youtubeMusic_page.option-block
h4(data-localise="__MSG_enable__") Enable
input#youtubeMusic-enable(type="checkbox")
+ .some-block.option-block
+ h4(data-localise="__MSG_frontend__") Frontend
+ select#youtubeMusic-frontend
+ option(value="beatbump") Beatbump
+ option(value="hyperpipe") Hyperpipe
+
#beatbump
hr
.normal
include ../../widgets/instances.pug
- +instances('https://beatbump.wewe')
+ +instances('https://beatbump.org')
include ../../widgets/latency.pug
+latency('beatbump')
.tor
@@ -23,4 +29,21 @@ section#youtubeMusic_page.option-block
include ../../widgets/instances.pug
+instances('http://beatbump.loki')
+ #hyperpipe
+ hr
+ .normal
+ include ../../widgets/instances.pug
+ +instances('https://hyperpipe.org')
+ include ../../widgets/latency.pug
+ +latency('hyperpipe')
+ .tor
+ +instances('http://hyperpipe.onion')
+ include ../../widgets/instances.pug
+ .i2p
+ include ../../widgets/instances.pug
+ +instances('http://hyperpipe.i2p')
+ .loki
+ include ../../widgets/instances.pug
+ +instances('http://hyperpipe.loki')
+
script(type="module" src="./widgets/youtubeMusic.js")
diff --git a/src/pages/popup/popup.html b/src/pages/popup/popup.html
index 4030f0ec..7493ecbe 100644
--- a/src/pages/popup/popup.html
+++ b/src/pages/popup/popup.html
@@ -97,7 +97,9 @@
<h4 data-localise="__MSG_sendFiles__">Send Files</h4></a>
<input class="disable-sendTargets" type="checkbox"/>
</div>
- <hr>
+ <div id="current_site_divider">
+ <hr>
+ </div>
</div>
<div class="all_sites">
<div class="youtube some-block"><a class="title" href="https://youtube.com"><img src="../../assets/images/youtube-icon.png"/>
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js
index 5e7b2336..465080c5 100644
--- a/src/pages/popup/popup.js
+++ b/src/pages/popup/popup.js
@@ -1,330 +1,445 @@
-"use strict";
-window.browser = window.browser || window.chrome;
+"use strict"
+window.browser = window.browser || window.chrome
-import utils from "../../assets/javascripts/utils.js";
-import generalHelper from "../../assets/javascripts/general.js";
-
-import youtubeHelper from "../../assets/javascripts/youtube/youtube.js";
-import youtubeMusicHelper from "../../assets/javascripts/youtubeMusic.js";
-import twitterHelper from "../../assets/javascripts/twitter.js";
-import instagramHelper from "../../assets/javascripts/instagram.js";
-import redditHelper from "../../assets/javascripts/reddit.js";
-import searchHelper from "../../assets/javascripts/search.js";
-import translateHelper from "../../assets/javascripts/translate/translate.js";
-import mapsHelper from "../../assets/javascripts/maps.js";
-import wikipediaHelper from "../../assets/javascripts/wikipedia.js";
-import mediumHelper from "../../assets/javascripts/medium.js";
-import quoraHelper from "../../assets/javascripts/quora.js";
-import libremdbHelper from "../../assets/javascripts/imdb.js";
-import reutersHelper from "../../assets/javascripts/reuters.js";
-import imgurHelper from "../../assets/javascripts/imgur.js";
-import tiktokHelper from "../../assets/javascripts/tiktok.js";
-import sendTargetsHelper from "../../assets/javascripts/sendTargets.js";
-import peertubeHelper from "../../assets/javascripts/peertube.js";
-import lbryHelper from "../../assets/javascripts/lbry.js";
+import utils from "../../assets/javascripts/utils.js"
+import generalHelper from "../../assets/javascripts/general.js"
+import youtubeHelper from "../../assets/javascripts/youtube/youtube.js"
+import youtubeMusicHelper from "../../assets/javascripts/youtubeMusic.js"
+import twitterHelper from "../../assets/javascripts/twitter.js"
+import instagramHelper from "../../assets/javascripts/instagram.js"
+import redditHelper from "../../assets/javascripts/reddit.js"
+import searchHelper from "../../assets/javascripts/search.js"
+import translateHelper from "../../assets/javascripts/translate/translate.js"
+import mapsHelper from "../../assets/javascripts/maps.js"
+import wikipediaHelper from "../../assets/javascripts/wikipedia.js"
+import mediumHelper from "../../assets/javascripts/medium.js"
+import quoraHelper from "../../assets/javascripts/quora.js"
+import libremdbHelper from "../../assets/javascripts/imdb.js"
+import reutersHelper from "../../assets/javascripts/reuters.js"
+import imgurHelper from "../../assets/javascripts/imgur.js"
+import tiktokHelper from "../../assets/javascripts/tiktok.js"
+import sendTargetsHelper from "../../assets/javascripts/sendTargets.js"
+import peertubeHelper from "../../assets/javascripts/peertube.js"
+import lbryHelper from "../../assets/javascripts/lbry.js"
utils.unify(true).then(r => {
- if (!r) document.getElementById('unify_div').style.display = 'none';
- else {
- const unify = document.getElementById('unify');
- const textElement = document.getElementById('unify').getElementsByTagName('h4')[0]
- unify.addEventListener("click", () => {
- const oldHtml = textElement.innerHTML;
- textElement.innerHTML = '...';
- browser.runtime.sendMessage({ function: 'unify' },
- response => { if (response && response.response) textElement.innerHTML = oldHtml })
- }
- );
- }
+ if (!r) document.getElementById("unify_div").style.display = "none"
+ else {
+ const unify = document.getElementById("unify")
+ const textElement = document.getElementById("unify").getElementsByTagName("h4")[0]
+ unify.addEventListener("click", () => {
+ const oldHtml = textElement.innerHTML
+ textElement.innerHTML = "..."
+ browser.runtime.sendMessage({ function: "unify" }, response => {
+ if (response && response.response) textElement.innerHTML = oldHtml
+ })
+ })
+ }
})
utils.switchInstance(true).then(r => {
- if (!r) document.getElementById("change_instance_div").style.display = 'none';
- else document.getElementById("change_instance").addEventListener("click", () => utils.switchInstance(false));
-});
+ if (!r) document.getElementById("change_instance_div").style.display = "none"
+ else document.getElementById("change_instance").addEventListener("click", () => utils.switchInstance(false))
+})
utils.copyRaw(true).then(r => {
- if (!r) document.getElementById('copy_raw_div').style.display = 'none';
- else {
- const copy_raw = document.getElementById('copy_raw');
- copy_raw.addEventListener("click", () => utils.copyRaw(false, copy_raw));
- }
+ if (!r) document.getElementById("copy_raw_div").style.display = "none"
+ else {
+ const copy_raw = document.getElementById("copy_raw")
+ copy_raw.addEventListener("click", () => utils.copyRaw(false, copy_raw))
+ }
})
-document.getElementById("more-options").addEventListener("click", () => browser.runtime.openOptionsPage());
+document.getElementById("more-options").addEventListener("click", () => browser.runtime.openOptionsPage())
+
+const allSites = document.getElementsByClassName("all_sites")[0]
+const currSite = document.getElementsByClassName("current_site")[0]
-const allSites = document.getElementsByClassName('all_sites')[0];
-const currSite = document.getElementsByClassName('current_site')[0];
+const disableTwitterCurrentSite = currSite.getElementsByClassName("disable-nitter")[0]
+const disableTwitterAllSites = allSites.getElementsByClassName("disable-nitter")[0]
-const disableTwitterCurrentSite = currSite.getElementsByClassName("disable-nitter")[0];
-const disableTwitterAllSites = allSites.getElementsByClassName("disable-nitter")[0];
+const disableYoutubeCurrentSite = currSite.getElementsByClassName("disable-youtube")[0]
+const disableYoutubeAllSites = allSites.getElementsByClassName("disable-youtube")[0]
-const disableYoutubeCurrentSite = currSite.getElementsByClassName("disable-youtube")[0];
-const disableYoutubeAllSites = allSites.getElementsByClassName("disable-youtube")[0];
+const disableYoutubeMusicCurrentSite = currSite.getElementsByClassName("disable-youtubeMusic")[0]
+const disableYoutubeMusicAllSites = allSites.getElementsByClassName("disable-youtubeMusic")[0]
-const disableYoutubeMusicCurrentSite = currSite.getElementsByClassName("disable-youtubeMusic")[0];
-const disableYoutubeMusicAllSites = allSites.getElementsByClassName("disable-youtubeMusic")[0];
+const disableInstagramCurrentSite = currSite.getElementsByClassName("disable-bibliogram")[0]
+const disableInstagramAllSites = allSites.getElementsByClassName("disable-bibliogram")[0]
-const disableInstagramCurrentSite = currSite.getElementsByClassName("disable-bibliogram")[0];
-const disableInstagramAllSites = allSites.getElementsByClassName("disable-bibliogram")[0];
+const disableMapsCurrentSite = currSite.getElementsByClassName("disable-osm")[0]
+const disableMapsAllSites = allSites.getElementsByClassName("disable-osm")[0]
-const disableMapsCurrentSite = currSite.getElementsByClassName("disable-osm")[0];
-const disableMapsAllSites = allSites.getElementsByClassName("disable-osm")[0];
+const disableRedditCurrentSite = currSite.getElementsByClassName("disable-reddit")[0]
+const disableRedditAllSites = allSites.getElementsByClassName("disable-reddit")[0]
-const disableRedditCurrentSite = currSite.getElementsByClassName("disable-reddit")[0];
-const disableRedditAllSites = allSites.getElementsByClassName("disable-reddit")[0];
+const disableSearchCurrentSite = currSite.getElementsByClassName("disable-search")[0]
+const disableSearchAllSites = allSites.getElementsByClassName("disable-search")[0]
-const disableSearchCurrentSite = currSite.getElementsByClassName("disable-search")[0];
-const disableSearchAllSites = allSites.getElementsByClassName("disable-search")[0];
+const disableTranslateCurrentSite = currSite.getElementsByClassName("disable-translate")[0]
+const disableTranslateAllSites = allSites.getElementsByClassName("disable-translate")[0]
-const disableTranslateCurrentSite = currSite.getElementsByClassName("disable-translate")[0];
-const disableTranslateAllSites = allSites.getElementsByClassName("disable-translate")[0];
+const disableWikipediaCurrentSite = currSite.getElementsByClassName("disable-wikipedia")[0]
+const disableWikipediaAllSites = allSites.getElementsByClassName("disable-wikipedia")[0]
-const disableWikipediaCurrentSite = currSite.getElementsByClassName("disable-wikipedia")[0];
-const disableWikipediaAllSites = allSites.getElementsByClassName("disable-wikipedia")[0];
+const disableMediumCurrentSite = currSite.getElementsByClassName("disable-medium")[0]
+const disableMediumAllSites = allSites.getElementsByClassName("disable-medium")[0]
-const disableMediumCurrentSite = currSite.getElementsByClassName("disable-medium")[0];
-const disableMediumAllSites = allSites.getElementsByClassName("disable-medium")[0];
+const disableQuoraCurrentSite = currSite.getElementsByClassName("disable-quora")[0]
+const disableQuoraAllSites = allSites.getElementsByClassName("disable-quora")[0]
-const disableQuoraCurrentSite = currSite.getElementsByClassName("disable-quora")[0];
-const disableQuoraAllSites = allSites.getElementsByClassName("disable-quora")[0];
+const disableImdbCurrentSite = currSite.getElementsByClassName("disable-imdb")[0]
+const disableImdbAllSites = allSites.getElementsByClassName("disable-imdb")[0]
-const disableImdbCurrentSite = currSite.getElementsByClassName("disable-imdb")[0];
-const disableImdbAllSites = allSites.getElementsByClassName("disable-imdb")[0];
+const disableReutersCurrentSite = currSite.getElementsByClassName("disable-reuters")[0]
+const disableReutersAllSites = allSites.getElementsByClassName("disable-reuters")[0]
-const disableReutersCurrentSite = currSite.getElementsByClassName("disable-reuters")[0];
-const disableReutersAllSites = allSites.getElementsByClassName("disable-reuters")[0];
+const disablePeertubeTargetsCurrentSite = currSite.getElementsByClassName("disable-peertube")[0]
+const disablePeertubeTargetsAllSites = allSites.getElementsByClassName("disable-peertube")[0]
-const disablePeertubeTargetsCurrentSite = currSite.getElementsByClassName("disable-peertube")[0];
-const disablePeertubeTargetsAllSites = allSites.getElementsByClassName("disable-peertube")[0];
+const disableLbryTargetsCurrentSite = currSite.getElementsByClassName("disable-lbry")[0]
+const disableLbryTargetsAllSites = allSites.getElementsByClassName("disable-lbry")[0]
-const disableLbryTargetsCurrentSite = currSite.getElementsByClassName("disable-lbry")[0];
-const disableLbryTargetsAllSites = allSites.getElementsByClassName("disable-lbry")[0];
+const disableSendTargetsCurrentSite = currSite.getElementsByClassName("disable-sendTargets")[0]
+const disableSendTargetsAllSites = allSites.getElementsByClassName("disable-sendTargets")[0]
-const disableSendTargetsCurrentSite = currSite.getElementsByClassName("disable-sendTargets")[0];
-const disableSendTargetsAllSites = allSites.getElementsByClassName("disable-sendTargets")[0];
+const disableImgurCurrentSite = currSite.getElementsByClassName("disable-imgur")[0]
+const disableImgurAllSites = allSites.getElementsByClassName("disable-imgur")[0]
-const disableImgurCurrentSite = currSite.getElementsByClassName("disable-imgur")[0];
-const disableImgurAllSites = allSites.getElementsByClassName("disable-imgur")[0];
+const disableTiktokCurrentSite = currSite.getElementsByClassName("disable-tiktok")[0]
+const disableTiktokAllSites = allSites.getElementsByClassName("disable-tiktok")[0]
-const disableTiktokCurrentSite = currSite.getElementsByClassName("disable-tiktok")[0];
-const disableTiktokAllSites = allSites.getElementsByClassName("disable-tiktok")[0];
+const currentSiteIsFrontend = document.getElementById("current_site_divider")
browser.storage.local.get(
- [
- "disableTwitter",
- "disableYoutube",
- "disableYoutubeMusic",
- "disableInstagram",
- "disableMaps",
- "disableReddit",
- "disableSearch",
- "translateDisable",
- "disableWikipedia",
- "disableImgur",
- "disableTiktok",
- "disableMedium",
- "disableQuora",
- "disableImdb",
- "disableReuters",
- "disablePeertubeTargets",
- "disableLbryTargets",
- "disableSendTarget",
- "popupFrontends",
- ],
- r => {
- disableTwitterCurrentSite.checked = !r.disableTwitter; disableTwitterAllSites.checked = !r.disableTwitter;
- disableYoutubeCurrentSite.checked = !r.disableYoutube; disableYoutubeAllSites.checked = !r.disableYoutube;
- disableYoutubeMusicCurrentSite.checked = !r.disableYoutubeMusic; disableYoutubeMusicAllSites.checked = !r.disableYoutubeMusic;
- disableInstagramCurrentSite.checked = !r.disableInstagram; disableInstagramAllSites.checked = !r.disableInstagram;
- disableMapsCurrentSite.checked = !r.disableMaps; disableMapsAllSites.checked = !r.disableMaps;
- disableRedditCurrentSite.checked = !r.disableReddit; disableRedditAllSites.checked = !r.disableReddit;
- disableSearchCurrentSite.checked = !r.disableSearch; disableSearchAllSites.checked = !r.disableSearch;
- disableTranslateCurrentSite.checked = !r.translateDisable; disableTranslateAllSites.checked = !r.translateDisable;
- disableWikipediaCurrentSite.checked = !r.disableWikipedia; disableWikipediaAllSites.checked = !r.disableWikipedia;
- disableImgurCurrentSite.checked = !r.disableImgur; disableImgurAllSites.checked = !r.disableImgur;
- disableTiktokCurrentSite.checked = !r.disableTiktok; disableTiktokAllSites.checked = !r.disableTiktok;
- disableMediumCurrentSite.checked = !r.disableMedium; disableMediumAllSites.checked = !r.disableMedium;
- disableQuoraCurrentSite.checked = !r.disableQuora; disableQuoraAllSites.checked = !r.disableQuora;
- disableImdbCurrentSite.checked = !r.disableImdb; disableImdbAllSites.checked = !r.disableImdb;
- disableReutersCurrentSite.checked = !r.disableReuters; disableReutersAllSites.checked = !r.disableReuters;
- disablePeertubeTargetsCurrentSite.checked = !r.disablePeertubeTargets; disablePeertubeTargetsAllSites.checked = !r.disablePeertubeTargets;
- disableLbryTargetsCurrentSite.checked = !r.disableLbryTargets; disableLbryTargetsAllSites.checked = !r.disableLbryTargets;
- disableSendTargetsCurrentSite.checked = !r.disableSendTarget; disableSendTargetsAllSites.checked = !r.disableSendTarget;
+ [
+ "disableTwitter",
+ "disableYoutube",
+ "disableYoutubeMusic",
+ "disableInstagram",
+ "disableMaps",
+ "disableReddit",
+ "disableSearch",
+ "translateDisable",
+ "disableWikipedia",
+ "disableImgur",
+ "disableTiktok",
+ "disableMedium",
+ "disableQuora",
+ "disableImdb",
+ "disableReuters",
+ "disablePeertubeTargets",
+ "disableLbryTargets",
+ "disableSendTarget",
+ "popupFrontends",
+ ],
+ r => {
+ disableTwitterCurrentSite.checked = !r.disableTwitter
+ disableTwitterAllSites.checked = !r.disableTwitter
+ disableYoutubeCurrentSite.checked = !r.disableYoutube
+ disableYoutubeAllSites.checked = !r.disableYoutube
+ disableYoutubeMusicCurrentSite.checked = !r.disableYoutubeMusic
+ disableYoutubeMusicAllSites.checked = !r.disableYoutubeMusic
+ disableInstagramCurrentSite.checked = !r.disableInstagram
+ disableInstagramAllSites.checked = !r.disableInstagram
+ disableMapsCurrentSite.checked = !r.disableMaps
+ disableMapsAllSites.checked = !r.disableMaps
+ disableRedditCurrentSite.checked = !r.disableReddit
+ disableRedditAllSites.checked = !r.disableReddit
+ disableSearchCurrentSite.checked = !r.disableSearch
+ disableSearchAllSites.checked = !r.disableSearch
+ disableTranslateCurrentSite.checked = !r.translateDisable
+ disableTranslateAllSites.checked = !r.translateDisable
+ disableWikipediaCurrentSite.checked = !r.disableWikipedia
+ disableWikipediaAllSites.checked = !r.disableWikipedia
+ disableImgurCurrentSite.checked = !r.disableImgur
+ disableImgurAllSites.checked = !r.disableImgur
+ disableTiktokCurrentSite.checked = !r.disableTiktok
+ disableTiktokAllSites.checked = !r.disableTiktok
+ disableMediumCurrentSite.checked = !r.disableMedium
+ disableMediumAllSites.checked = !r.disableMedium
+ disableQuoraCurrentSite.checked = !r.disableQuora
+ disableQuoraAllSites.checked = !r.disableQuora
+ disableImdbCurrentSite.checked = !r.disableImdb
+ disableImdbAllSites.checked = !r.disableImdb
+ disableReutersCurrentSite.checked = !r.disableReuters
+ disableReutersAllSites.checked = !r.disableReuters
+ disablePeertubeTargetsCurrentSite.checked = !r.disablePeertubeTargets
+ disablePeertubeTargetsAllSites.checked = !r.disablePeertubeTargets
+ disableLbryTargetsCurrentSite.checked = !r.disableLbryTargets
+ disableLbryTargetsAllSites.checked = !r.disableLbryTargets
+ disableSendTargetsCurrentSite.checked = !r.disableSendTarget
+ disableSendTargetsAllSites.checked = !r.disableSendTarget
- browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
- for (const frontend of generalHelper.allPopupFrontends) {
- if (!r.popupFrontends.includes(frontend))
- allSites.getElementsByClassName(frontend)[0].classList.add("hide")
- else
- allSites.getElementsByClassName(frontend)[0].classList.remove("hide")
- currSite.getElementsByClassName(frontend)[0].classList.add("hide")
- }
+ browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
+ for (const frontend of generalHelper.allPopupFrontends) {
+ if (!r.popupFrontends.includes(frontend)) allSites.getElementsByClassName(frontend)[0].classList.add("hide")
+ else allSites.getElementsByClassName(frontend)[0].classList.remove("hide")
+ currSite.getElementsByClassName(frontend)[0].classList.add("hide")
+ }
- let url;
- try { url = new URL(tabs[0].url); }
- catch { return; }
+ let url
+ try {
+ url = new URL(tabs[0].url)
+ } catch {
+ currentSiteIsFrontend.classList.add("hide")
+ return
+ }
- if (youtubeHelper.redirect(url, 'main_frame', false, true) || await youtubeHelper.switchInstance(url, 'main_frame', false, true)) {
- currSite.getElementsByClassName('youtube')[0].classList.remove("hide");
- allSites.getElementsByClassName('youtube')[0].classList.add("hide");
- }
- else if (twitterHelper.redirect(url, 'main_frame', false, true) || await twitterHelper.switchInstance(url, 'main_frame', false, true)) {
- currSite.getElementsByClassName('twitter')[0].classList.remove("hide");
- allSites.getElementsByClassName('twitter')[0].classList.add("hide");
- }
- else if (instagramHelper.redirect(url, 'main_frame', false, true) || await instagramHelper.switchInstance(url, 'main_frame', false, true)) {
- currSite.getElementsByClassName('instagram')[0].classList.remove("hide");
- allSites.getElementsByClassName('instagram')[0].classList.add("hide");
- }
- else if (mapsHelper.redirect(url, false)) {
- currSite.getElementsByClassName('maps')[0].classList.remove("hide");
- allSites.getElementsByClassName('maps')[0].classList.add("hide");
- }
- else if (redditHelper.redirect(url, 'main_frame', false, true) || await redditHelper.switchInstance(url, 'main_frame', false, true)) {
- currSite.getElementsByClassName('reddit')[0].classList.remove("hide");
- allSites.getElementsByClassName('reddit')[0].classList.add("hide");
- }
- else if (mediumHelper.redirect(url, 'main_frame', false, true) || await mediumHelper.switchInstance(url, 'main_frame', false, true)) {
- currSite.getElementsByClassName('medium')[0].classList.remove("hide");
- allSites.getElementsByClassName('medium')[0].classList.add("hide");
- }
- else if (quoraHelper.redirect(url, 'main_frame', false, true) || await quoraHelper.switchInstance(url, 'main_frame', false, true)) {
- currSite.getElementsByClassName('quora')[0].classList.remove("hide");
- allSites.getElementsByClassName('quora')[0].classList.add("hide");
- }
- else if (libremdbHelper.redirect(url, 'main_frame', false, true) || await libremdbHelper.switchInstance(url, 'main_frame', false, true)) {
- currSite.getElementsByClassName('imdb')[0].classList.remove("hide");
- allSites.getElementsByClassName('imdb')[0].classList.add("hide");
- }
- else if (reutersHelper.redirect(url, 'main_frame', false, true)) {
- currSite.getElementsByClassName('reuters')[0].classList.remove("hide");
- allSites.getElementsByClassName('reuters')[0].classList.add("hide");
- }
- else if (imgurHelper.redirect(url, 'main_frame', false, true) || await imgurHelper.switchInstance(url, 'main_frame', false, true)) {
- currSite.getElementsByClassName('imgur')[0].classList.remove("hide");
- allSites.getElementsByClassName('imgur')[0].classList.add("hide");
- }
- else if (tiktokHelper.redirect(url, 'main_frame', false, true) || await tiktokHelper.switchInstance(url, 'main_frame', false, true)) {
- currSite.getElementsByClassName('tiktok')[0].classList.remove("hide");
- allSites.getElementsByClassName('tiktok')[0].classList.add("hide");
- }
- else if (sendTargetsHelper.redirect(url, 'main_frame', false, true) || await sendTargetsHelper.switchInstance(url, 'main_frame', false, true)) {
- currSite.getElementsByClassName('sendTargets')[0].classList.remove("hide");
- allSites.getElementsByClassName('sendTargets')[0].classList.add("hide");
- }
- else if (peertubeHelper.redirect(url, 'main_frame', false, true) || await peertubeHelper.switchInstance(url, 'main_frame', false, true)) {
- currSite.getElementsByClassName('peertube')[0].classList.remove("hide");
- allSites.getElementsByClassName('peertube')[0].classList.add("hide");
- }
- else if (lbryHelper.redirect(url, 'main_frame', false, true) || await lbryHelper.switchInstance(url, 'main_frame', false, true)) {
- currSite.getElementsByClassName('lbry')[0].classList.remove("hide");
- allSites.getElementsByClassName('lbry')[0].classList.add("hide");
- }
- else if (translateHelper.redirect(url, true) || await translateHelper.switchInstance(url, true)) {
- currSite.getElementsByClassName('translate')[0].classList.remove("hide");
- allSites.getElementsByClassName('translate')[0].classList.add("hide");
- }
- else if (searchHelper.redirect(url, true) || await searchHelper.switchInstance(url, true)) {
- currSite.getElementsByClassName('search')[0].classList.remove("hide");
- allSites.getElementsByClassName('search')[0].classList.add("hide");
- }
- else if (wikipediaHelper.redirect(url, true) || await wikipediaHelper.switchInstance(url, true)) {
- currSite.getElementsByClassName('wikipedia')[0].classList.remove("hide");
- allSites.getElementsByClassName('wikipedia')[0].classList.add("hide");
- }
- else if (youtubeMusicHelper.redirect(url, 'main_frame', false, true)) {
- currSite.getElementsByClassName('youtubeMusic')[0].classList.remove("hide");
- allSites.getElementsByClassName('youtubeMusic')[0].classList.add("hide");
- }
- })
- }
+ if (youtubeMusicHelper.redirect(url, "main_frame", false, true) || (await youtubeMusicHelper.switchInstance(url, true))) {
+ currSite.getElementsByClassName("youtubeMusic")[0].classList.remove("hide")
+ allSites.getElementsByClassName("youtubeMusic")[0].classList.add("hide")
+ } else if (twitterHelper.redirect(url, "main_frame", false, true) || (await twitterHelper.switchInstance(url, "main_frame", false, true))) {
+ currSite.getElementsByClassName("twitter")[0].classList.remove("hide")
+ allSites.getElementsByClassName("twitter")[0].classList.add("hide")
+ } else if (instagramHelper.redirect(url, "main_frame", false, true) || (await instagramHelper.switchInstance(url, "main_frame", false, true))) {
+ currSite.getElementsByClassName("instagram")[0].classList.remove("hide")
+ allSites.getElementsByClassName("instagram")[0].classList.add("hide")
+ } else if (mapsHelper.redirect(url, false)) {
+ currSite.getElementsByClassName("maps")[0].classList.remove("hide")
+ allSites.getElementsByClassName("maps")[0].classList.add("hide")
+ } else if (redditHelper.redirect(url, "main_frame", false, true) || (await redditHelper.switchInstance(url, "main_frame", false, true))) {
+ currSite.getElementsByClassName("reddit")[0].classList.remove("hide")
+ allSites.getElementsByClassName("reddit")[0].classList.add("hide")
+ } else if (mediumHelper.redirect(url, "main_frame", false, true) || (await mediumHelper.switchInstance(url, "main_frame", false, true))) {
+ currSite.getElementsByClassName("medium")[0].classList.remove("hide")
+ allSites.getElementsByClassName("medium")[0].classList.add("hide")
+ } else if (quoraHelper.redirect(url, "main_frame", false, true) || (await quoraHelper.switchInstance(url, "main_frame", false, true))) {
+ currSite.getElementsByClassName("quora")[0].classList.remove("hide")
+ allSites.getElementsByClassName("quora")[0].classList.add("hide")
+ } else if (libremdbHelper.redirect(url, "main_frame", false, true) || (await libremdbHelper.switchInstance(url, "main_frame", false, true))) {
+ currSite.getElementsByClassName("imdb")[0].classList.remove("hide")
+ allSites.getElementsByClassName("imdb")[0].classList.add("hide")
+ } else if (reutersHelper.redirect(url, "main_frame", false, true)) {
+ currSite.getElementsByClassName("reuters")[0].classList.remove("hide")
+ allSites.getElementsByClassName("reuters")[0].classList.add("hide")
+ } else if (imgurHelper.redirect(url, "main_frame", false, true) || (await imgurHelper.switchInstance(url, "main_frame", false, true))) {
+ currSite.getElementsByClassName("imgur")[0].classList.remove("hide")
+ allSites.getElementsByClassName("imgur")[0].classList.add("hide")
+ } else if (tiktokHelper.redirect(url, "main_frame", false, true) || (await tiktokHelper.switchInstance(url, "main_frame", false, true))) {
+ currSite.getElementsByClassName("tiktok")[0].classList.remove("hide")
+ allSites.getElementsByClassName("tiktok")[0].classList.add("hide")
+ } else if (sendTargetsHelper.redirect(url, "main_frame", false, true) || (await sendTargetsHelper.switchInstance(url, "main_frame", false, true))) {
+ currSite.getElementsByClassName("sendTargets")[0].classList.remove("hide")
+ allSites.getElementsByClassName("sendTargets")[0].classList.add("hide")
+ } else if (peertubeHelper.redirect(url, "main_frame", false, true) || (await peertubeHelper.switchInstance(url, true))) {
+ currSite.getElementsByClassName("peertube")[0].classList.remove("hide")
+ allSites.getElementsByClassName("peertube")[0].classList.add("hide")
+ } else if (lbryHelper.redirect(url, "main_frame", false, true) || (await lbryHelper.switchInstance(url, "main_frame", false, true))) {
+ currSite.getElementsByClassName("lbry")[0].classList.remove("hide")
+ allSites.getElementsByClassName("lbry")[0].classList.add("hide")
+ } else if (translateHelper.redirect(url, true) || (await translateHelper.switchInstance(url, true))) {
+ currSite.getElementsByClassName("translate")[0].classList.remove("hide")
+ allSites.getElementsByClassName("translate")[0].classList.add("hide")
+ } else if (searchHelper.redirect(url, true) || (await searchHelper.switchInstance(url, true))) {
+ currSite.getElementsByClassName("search")[0].classList.remove("hide")
+ allSites.getElementsByClassName("search")[0].classList.add("hide")
+ } else if (wikipediaHelper.redirect(url, true) || (await wikipediaHelper.switchInstance(url, true))) {
+ currSite.getElementsByClassName("wikipedia")[0].classList.remove("hide")
+ allSites.getElementsByClassName("wikipedia")[0].classList.add("hide")
+ } else if (youtubeHelper.redirect(url, "main_frame", false, true) || (await youtubeHelper.switchInstance(url, "main_frame", false, true))) {
+ currSite.getElementsByClassName("youtube")[0].classList.remove("hide")
+ allSites.getElementsByClassName("youtube")[0].classList.add("hide")
+ } else {
+ currentSiteIsFrontend.classList.add("hide")
+ }
+ })
+ }
)
document.addEventListener("change", () => {
- browser.storage.local.get(
- [
- "disableTwitter",
- "disableYoutube",
- "disableYoutubeMusic",
- "disableInstagram",
- "disableMaps",
- "disableReddit",
- "disableSearch",
- "translateDisable",
- "disableWikipedia",
- "disableImgur",
- "disableTiktok",
- "disableMedium",
- "disableQuora",
- "disableImdb",
- "disableReuters",
- "disablePeertubeTargets",
- "disableLbryTargets",
- "disableSendTarget",
- ],
- r => {
- if (!r.disableTwitter != disableTwitterCurrentSite.checked) browser.storage.local.set({ disableTwitter: !disableTwitterCurrentSite.checked })
- else if (!r.disableTwitter != disableTwitterAllSites.checked) browser.storage.local.set({ disableTwitter: !disableTwitterAllSites.checked })
+ browser.storage.local.get(
+ [
+ "disableTwitter",
+ "disableYoutube",
+ "disableYoutubeMusic",
+ "disableInstagram",
+ "disableMaps",
+ "disableReddit",
+ "disableSearch",
+ "translateDisable",
+ "disableWikipedia",
+ "disableImgur",
+ "disableTiktok",
+ "disableMedium",
+ "disableQuora",
+ "disableImdb",
+ "disableReuters",
+ "disablePeertubeTargets",
+ "disableLbryTargets",
+ "disableSendTarget",
+ ],
+ r => {
+ if (!r.disableTwitter != disableTwitterCurrentSite.checked)
+ browser.storage.local.set({
+ disableTwitter: !disableTwitterCurrentSite.checked,
+ })
+ else if (!r.disableTwitter != disableTwitterAllSites.checked)
+ browser.storage.local.set({
+ disableTwitter: !disableTwitterAllSites.checked,
+ })
- if (!r.disableYoutube != disableYoutubeCurrentSite.checked) browser.storage.local.set({ disableYoutube: !disableYoutubeCurrentSite.checked })
- else if (!r.disableYoutube != disableYoutubeAllSites.checked) browser.storage.local.set({ disableYoutube: !disableYoutubeAllSites.checked })
+ if (!r.disableYoutube != disableYoutubeCurrentSite.checked)
+ browser.storage.local.set({
+ disableYoutube: !disableYoutubeCurrentSite.checked,
+ })
+ else if (!r.disableYoutube != disableYoutubeAllSites.checked)
+ browser.storage.local.set({
+ disableYoutube: !disableYoutubeAllSites.checked,
+ })
- if (!r.disableYoutubeMusic != disableYoutubeMusicCurrentSite.checked) browser.storage.local.set({ disableYoutubeMusic: !disableYoutubeMusicCurrentSite.checked })
- else if (!r.disableYoutubeMusic != disableYoutubeMusicAllSites.checked) browser.storage.local.set({ disableYoutubeMusic: !disableYoutubeMusicAllSites.checked })
+ if (!r.disableYoutubeMusic != disableYoutubeMusicCurrentSite.checked)
+ browser.storage.local.set({
+ disableYoutubeMusic: !disableYoutubeMusicCurrentSite.checked,
+ })
+ else if (!r.disableYoutubeMusic != disableYoutubeMusicAllSites.checked)
+ browser.storage.local.set({
+ disableYoutubeMusic: !disableYoutubeMusicAllSites.checked,
+ })
- if (!r.disableInstagram != disableInstagramCurrentSite.checked) browser.storage.local.set({ disableInstagram: !disableInstagramCurrentSite.checked })
- else if (!r.disableInstagram != disableInstagramAllSites.checked) browser.storage.local.set({ disableInstagram: !disableInstagramAllSites.checked })
+ if (!r.disableInstagram != disableInstagramCurrentSite.checked)
+ browser.storage.local.set({
+ disableInstagram: !disableInstagramCurrentSite.checked,
+ })
+ else if (!r.disableInstagram != disableInstagramAllSites.checked)
+ browser.storage.local.set({
+ disableInstagram: !disableInstagramAllSites.checked,
+ })
- if (!r.disableMaps != disableMapsCurrentSite.checked) browser.storage.local.set({ disableMaps: !disableMapsCurrentSite.checked })
- else if (!r.disableMaps != disableMapsAllSites.checked) browser.storage.local.set({ disableMaps: !disableMapsAllSites.checked })
+ if (!r.disableMaps != disableMapsCurrentSite.checked)
+ browser.storage.local.set({
+ disableMaps: !disableMapsCurrentSite.checked,
+ })
+ else if (!r.disableMaps != disableMapsAllSites.checked)
+ browser.storage.local.set({
+ disableMaps: !disableMapsAllSites.checked,
+ })
- if (!r.disableReddit != disableRedditCurrentSite.checked) browser.storage.local.set({ disableReddit: !disableRedditCurrentSite.checked })
- else if (!r.disableReddit != disableRedditAllSites.checked) browser.storage.local.set({ disableReddit: !disableRedditAllSites.checked })
+ if (!r.disableReddit != disableRedditCurrentSite.checked)
+ browser.storage.local.set({
+ disableReddit: !disableRedditCurrentSite.checked,
+ })
+ else if (!r.disableReddit != disableRedditAllSites.checked)
+ browser.storage.local.set({
+ disableReddit: !disableRedditAllSites.checked,
+ })
- if (!r.disableSearch != disableSearchCurrentSite.checked) browser.storage.local.set({ disableSearch: !disableSearchCurrentSite.checked })
- else if (!r.disableSearch != disableSearchAllSites.checked) browser.storage.local.set({ disableSearch: !disableSearchAllSites.checked })
+ if (!r.disableSearch != disableSearchCurrentSite.checked)
+ browser.storage.local.set({
+ disableSearch: !disableSearchCurrentSite.checked,
+ })
+ else if (!r.disableSearch != disableSearchAllSites.checked)
+ browser.storage.local.set({
+ disableSearch: !disableSearchAllSites.checked,
+ })
- if (!r.translateDisable != disableTranslateCurrentSite.checked) browser.storage.local.set({ translateDisable: !disableTranslateCurrentSite.checked })
- else if (!r.translateDisable != disableTranslateAllSites.checked) browser.storage.local.set({ translateDisable: !disableTranslateAllSites.checked })
+ if (!r.translateDisable != disableTranslateCurrentSite.checked)
+ browser.storage.local.set({
+ translateDisable: !disableTranslateCurrentSite.checked,
+ })
+ else if (!r.translateDisable != disableTranslateAllSites.checked)
+ browser.storage.local.set({
+ translateDisable: !disableTranslateAllSites.checked,
+ })
- if (!r.disableWikipedia != disableWikipediaCurrentSite.checked) browser.storage.local.set({ disableWikipedia: !disableWikipediaCurrentSite.checked })
- else if (!r.disableWikipedia != disableWikipediaAllSites.checked) browser.storage.local.set({ disableWikipedia: !disableWikipediaAllSites.checked })
+ if (!r.disableWikipedia != disableWikipediaCurrentSite.checked)
+ browser.storage.local.set({
+ disableWikipedia: !disableWikipediaCurrentSite.checked,
+ })
+ else if (!r.disableWikipedia != disableWikipediaAllSites.checked)
+ browser.storage.local.set({
+ disableWikipedia: !disableWikipediaAllSites.checked,
+ })
- if (!r.disableImgur != disableImgurCurrentSite.checked) browser.storage.local.set({ disableImgur: !disableImgurCurrentSite.checked })
- else if (!r.disableImgur != disableImgurAllSites.checked) browser.storage.local.set({ disableImgur: !disableImgurAllSites.checked })
+ if (!r.disableImgur != disableImgurCurrentSite.checked)
+ browser.storage.local.set({
+ disableImgur: !disableImgurCurrentSite.checked,
+ })
+ else if (!r.disableImgur != disableImgurAllSites.checked)
+ browser.storage.local.set({
+ disableImgur: !disableImgurAllSites.checked,
+ })
- if (!r.disableTiktok != disableTiktokCurrentSite.checked) browser.storage.local.set({ disableTiktok: !disableTiktokCurrentSite.checked })
- else if (!r.disableTiktok != disableTiktokAllSites.checked) browser.storage.local.set({ disableTiktok: !disableTiktokAllSites.checked })
+ if (!r.disableTiktok != disableTiktokCurrentSite.checked)
+ browser.storage.local.set({
+ disableTiktok: !disableTiktokCurrentSite.checked,
+ })
+ else if (!r.disableTiktok != disableTiktokAllSites.checked)
+ browser.storage.local.set({
+ disableTiktok: !disableTiktokAllSites.checked,
+ })
- if (!r.disableMedium != disableMediumCurrentSite.checked) browser.storage.local.set({ disableMedium: !disableMediumCurrentSite.checked })
- else if (!r.disableMedium != disableMediumAllSites.checked) browser.storage.local.set({ disableMedium: !disableMediumAllSites.checked })
+ if (!r.disableMedium != disableMediumCurrentSite.checked)
+ browser.storage.local.set({
+ disableMedium: !disableMediumCurrentSite.checked,
+ })
+ else if (!r.disableMedium != disableMediumAllSites.checked)
+ browser.storage.local.set({
+ disableMedium: !disableMediumAllSites.checked,
+ })
- if (!r.disableQuora != disableQuoraCurrentSite.checked) browser.storage.local.set({ disableQuora: !disableQuoraCurrentSite.checked })
- else if (!r.disableQuora != disableQuoraAllSites.checked) browser.storage.local.set({ disableQuora: !disableQuoraAllSites.checked })
+ if (!r.disableQuora != disableQuoraCurrentSite.checked)
+ browser.storage.local.set({
+ disableQuora: !disableQuoraCurrentSite.checked,
+ })
+ else if (!r.disableQuora != disableQuoraAllSites.checked)
+ browser.storage.local.set({
+ disableQuora: !disableQuoraAllSites.checked,
+ })
- if (!r.disableImdb != disableImdbCurrentSite.checked) browser.storage.local.set({ disableImdb: !disableImdbCurrentSite.checked })
- else if (!r.disableImdb != disableImdbAllSites.checked) browser.storage.local.set({ disableImdb: !disableImdbAllSites.checked })
+ if (!r.disableImdb != disableImdbCurrentSite.checked)
+ browser.storage.local.set({
+ disableImdb: !disableImdbCurrentSite.checked,
+ })
+ else if (!r.disableImdb != disableImdbAllSites.checked)
+ browser.storage.local.set({
+ disableImdb: !disableImdbAllSites.checked,
+ })
- if (!r.disableReuters != disableReutersCurrentSite.checked) browser.storage.local.set({ disableReuters: !disableReutersCurrentSite.checked })
- else if (!r.disableReuters != disableReutersAllSites.checked) browser.storage.local.set({ disableReuters: !disableReutersAllSites.checked })
+ if (!r.disableReuters != disableReutersCurrentSite.checked)
+ browser.storage.local.set({
+ disableReuters: !disableReutersCurrentSite.checked,
+ })
+ else if (!r.disableReuters != disableReutersAllSites.checked)
+ browser.storage.local.set({
+ disableReuters: !disableReutersAllSites.checked,
+ })
- if (!r.disablePeertubeTargets != disablePeertubeTargetsCurrentSite.checked) browser.storage.local.set({ disablePeertubeTargets: !disablePeertubeTargetsCurrentSite.checked })
- else if (!r.disablePeertubeTargets != disablePeertubeTargetsAllSites.checked) browser.storage.local.set({ disablePeertubeTargets: !disablePeertubeTargetsAllSites.checked })
+ if (!r.disablePeertubeTargets != disablePeertubeTargetsCurrentSite.checked)
+ browser.storage.local.set({
+ disablePeertubeTargets: !disablePeertubeTargetsCurrentSite.checked,
+ })
+ else if (!r.disablePeertubeTargets != disablePeertubeTargetsAllSites.checked)
+ browser.storage.local.set({
+ disablePeertubeTargets: !disablePeertubeTargetsAllSites.checked,
+ })
- if (!r.disableLbryTargets != disableLbryTargetsCurrentSite.checked) browser.storage.local.set({ disableLbryTargets: !disableLbryTargetsCurrentSite.checked })
- else if (!r.disableLbryTargets != disableLbryTargetsAllSites.checked) browser.storage.local.set({ disableLbryTargets: !disableLbryTargetsAllSites.checked })
+ if (!r.disableLbryTargets != disableLbryTargetsCurrentSite.checked)
+ browser.storage.local.set({
+ disableLbryTargets: !disableLbryTargetsCurrentSite.checked,
+ })
+ else if (!r.disableLbryTargets != disableLbryTargetsAllSites.checked)
+ browser.storage.local.set({
+ disableLbryTargets: !disableLbryTargetsAllSites.checked,
+ })
- if (!r.disableSendTarget != disableSendTargetsCurrentSite.checked) browser.storage.local.set({ disableSendTarget: !disableSendTargetsCurrentSite.checked })
- else if (!r.disableSendTarget != disableSendTargetsAllSites.checked) browser.storage.local.set({ disableSendTarget: !disableSendTargetsAllSites.checked })
- })
+ if (!r.disableSendTarget != disableSendTargetsCurrentSite.checked)
+ browser.storage.local.set({
+ disableSendTarget: !disableSendTargetsCurrentSite.checked,
+ })
+ else if (!r.disableSendTarget != disableSendTargetsAllSites.checked)
+ browser.storage.local.set({
+ disableSendTarget: !disableSendTargetsAllSites.checked,
+ })
+ }
+ )
})
-for (const a of document.getElementsByTagName('a')) {
- a.addEventListener('click', e => {
- if (!a.classList.contains('prevent')) {
- browser.tabs.create({ url: a.getAttribute('href') });
- e.preventDefault();
- }
- })
+for (const a of document.getElementsByTagName("a")) {
+ a.addEventListener("click", e => {
+ if (!a.classList.contains("prevent")) {
+ browser.tabs.create({ url: a.getAttribute("href") })
+ e.preventDefault()
+ }
+ })
}
diff --git a/src/pages/popup/popup.pug b/src/pages/popup/popup.pug
index 13eb66a5..cd4d3713 100644
--- a/src/pages/popup/popup.pug
+++ b/src/pages/popup/popup.pug
@@ -119,7 +119,8 @@ html(lang="en")
body(dir="auto")
.current_site
+services
- hr
+ #current_site_divider
+ hr
.all_sites
+services
hr
@@ -151,4 +152,4 @@ html(lang="en")
.space
script(type="module" src="../options/init.js")
- script(type="module" src="./popup.js") \ No newline at end of file
+ script(type="module" src="./popup.js")
diff --git a/src/pages/popup/style.css b/src/pages/popup/style.css
index 8136237a..0cb27912 100644
--- a/src/pages/popup/style.css
+++ b/src/pages/popup/style.css
@@ -1,23 +1,24 @@
body {
- width: 230px;
- min-height: auto;
+ width: 230px;
+ min-height: auto;
}
-html, body {
- margin: 0;
+html,
+body {
+ margin: 0;
}
.hide {
- display: none !important;
+ display: none !important;
}
.button {
- display: flex;
- margin: 0 auto;
- justify-content: space-between;
- width: 100%;
+ display: flex;
+ margin: 0 auto;
+ justify-content: space-between;
+ width: 100%;
}
.space {
- height: 10px;
-} \ No newline at end of file
+ height: 10px;
+}
diff --git a/src/pages/stylesheets/styles.css b/src/pages/stylesheets/styles.css
index 67b0229d..06abab3a 100644
--- a/src/pages/stylesheets/styles.css
+++ b/src/pages/stylesheets/styles.css
@@ -1,465 +1,466 @@
body {
- --text: #fff;
- --bg-main: #121212;
- --bg-secondary: #202020;
- --active: #fbc117;
- --space: 5px;
- --danger: #f04141;
- --danger-light: #f9d0d5;
- --dark-grey: #767676;
- --light-grey: #c3c3c3;
+ --text: #fff;
+ --bg-main: #121212;
+ --bg-secondary: #202020;
+ --active: #fbc117;
+ --space: 5px;
+ --danger: #f04141;
+ --danger-light: #f9d0d5;
+ --dark-grey: #767676;
+ --light-grey: #c3c3c3;
}
@font-face {
- font-family: 'Inter';
- src: url('Inter-VariableFont_slnt,wght.ttf');
- font-weight: normal;
- font-style: normal;
+ font-family: "Inter";
+ src: url("Inter-VariableFont_slnt,wght.ttf");
+ font-weight: normal;
+ font-style: normal;
}
@font-face {
- font-family: 'Vazirmatn';
- src: url('Vazirmatn-VariableFont_wght.ttf');
- font-weight: normal;
- font-style: normal;
+ font-family: "Vazirmatn";
+ src: url("Vazirmatn-VariableFont_wght.ttf");
+ font-weight: normal;
+ font-style: normal;
}
body {
- margin: auto;
- padding: 0;
- font-family: 'Inter';
- background-color: var(--bg-main);
- color: var(--text);
- overflow-x: hidden
+ margin: auto;
+ padding: 0;
+ font-family: "Inter";
+ background-color: var(--bg-main);
+ color: var(--text);
+ overflow-x: hidden;
}
body.rtl {
- font-family: 'Vazirmatn';
- /* line-height: 1; */
+ font-family: "Vazirmatn";
+ /* line-height: 1; */
}
div.some-block input[type="checkbox"] {
- appearance: none;
- -moz-appearance: none;
- -webkit-appearance: none;
+ appearance: none;
+ -moz-appearance: none;
+ -webkit-appearance: none;
}
.title {
- display: flex;
- align-items: center;
- text-decoration: none;
- color: var(--text);
+ display: flex;
+ align-items: center;
+ text-decoration: none;
+ color: var(--text);
}
-img, svg {
- margin-right: 10px;
- height: 26px;
- width: 26px;
- color: var(--text);
+img,
+svg {
+ margin-right: 10px;
+ height: 26px;
+ width: 26px;
+ color: var(--text);
}
-body.rtl img, body.rtl svg {
- margin-right: 0px;
- margin-left: 10px;
+body.rtl img,
+body.rtl svg {
+ margin-right: 0px;
+ margin-left: 10px;
}
input[type="url"],
input[type="text"],
select {
- font-weight: bold;
- box-sizing: border-box;
- border-style: solid;
- border-color: #767676;
- color: var(--text);
- font-size: 16px;
- padding: 8px;
- background-color: var(--bg-secondary);
- border: none;
- margin: 0;
- max-width: 500px;
- border-radius: 3px;
+ font-weight: bold;
+ box-sizing: border-box;
+ border-style: solid;
+ border-color: #767676;
+ color: var(--text);
+ font-size: 16px;
+ padding: 8px;
+ background-color: var(--bg-secondary);
+ border: none;
+ margin: 0;
+ max-width: 500px;
+ border-radius: 3px;
}
input[type="url"],
input[type="text"] {
- width: 400px;
+ width: 400px;
}
input:invalid {
- color: var(--danger);
- border-color: var(--danger);
+ color: var(--danger);
+ border-color: var(--danger);
}
.button svg {
- height: 18px;
- width: 18px;
+ height: 18px;
+ width: 18px;
}
section.option-block {
- width: 750px;
- margin: 0 50px;
+ width: 750px;
+ margin: 0 50px;
}
section.option-block h2 {
- margin: 0;
+ margin: 0;
}
body.option {
- display: flex;
- padding: 40px;
- width: 900px;
+ display: flex;
+ padding: 40px;
+ width: 900px;
}
section.links div {
- margin: 20px 0;
- width: max-content;
+ margin: 20px 0;
+ width: max-content;
}
a {
- color: var(--active);
+ color: var(--active);
}
section.links a {
- display: flex;
- align-items: center;
- font-size: 18px;
- text-decoration: none;
- color: white;
- transition: 0.1s;
+ display: flex;
+ align-items: center;
+ font-size: 18px;
+ text-decoration: none;
+ color: white;
+ transition: 0.1s;
}
section.links a:hover,
section.links a.selected {
- color: var(--active);
+ color: var(--active);
}
input[type="range"] {
- -webkit-appearance: none;
- width: 350px;
- height: 7px;
- border-radius: 50px;
- background: var(--text);
+ -webkit-appearance: none;
+ width: 350px;
+ height: 7px;
+ border-radius: 50px;
+ background: var(--text);
}
input[type="range"]:hover {
- background: var(--light-grey);
+ background: var(--light-grey);
}
input[type="range"]::-webkit-slider-thumb {
- appearance: none;
- width: 20px;
- height: 20px;
- border-radius: 50%;
- background: var(--active);
- border: none;
+ appearance: none;
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ background: var(--active);
+ border: none;
}
input[type="range"]::-moz-range-thumb {
- width: 20px;
- height: 20px;
- border-radius: 50%;
- background: var(--active);
- border: none;
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ background: var(--active);
+ border: none;
}
::placeholder {
- color: var(--text);
- opacity: 0.7;
+ color: var(--text);
+ opacity: 0.7;
}
#volume-value {
- color: var(--active);
+ color: var(--active);
}
/* \25BE */
hr {
- height: 2px;
- margin: 0 15px;
- background-color: rgb(77, 77, 77);
- border: none;
+ height: 2px;
+ margin: 0 15px;
+ background-color: rgb(77, 77, 77);
+ border: none;
}
div.some-block {
- padding: 0 15px;
- justify-content: space-between;
- display: flex;
- align-items: center;
- margin-top: 10px;
- margin-bottom: 10px;
+ padding: 0 15px;
+ justify-content: space-between;
+ display: flex;
+ align-items: center;
+ margin-top: 10px;
+ margin-bottom: 10px;
}
div.option-block {
- margin: 30px 0;
+ margin: 30px 0;
}
h4 {
- margin: 10px 0;
- font-size: 18px;
+ margin: 10px 0;
+ font-size: 18px;
}
div.some-block h4 {
- margin: 0;
+ margin: 0;
}
div.option-block h4 {
- margin-right: 5px;
- width: 80%;
- min-width: 150px;
- font-size: 18px;
+ margin-right: 5px;
+ width: 80%;
+ min-width: 150px;
+ font-size: 18px;
}
div.option-block h1 {
- margin: 0;
- font-size: 28px;
- color: var(--text);
+ margin: 0;
+ font-size: 28px;
+ color: var(--text);
}
div.option-block div {
- text-align: center;
+ text-align: center;
}
div.some-block input[type="checkbox"] {
- width: 46px;
- height: 23px;
- background-color: var(--light-grey);
- border-radius: 50px;
- transition: .4s;
- cursor: pointer;
+ width: 46px;
+ height: 23px;
+ background-color: var(--light-grey);
+ border-radius: 50px;
+ transition: 0.4s;
+ cursor: pointer;
}
div.some-block input[type="checkbox"]:checked {
- background-color: var(--active);
+ background-color: var(--active);
}
div.some-block input[type="checkbox"]::before {
- content: "";
- display: inline-block;
- width: 18px;
- height: 18px;
- box-sizing: border-box;
- position: relative;
- top: 2.5px;
- left: 3.5px;
- background-color: white;
- border-radius: 50%;
- transition: .3s;
+ content: "";
+ display: inline-block;
+ width: 18px;
+ height: 18px;
+ box-sizing: border-box;
+ position: relative;
+ top: 2.5px;
+ left: 3.5px;
+ background-color: white;
+ border-radius: 50%;
+ transition: 0.3s;
}
body.rtl div.some-block input[type="checkbox"]::before {
- left: auto;
- right: 4px;
+ left: auto;
+ right: 4px;
}
div.some-block input[type="checkbox"]:checked::before {
- left: 24px;
+ left: 24px;
}
body.rtl div.some-block input[type="checkbox"]:checked::before {
- left: auto;
- right: 24px;
+ left: auto;
+ right: 24px;
}
div.buttons {
- display: flex;
- margin: 0 15px;
- margin-bottom: 15px;
- margin-top: 15px;
- flex-wrap: wrap;
- align-items: center;
+ display: flex;
+ margin: 0 15px;
+ margin-bottom: 15px;
+ margin-top: 15px;
+ flex-wrap: wrap;
+ align-items: center;
}
div.buttons-popup {
- border-radius: 5px;
- display: flex;
- flex-wrap: wrap;
- margin: 0 10px 7px 10px;
- justify-content: start;
- align-items: center;
+ border-radius: 5px;
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 10px 7px 10px;
+ justify-content: start;
+ align-items: center;
}
.button {
- color: var(--text);
- font-size: 16px;
- font-weight: bold;
- text-decoration: none;
- cursor: pointer;
- transition-duration: 0.1s;
+ color: var(--text);
+ font-size: 16px;
+ font-weight: bold;
+ text-decoration: none;
+ cursor: pointer;
+ transition-duration: 0.1s;
}
.button:hover {
- color: var(--active);
+ color: var(--active);
}
.button svg {
- width: auto;
- height: auto;
- padding: 0;
- margin-right: 5px;
+ width: auto;
+ height: auto;
+ padding: 0;
+ margin-right: 5px;
}
.button:hover svg {
- color: var(--active);
+ color: var(--active);
}
div.buttons-inline {
- display: flex;
- justify-content: start;
- /* padding: 0 15px; */
+ display: flex;
+ justify-content: start;
+ /* padding: 0 15px; */
}
.button-inline {
- display: inline-flex;
- align-items: center;
- margin: 7.5px 0;
- background-color: var(--bg-secondary);
- border-radius: 5px;
- padding: 10px;
+ display: inline-flex;
+ align-items: center;
+ margin: 7.5px 0;
+ background-color: var(--bg-secondary);
+ border-radius: 5px;
+ padding: 10px;
}
.button:active {
- transform: translateY(1px);
+ transform: translateY(1px);
}
button.default {
- margin-left: 30px;
- background-color: transparent;
- border: none;
- color: white;
- padding: 5px;
- width: 34px;
- height: 34px;
- text-align: center;
- text-decoration: none;
- display: inline-block;
- font-size: 16px;
- margin: 4px 2px;
- cursor: pointer;
+ margin-left: 30px;
+ background-color: transparent;
+ border: none;
+ color: white;
+ padding: 5px;
+ width: 34px;
+ height: 34px;
+ text-align: center;
+ text-decoration: none;
+ display: inline-block;
+ font-size: 16px;
+ margin: 4px 2px;
+ cursor: pointer;
}
button svg {
- color: var(--text);
+ color: var(--text);
}
-div.checklist{
-direction: ltr;
+div.checklist {
+ direction: ltr;
}
div.checklist div {
- justify-content: space-between;
- margin: 5px 15px;
- padding: 10px 0;
- word-wrap: break-word;
- display: flex;
-
+ justify-content: space-between;
+ margin: 5px 15px;
+ padding: 10px 0;
+ word-wrap: break-word;
+ display: flex;
}
div.checklist a {
- text-decoration: none;
- color: var(--text);
+ text-decoration: none;
+ color: var(--text);
}
div.checklist a:hover {
- text-decoration: underline;
+ text-decoration: underline;
}
div.checklist-popup div {
- justify-content: space-between;
- margin: 5px 15px;
- padding: 5px 0;
- max-width: 200px;
- display: flex;
- align-items: center;
+ justify-content: space-between;
+ margin: 5px 15px;
+ padding: 5px 0;
+ max-width: 200px;
+ display: flex;
+ align-items: center;
}
div.checklist-popup div div {
- margin: 0;
+ margin: 0;
}
button.add {
- background-color: transparent;
- border: none;
- padding: 0;
- margin: 0;
- text-decoration: none;
- display: inline-block;
- cursor: pointer;
+ background-color: transparent;
+ border: none;
+ padding: 0;
+ margin: 0;
+ text-decoration: none;
+ display: inline-block;
+ cursor: pointer;
}
div.disabled {
- background-color: rgb(39, 39, 39);
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
+ background-color: rgb(39, 39, 39);
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
}
.light-theme.popup,
.light-theme .popup {
- background-color: var(--bg-secondary);
+ background-color: var(--bg-secondary);
}
body.light-theme {
- --text: black;
- --bg-main: white;
- --bg-secondary: #fff;
- --active: #fb9817;
+ --text: black;
+ --bg-main: white;
+ --bg-secondary: #fff;
+ --active: #fb9817;
}
body.light-theme select {
- border: 1px solid black;
+ border: 1px solid black;
}
body.light-theme textarea {
- color: black;
- border: 1px solid #767676;
+ color: black;
+ border: 1px solid #767676;
}
body.light-theme textarea:focus {
- outline: none;
+ outline: none;
}
body.light-theme a {
- color: black;
+ color: black;
}
section.general {
- display: flex;
- flex-wrap: wrap;
- margin-right: 0;
- width: 100%;
- justify-content: space-between;
+ display: flex;
+ flex-wrap: wrap;
+ margin-right: 0;
+ width: 100%;
+ justify-content: space-between;
}
section.general div {
- margin-right: 20px;
+ margin-right: 20px;
}
#customize-popup {
- width: 250px;
+ width: 250px;
}
button {
- background-color:transparent;
- color: var(--text);
- border: none;
- padding: 10px 5px;
- text-decoration: none;
- display: inline-block;
- cursor: pointer;
- border-radius: 5px;
+ background-color: transparent;
+ color: var(--text);
+ border: none;
+ padding: 10px 5px;
+ text-decoration: none;
+ display: inline-block;
+ cursor: pointer;
+ border-radius: 5px;
}
body div section {
- display: none;
+ display: none;
}
-div.about > div{
- justify-content: start;
- width: 520px;
+div.about > div {
+ justify-content: start;
+ width: 520px;
}
div.about h4 {
- width: auto;
-} \ No newline at end of file
+ width: auto;
+}
diff --git a/web-ext-config.js b/web-ext-config.js
index a2f0dc14..f30b73e3 100644
--- a/web-ext-config.js
+++ b/web-ext-config.js
@@ -1,5 +1,3 @@
module.exports = {
- ignoreFiles: [
- "instances/get_instances.py"
- ],
-}; \ No newline at end of file
+ ignoreFiles: ["instances/get_instances.py"],
+}