summaryrefslogtreecommitdiffstats
path: root/background.js
diff options
context:
space:
mode:
Diffstat (limited to 'background.js')
-rw-r--r--background.js53
1 files changed, 45 insertions, 8 deletions
diff --git a/background.js b/background.js
index 8d6c6b3..a328488 100644
--- a/background.js
+++ b/background.js
@@ -1,23 +1,36 @@
'use strict';
const nitterDefault = 'https://nitter.net';
+const twitterRegex = /((www|mobile)\.)?twitter\.com/;
const invidiousDefault = 'https://invidio.us';
const youtubeRegex = /((www|m)\.)?youtube(-nocookie)?\.com/;
-const twitterRegex = /((www|mobile)\.)?twitter\.com/;
-const pathRegex = /^https?:\/\/[^\/]+([\S\s]*)/;
+const bibliogramDefault = 'https://bibliogram.art';
+const instagramRegex = /((www|about|help)\.)?instagram\.com/;
+const instagramPathsRegex = /(\/a|\/admin|\/api|\/favicon.ico|\/static|\/imageproxy|\/p|\/u|\/developer|\/about|\/legal|\/explore|\/director)/;
let nitterInstance;
let invidiousInstance;
+let bibliogramInstance;
let disableNitter;
let disableInvidious;
+let disableBibliogram;
chrome.storage.sync.get(
- ['disableNitter', 'disableInvidious', 'nitterInstance', 'invidiousInstance'],
+ [
+ 'nitterInstance',
+ 'invidiousInstance',
+ 'bibliogramInstance',
+ 'disableNitter',
+ 'disableInvidious',
+ 'disableBibliogram'
+ ],
result => {
disableNitter = result.disableNitter;
disableInvidious = result.disableInvidious;
+ disableBibliogram = result.disableBibliogram;
nitterInstance = result.nitterInstance || nitterDefault;
invidiousInstance = result.invidiousInstance || invidiousDefault;
+ bibliogramInstance = result.bibliogramInstance || bibliogramDefault;
}
);
@@ -28,32 +41,56 @@ chrome.storage.onChanged.addListener(changes => {
if ('invidiousInstance' in changes) {
invidiousInstance = changes.invidiousInstance.newValue || invidiousDefault;
}
+ if ('bibliogramInstance' in changes) {
+ bibliogramInstance = changes.bibliogramInstance.newValue || bibliogramDefault;
+ }
if ('disableNitter' in changes) {
disableNitter = changes.disableNitter.newValue;
}
if ('disableInvidious' in changes) {
disableInvidious = changes.disableInvidious.newValue;
}
+ if ('disableBibliogram' in changes) {
+ disableBibliogram = changes.disableBibliogram.newValue;
+ }
});
+function redirectBibliogram(url) {
+ if (url.pathname === '/' || url.pathname.match(instagramPathsRegex)) {
+ return bibliogramInstance + url.pathname;
+ } else {
+ // Redirect user profile requests to '/u/...'
+ return `${bibliogramInstance}/u${url.pathname}`;
+ }
+}
+
chrome.webRequest.onBeforeRequest.addListener(
details => {
+ const url = new URL(details.url);
let redirect;
- if (details.url.match(youtubeRegex)) {
+ if (url.host.match(youtubeRegex)) {
if (!disableInvidious) {
redirect = {
- redirectUrl: invidiousInstance + details.url.match(pathRegex)[1]
+ redirectUrl: invidiousInstance + url.pathname
};
}
- } else if (details.url.match(twitterRegex)) {
+ } else if (url.host.match(twitterRegex)) {
if (!disableNitter) {
redirect = {
- redirectUrl: nitterInstance + details.url.match(pathRegex)[1]
+ redirectUrl: nitterInstance + url.pathname
+ };
+ }
+ } else if (url.host.match(instagramRegex)) {
+ if (!disableBibliogram) {
+ redirect = {
+ redirectUrl: redirectBibliogram(url)
};
}
}
if (redirect) {
- console.log('Redirecting', `"${details.url}"`, '=>', `"${redirect.redirectUrl}"`);
+ console.log(
+ 'Redirecting', `"${url.host}"`, '=>', `"${redirect.redirectUrl}"`
+ );
console.log('Details', details);
}
return redirect;