Added Nitter settings #138

This commit is contained in:
ManeraKai 2022-04-13 20:21:32 +03:00
parent 715cc566b6
commit 12e352b6b3
No known key found for this signature in database
GPG Key ID: 5ABC31FFD562E337
8 changed files with 270 additions and 97 deletions

View File

@ -65,7 +65,7 @@ async function init() {
"popupFrontends",
"autoRedirect"
],
r => { // r = result
r => {
if (r.exceptions) exceptions = r.exceptions;
alwaysUsePreferred = r.alwaysUsePreferred ?? false;

View File

@ -171,7 +171,7 @@ async function init() {
"imgurProtocol",
],
r => { // r = result
r => {
disable = r.disableImgur ?? false;
protocol = r.imgurProtocol ?? "normal";

View File

@ -110,6 +110,59 @@ function setBypassWatchOnTwitter(val) {
let alwaysUsePreferred;
let theme;
const getTheme = () => theme;
let infiniteScroll;
const getInfiniteScroll = () => infiniteScroll;
let stickyProfile;
const getStickyProfile = () => stickyProfile;
let bidiSupport;
const getBidiSupport = () => bidiSupport;
let hideTweetStats;
const getHideTweetStats = () => hideTweetStats;
let hideBanner;
const getHideBanner = () => hideBanner;
let hidePins;
const getHidePins = () => hidePins;
let hideReplies;
const getHideReplies = () => hideReplies;
let squareAvatars;
const getSquareAvatars = () => squareAvatars;
let mp4Playback;
const getMp4Playback = () => mp4Playback;
let hlsPlayback;
const getHlsPlayback = () => hlsPlayback;
let proxyVideos;
const getProxyVideos = () => proxyVideos;
let muteVideos;
const getMuteVideos = () => muteVideos;
let autoplayGifs;
const getAutoplayGifs = () => autoplayGifs;
async function setSettings(val) {
return new Promise(
resolve => {
browser.storage.local.set(val).then(resolve);
}
)
}
function redirect(url, initiator) {
let protocolHost = commonHelper.protocolHost(url);
let isNitter = [
@ -224,32 +277,93 @@ function isNitter(url, type) {
].includes(protocolHost);
}
let theme;
let applyThemeToSites;
function initNitterCookies() {
let themeValue;
if (theme == 'light') themeValue = 'Twitter';
if (theme == 'dark') themeValue = 'Twitter Dark';
if (applyThemeToSites && themeValue) {
if (enableCustomSettings) {
let allInstances = [...redirects.nitter.normal, ...redirects.nitter.tor, ...nitterNormalCustomRedirects, ...nitterTorCustomRedirects]
let checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects, ...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
for (const instanceUrl of allInstances)
if (!checkedInstances.includes(instanceUrl))
browser.cookies.remove({
url: instanceUrl,
name: "theme",
})
for (const instanceUrl of checkedInstances)
for (const instanceUrl of allInstances) if (!checkedInstances.includes(instanceUrl))
browser.cookies.remove({
url: instanceUrl,
name: "theme",
})
for (const instanceUrl of checkedInstances) {
browser.cookies.set({
url: instanceUrl,
name: "theme",
value: themeValue
value: theme,
})
browser.cookies.set({
url: instanceUrl,
name: "infiniteScroll",
value: infiniteScroll ? 'on' : '',
})
browser.cookies.set({
url: instanceUrl,
name: "stickyProfile",
value: stickyProfile ? 'on' : '',
})
browser.cookies.set({
url: instanceUrl,
name: "bidiSupport",
value: bidiSupport ? 'on' : '',
})
browser.cookies.set({
url: instanceUrl,
name: "hideTweetStats",
value: hideTweetStats ? 'on' : '',
})
browser.cookies.set({
url: instanceUrl,
name: "hideBanner",
value: hideBanner ? 'on' : '',
})
browser.cookies.set({
url: instanceUrl,
name: "hidePins",
value: hidePins ? 'on' : '',
})
browser.cookies.set({
url: instanceUrl,
name: "hideReplies",
value: hideReplies ? 'on' : '',
})
browser.cookies.set({
url: instanceUrl,
name: "squareAvatars",
value: squareAvatars ? 'on' : '',
})
browser.cookies.set({
url: instanceUrl,
name: "mp4Playback",
value: mp4Playback ? 'on' : '',
})
browser.cookies.set({
url: instanceUrl,
name: "hlsPlayback",
value: hlsPlayback ? 'on' : '',
})
browser.cookies.set({
url: instanceUrl,
name: "proxyVideos",
value: proxyVideos ? 'on' : '',
})
browser.cookies.set({
url: instanceUrl,
name: "muteVideos",
value: muteVideos ? 'on' : '',
})
browser.cookies.set({
url: instanceUrl,
name: "autoplayGifs",
value: autoplayGifs ? 'on' : '',
})
}
}
}
async function init() {
return new Promise((resolve) => {
return new Promise(resolve => {
fetch('/instances/data.json').then(response => response.text()).then(data => {
let dataJson = JSON.parse(data);
browser.storage.local.get(
@ -259,10 +373,6 @@ async function init() {
"enableTwitterCustomSettings",
"twitterRedirects",
"theme",
"applyThemeToSites",
"bypassWatchOnTwitter",
"nitterNormalRedirectsChecks",
@ -272,8 +382,22 @@ async function init() {
"nitterTorCustomRedirects",
"twitterProtocol",
"alwaysUsePreferred",
"nitterTheme",
"nitterInfiniteScroll",
"nitterStickyProfile",
"nitterBidiSupport",
"nitterHideTweetStats",
"nitterHideBanner",
"nitterHidePins",
"nitterHideReplies",
"nitterSquareAvatars",
"nitterMp4Playback",
"nitterHlsPlayback",
"nitterProxyVideos",
"nitterMuteVideos",
"nitterAutoplayGifs",
],
r => {
disable = r.disableTwitter ?? false;
@ -297,6 +421,21 @@ async function init() {
nitterTorRedirectsChecks = r.nitterTorRedirectsChecks ?? [...redirects.nitter.tor];
nitterTorCustomRedirects = r.nitterTorCustomRedirects ?? [];
theme = r.nitterTheme ?? 'Auto';
infiniteScroll = r.nitterInfiniteScroll ?? false;
stickyProfile = r.nitterStickyProfile ?? true;
bidiSupport = r.nitterBidiSupport ?? false;
hideTweetStats = r.nitterHideTweetStats ?? false;
hideBanner = r.nitterHideBanner ?? false;
hidePins = r.nitterHidePins ?? false;
hideReplies = r.nitterHideReplies ?? false;
squareAvatars = r.nitterSquareAvatars ?? false;
mp4Playback = r.nitterMp4Playback ?? true;
hlsPlayback = r.nitterHlsPlayback ?? false;
proxyVideos = r.nitterProxyVideos ?? true;
muteVideos = r.nitterMuteVideos ?? false;
autoplayGifs = r.nitterAutoplayGifs ?? true;
initNitterCookies();
resolve();
@ -340,6 +479,23 @@ export default {
isNitter,
initNitterCookies,
getTheme,
getInfiniteScroll,
getStickyProfile,
getBidiSupport,
getHideTweetStats,
getHideBanner,
getHidePins,
getHideReplies,
getSquareAvatars,
getMp4Playback,
getHlsPlayback,
getProxyVideos,
getMuteVideos,
getAutoplayGifs,
setSettings,
redirect,
init,
switchInstance,

View File

@ -199,7 +199,7 @@ async function init() {
"theme",
"applyThemeToSites",
], r => { // r = result
], r => {
disable = r.disableWikipedia ?? true;
protocol = r.wikipediaProtocol ?? "normal";

View File

@ -5,7 +5,6 @@ window.browser = window.browser || window.chrome;
export let youtubeListen;
export const getYoutubeListen = () => youtubeListen;
export let volume;
export const getVolume = () => volume;
export function setVolume(val) {

View File

@ -581,7 +581,7 @@ async function init() {
"bypassWatchOnYoutube"
],
r => { // r = result
r => {
redirects.invidious = dataJson.invidious;
if (r.youtubeRedirects) redirects = r.youtubeRedirects;
@ -628,99 +628,58 @@ async function init() {
export default {
setYoutubeSettings,
getBypassWatchOnYoutube,
initPipedLocalStorage,
initPipedMaterialLocalStorage,
getFrontend,
getYoutubeEmbedFrontend,
getRedirects,
getCustomRedirects,
setInvidiousRedirects,
setPipedRedirects,
redirect,
switchInstance,
isPipedorInvidious,
initInvidiousCookies,
getInvidiousAlwaysProxy,
getInvidiousQuality,
getInvidiousPlayerStyle,
getInvidiousVideoLoop,
getDisable,
setDisable,
getEnableCustomSettings,
getProtocol,
getOnlyEmbeddedVideo,
setVolume,
getVolume,
setAutoplay,
getAutoplay,
getInvidiousContinueAutoplay,
getInvidiousContinue,
getYoutubeListen,
getInvidiousSpeed,
getInvidiousQualityDash,
getInvidiousComments,
getInvidiousCaptions,
getInvidiousRelatedVideos,
getInvidiousAnnotations,
getInvidiousExtendDesc,
getInvidiousVrMode,
getInvidiousSavePlayerPos,
getPipedBufferGoal,
getPipedComments,
getPipedDisableLBRY,
getPipedEnabledCodecs,
getPipedHomepage,
getPipedMinimizeDescription,
getPipedProxyLBRY,
getPipedQuality,
getPipedRegion,
getPipedSelectedSkip,
getPipedSponsorblock,
getPipedWatchHistory,
getPipedMaterialSkipToLastPoint,
getInvidiousNormalRedirectsChecks,

View File

@ -165,10 +165,9 @@
<div class="some-block option-block">
<h4 data-localise="__MSG_theme__">Theme</h4>
<select name="theme">
<select class="theme">
<option value="Auto">Auto</option>
<option value="Auto (Twitter)">Auto (Twitter)</option>
<option value="Auto (Twitter)">Auto (Twitter)</option>
<option value="Black">Black</option>
<option value="Mastodon">Mastodon</option>
<option value="Nitter">Nitter</option>
@ -239,6 +238,12 @@
<input class="proxyVideos" type="checkbox" />
</div>
<div class="some-block option-block">
<h4 data-localise="__MSG_muteVideos__">Mute videos by default</h4>
<input class="muteVideos" type="checkbox" />
</div>
<div class="some-block option-block">
<h4 data-localise="__MSG_autoplayGifs__">Autoplay gifs</h4>
<input class="autoplayGifs" type="checkbox" />

View File

@ -7,13 +7,49 @@ let protocolElement = document.getElementById("protocol");
let enableYoutubeCustomSettingsElement = document.getElementById("enable-twitter-custom-settings");
let bypassWatchOnTwitterElement = document.getElementById("bypass-watch-on-twitter");
let theme = document.getElementById('nitter').getElementsByClassName("theme")[0];
let infiniteScroll = document.getElementById('nitter').getElementsByClassName("infiniteScroll")[0];
let stickyProfile = document.getElementById('nitter').getElementsByClassName('stickyProfile')[0];
let bidiSupport = document.getElementById('nitter').getElementsByClassName('bidiSupport')[0];
let hideTweetStats = document.getElementById('nitter').getElementsByClassName('hideTweetStats')[0];
let hideBanner = document.getElementById('nitter').getElementsByClassName('hideBanner')[0];
let hidePins = document.getElementById('nitter').getElementsByClassName('hidePins')[0];
let hideReplies = document.getElementById('nitter').getElementsByClassName('hideReplies')[0];
let squareAvatars = document.getElementById('nitter').getElementsByClassName('squareAvatars')[0];
let mp4Playback = document.getElementById('nitter').getElementsByClassName('mp4Playback')[0];
let hlsPlayback = document.getElementById('nitter').getElementsByClassName('hlsPlayback')[0];
let proxyVideos = document.getElementById('nitter').getElementsByClassName('proxyVideos')[0];
let muteVideos = document.getElementById('nitter').getElementsByClassName('muteVideos')[0];
let autoplayGifs = document.getElementById('nitter').getElementsByClassName('autoplayGifs')[0];
let nitterElement = document.getElementById("nitter");
document.addEventListener("change", _ => {
document.addEventListener("change", async _ => {
twitterHelper.setDisable(!disableTwitterElement.checked)
twitterHelper.setProtocol(protocolElement.value);
twitterHelper.setEnableCustomSettings(enableYoutubeCustomSettingsElement.checked);
twitterHelper.setBypassWatchOnTwitter(bypassWatchOnTwitterElement.checked);
changeProtocolSettings(protocolElement.value);
await twitterHelper.setSettings({
// Display
nitterTheme: theme.value,
nitterInfiniteScroll: infiniteScroll.checked,
nitterStickyProfile: stickyProfile.checked,
nitterBidiSupport: bidiSupport.checked,
nitterHideTweetStats: hideTweetStats.checked,
nitterHideBanner: hideBanner.checked,
nitterHidePins: hidePins.checked,
nitterHideReplies: hideReplies.checked,
nitterSquareAvatars: squareAvatars.checked,
// Media
nitterMp4Playback: mp4Playback.checked,
nitterHlsPlayback: hlsPlayback.checked,
nitterProxyVideos: proxyVideos.checked,
nitterMuteVideos: muteVideos.checked,
nitterAutoplayGifs: autoplayGifs.checked,
});
init();
})
function changeProtocolSettings(protocol) {
@ -33,33 +69,51 @@ function changeProtocolSettings(protocol) {
for (const item of customSettingsDivElement) item.style.display = 'none';
}
twitterHelper.init().then(() => {
disableTwitterElement.checked = !twitterHelper.getDisable();
enableYoutubeCustomSettingsElement.checked = twitterHelper.getEnableCustomSettings();
bypassWatchOnTwitterElement.checked = twitterHelper.getBypassWatchOnTwitter();
function init() {
twitterHelper.init().then(() => {
disableTwitterElement.checked = !twitterHelper.getDisable();
enableYoutubeCustomSettingsElement.checked = twitterHelper.getEnableCustomSettings();
bypassWatchOnTwitterElement.checked = twitterHelper.getBypassWatchOnTwitter();
let protocol = twitterHelper.getProtocol();
protocolElement.value = protocol;
changeProtocolSettings(protocol);
let protocol = twitterHelper.getProtocol();
protocolElement.value = protocol;
changeProtocolSettings(protocol);
console.log('init');
theme.value = twitterHelper.getTheme();
infiniteScroll.checked = twitterHelper.getInfiniteScroll();
stickyProfile.checked = twitterHelper.getStickyProfile();
bidiSupport.checked = twitterHelper.getBidiSupport();
hideTweetStats.checked = twitterHelper.getHideTweetStats();
hideBanner.checked = twitterHelper.getHideBanner();
hidePins.checked = twitterHelper.getHidePins();
hideReplies.checked = twitterHelper.getHideReplies();
squareAvatars.checked = twitterHelper.getSquareAvatars();
mp4Playback.checked = twitterHelper.getMp4Playback();
hlsPlayback.checked = twitterHelper.getHlsPlayback();
proxyVideos.checked = twitterHelper.getProxyVideos();
muteVideos.checked = twitterHelper.getMuteVideos();
autoplayGifs.checked = twitterHelper.getAutoplayGifs();
commonHelper.processDefaultCustomInstances(
'nitter',
'normal',
twitterHelper,
document,
twitterHelper.getNitterNormalRedirectsChecks,
twitterHelper.setNitterNormalRedirectsChecks,
twitterHelper.getNitterNormalCustomRedirects,
twitterHelper.setNitterNormalCustomRedirects
)
commonHelper.processDefaultCustomInstances(
'nitter',
'tor',
twitterHelper,
document,
twitterHelper.getNitterTorRedirectsChecks,
twitterHelper.setNitterTorRedirectsChecks,
twitterHelper.getNitterTorCustomRedirects,
twitterHelper.setNitterTorCustomRedirects
)
});
commonHelper.processDefaultCustomInstances(
'nitter',
'normal',
twitterHelper,
document,
twitterHelper.getNitterNormalRedirectsChecks,
twitterHelper.setNitterNormalRedirectsChecks,
twitterHelper.getNitterNormalCustomRedirects,
twitterHelper.setNitterNormalCustomRedirects
)
commonHelper.processDefaultCustomInstances(
'nitter',
'tor',
twitterHelper,
document,
twitterHelper.getNitterTorRedirectsChecks,
twitterHelper.setNitterTorRedirectsChecks,
twitterHelper.getNitterTorCustomRedirects,
twitterHelper.setNitterTorCustomRedirects
)
});
}
init();