Add instances to popup menu
This commit is contained in:
parent
fc3f10de4c
commit
eeef7f052b
|
@ -3,7 +3,11 @@
|
||||||
- [Chrome Extension](https://chrome.google.com/webstore/detail/privacy-redirect/pmcmeagblkinmogikoikkdjiligflglb)
|
- [Chrome Extension](https://chrome.google.com/webstore/detail/privacy-redirect/pmcmeagblkinmogikoikkdjiligflglb)
|
||||||
- [Firefox Add-on](https://addons.mozilla.org/en-US/firefox/addon/privacy-redirect/)
|
- [Firefox Add-on](https://addons.mozilla.org/en-US/firefox/addon/privacy-redirect/)
|
||||||
|
|
||||||
A simple browser extension to redirect Twitter & Youtube requests to [Nitter](https://nitter.net/about) & [Invidious](https://www.invidio.us/), works when navigating to the site, or opening links.
|
A simple browser extension that redirects Twitter & Youtube requests to privacy friendly alternatives - [Nitter](https://github.com/zedeus/nitter) & [Invidious](https://github.com/omarroth/invidious).
|
||||||
|
|
||||||
|
No unnecessary permissions required, only listens for and redirects requests made to twitter.com, www.twitter.com, mobile.twitter.com, youtube.com, www.youtube.com, youtube-nocookie.com, www.youtube-nocookie.com, and m.youtube.com, nothing else.
|
||||||
|
|
||||||
|
Allows for setting custom [Nitter](https://github.com/zedeus/nitter/wiki/Instances) & [Invidious](https://github.com/omarroth/invidious/wiki/Invidious-Instances) instances and toggling redirects on & off.
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 406 KiB After Width: | Height: | Size: 373 KiB |
Binary file not shown.
Before Width: | Height: | Size: 792 KiB After Width: | Height: | Size: 786 KiB |
Binary file not shown.
After Width: | Height: | Size: 235 KiB |
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "Privacy Redirect",
|
"name": "Privacy Redirect",
|
||||||
"description": "Redirects Twitter & Youtube requests to privacy friendly alternatives (Nitter & Invidious).",
|
"description": "Redirects Twitter & Youtube requests to privacy friendly alternatives (Nitter & Invidious).",
|
||||||
"version": "1.1.1",
|
"version": "1.1.2",
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"background": {
|
"background": {
|
||||||
"scripts": [
|
"scripts": [
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<img src="../../images/logo.png" alt="Privacy Redirect logo">
|
<img src="../../images/logo.png" alt="Privacy Redirect logo">
|
||||||
</div>
|
</div>
|
||||||
<small>
|
<small>
|
||||||
<span>Version</span>: 1.1.1</span>
|
<span>Version</span>: 1.1.2</span>
|
||||||
</small>
|
</small>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
@ -36,9 +36,12 @@
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<footer>
|
<section class="options settings_block">
|
||||||
<a class="button" id="options" target="_blank">Options</a>
|
<h1>Nitter Instance</h1>
|
||||||
</footer>
|
<input id="nitterInstance" type="url" placeholder="https://nitter.net">
|
||||||
|
<h1>Invidious Instance</h1>
|
||||||
|
<input id="invidiousInstance" type="url" placeholder="https://invidio.us">
|
||||||
|
</section>
|
||||||
|
|
||||||
<script src="./popup.js"></script>
|
<script src="./popup.js"></script>
|
||||||
|
|
||||||
|
|
|
@ -2,27 +2,50 @@
|
||||||
|
|
||||||
let disableNitter = document.querySelector('#disableNitter');
|
let disableNitter = document.querySelector('#disableNitter');
|
||||||
let disableInvidious = document.querySelector('#disableInvidious');
|
let disableInvidious = document.querySelector('#disableInvidious');
|
||||||
|
let nitterInstance = document.querySelector('#nitterInstance');
|
||||||
|
let invidiousInstance = document.querySelector('#invidiousInstance');
|
||||||
|
|
||||||
chrome.storage.sync.get(
|
chrome.storage.sync.get(
|
||||||
['disableNitter', 'disableInvidious'],
|
['disableNitter', 'disableInvidious', 'nitterInstance', 'invidiousInstance'],
|
||||||
(result) => {
|
result => {
|
||||||
disableNitter.checked = !result.disableNitter;
|
disableNitter.checked = !result.disableNitter;
|
||||||
disableInvidious.checked = !result.disableInvidious;
|
disableInvidious.checked = !result.disableInvidious;
|
||||||
|
nitterInstance.value = result.nitterInstance || '';
|
||||||
|
invidiousInstance.value = result.invidiousInstance || '';
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
disableNitter.addEventListener('change', (event) => {
|
function debounce(func, wait, immediate) {
|
||||||
|
let timeout;
|
||||||
|
return function () {
|
||||||
|
let context = this, args = arguments;
|
||||||
|
let later = function () {
|
||||||
|
timeout = null;
|
||||||
|
if (!immediate) func.apply(context, args);
|
||||||
|
};
|
||||||
|
let callNow = immediate && !timeout;
|
||||||
|
clearTimeout(timeout);
|
||||||
|
timeout = setTimeout(later, wait);
|
||||||
|
if (callNow) func.apply(context, args);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
let nitterInstanceChange = debounce(() => {
|
||||||
|
chrome.storage.sync.set({ nitterInstance: nitterInstance.value });
|
||||||
|
}, 500);
|
||||||
|
|
||||||
|
nitterInstance.addEventListener('input', nitterInstanceChange);
|
||||||
|
|
||||||
|
let invidiousInstanceChange = debounce(() => {
|
||||||
|
chrome.storage.sync.set({ invidiousInstance: invidiousInstance.value });
|
||||||
|
}, 500);
|
||||||
|
|
||||||
|
invidiousInstance.addEventListener('input', invidiousInstanceChange);
|
||||||
|
|
||||||
|
disableNitter.addEventListener('change', event => {
|
||||||
chrome.storage.sync.set({ disableNitter: !event.target.checked });
|
chrome.storage.sync.set({ disableNitter: !event.target.checked });
|
||||||
});
|
});
|
||||||
|
|
||||||
disableInvidious.addEventListener('change', (event) => {
|
disableInvidious.addEventListener('change', event => {
|
||||||
chrome.storage.sync.set({ disableInvidious: !event.target.checked });
|
chrome.storage.sync.set({ disableInvidious: !event.target.checked });
|
||||||
});
|
});
|
||||||
|
|
||||||
document.querySelector('#options').addEventListener('click', () => {
|
|
||||||
if (chrome.runtime.openOptionsPage) {
|
|
||||||
chrome.runtime.openOptionsPage();
|
|
||||||
} else {
|
|
||||||
window.open(chrome.runtime.getURL('../options/options.html'));
|
|
||||||
}
|
|
||||||
});
|
|
|
@ -1,5 +1,6 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
ignoreFiles: [
|
ignoreFiles: [
|
||||||
'images/Screen*.png',
|
'images/Screen*.png',
|
||||||
|
'images/small-tile.png'
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue